26 #ifndef __vtkTemporalStreamTracer_h
27 #define __vtkTemporalStreamTracer_h
29 #include "vtkFiltersFlowPathsModule.h"
30 #include "vtkSmartPointer.h"
38 class vtkMultiProcessController;
40 class vtkMultiBlockDataSet;
52 class vtkAbstractParticleWriter;
55 namespace vtkTemporalStreamTracerNamespace
61 int CachedDataSetId[2];
62 vtkIdType CachedCellId[2];
92 void PrintSelf(ostream& os, vtkIndent indent);
101 vtkSetMacro(TimeStep,
unsigned int);
102 vtkGetMacro(TimeStep,
unsigned int);
108 vtkSetMacro(IgnorePipelineTime,
int);
109 vtkGetMacro(IgnorePipelineTime,
int);
110 vtkBooleanMacro(IgnorePipelineTime,
int);
119 vtkSetMacro(TimeStepResolution,
double);
120 vtkGetMacro(TimeStepResolution,
double);
131 vtkSetMacro(ForceReinjectionEveryNSteps,
int);
132 vtkGetMacro(ForceReinjectionEveryNSteps,
int);
139 TERMINATION_STEP_UNIT
148 vtkSetMacro(TerminationTime,
double);
149 vtkGetMacro(TerminationTime,
double);
155 vtkSetMacro(TerminationTimeUnit,
int);
156 vtkGetMacro(TerminationTimeUnit,
int);
158 {this->SetTerminationTimeUnit(TERMINATION_TIME_UNIT);};
160 {this->SetTerminationTimeUnit(TERMINATION_STEP_UNIT);};
170 vtkSetMacro(StaticSeeds,
int);
171 vtkGetMacro(StaticSeeds,
int);
172 vtkBooleanMacro(StaticSeeds,
int);
181 vtkSetMacro(StaticMesh,
int);
182 vtkGetMacro(StaticMesh,
int);
183 vtkBooleanMacro(StaticMesh,
int);
191 virtual void SetParticleWriter(vtkAbstractParticleWriter *pw);
192 vtkGetObjectMacro(ParticleWriter, vtkAbstractParticleWriter);
198 vtkSetStringMacro(ParticleFileName);
199 vtkGetStringMacro(ParticleFileName);
205 vtkSetMacro(EnableParticleWriting,
int);
206 vtkGetMacro(EnableParticleWriting,
int);
207 vtkBooleanMacro(EnableParticleWriting,
int);
212 void AddSourceConnection(vtkAlgorithmOutput* input);
213 void RemoveAllSources();
229 virtual int ProcessRequest(vtkInformation* request,
230 vtkInformationVector** inputVector,
231 vtkInformationVector* outputVector);
237 virtual int RequestInformation(vtkInformation* request,
238 vtkInformationVector** inputVector,
239 vtkInformationVector* outputVector);
244 virtual int RequestUpdateExtent(vtkInformation* request,
245 vtkInformationVector** inputVector,
246 vtkInformationVector* outputVector);
252 vtkInformationVector** inputVector,
253 vtkInformationVector* outputVector);
258 virtual int ProcessInput(vtkInformationVector** inputVector);
260 virtual int GenerateOutput(vtkInformationVector** inputVector,
261 vtkInformationVector* outputVector);
266 int InitializeInterpolator();
267 int SetTemporalInput(vtkDataObject *td,
int index);
286 virtual void AssignSeedsToProcessors(
287 vtkDataSet *
source,
int sourceID,
int ptId,
289 int &LocalAssignedCount);
295 virtual void AssignUniqueIds(
302 void UpdateParticleList(
310 virtual void TransmitReceiveParticles(
318 void IntegrateParticle(
320 double currenttime,
double terminationtime,
321 vtkInitialValueProblemSolver* integrator);
332 double velocity[3],
double delT);
337 bool SendParticleToAnotherProcess(
339 double point1[4],
double delT);
341 void AddParticleToMPISendList(
348 bool ComputeDomainExitLocation(
349 double pos[4],
double p2[4],
double intersection[4],
350 vtkGenericCell *cell);
380 double CurrentTimeSteps[2];
433 vtkSmartPointer<vtkMultiBlockDataSet> InputDataT[2];
434 vtkSmartPointer<vtkDataSet> DataReferenceT[2];
440 std::vector<bounds> CachedBounds[2];
443 bool InsideBounds(
double point[]);
A helper class for interpolating between times during particle tracing.
vtkSmartPointer< vtkDoubleArray > cellVectors
int EnableParticleWriting
void PrintSelf(ostream &os, vtkIndent indent)
unsigned int NumberOfParticles
vtkIdType UniqueIdCounterMPI
vtkIdType UniqueIdCounter
int ForceReinjectionEveryNSteps
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
vtkSmartPointer< vtkTemporalInterpolatedVelocityField > Interpolator
vtkSmartPointer< vtkFloatArray > ParticleAge
An abstract class for obtaining the interpolated velocity values at a point.
vtkSmartPointer< vtkPointData > OutputPointData
std::list< ParticleInformation > ParticleDataList
vtkTemporalStreamTracerNamespace::ParticleDataList ParticleHistories
std::vector< double > InputTimeValues
vtkSmartPointer< vtkIntArray > InjectedStepIds
ParticleVector::iterator ParticleIterator
void SetTerminationTimeUnitToStepUnit()
double TimeStepResolution
vtkTimeStamp ParticleInjectionTime
unsigned int ActualTimeStep
unsigned int NumberOfInputTimeSteps
vtkSmartPointer< vtkIntArray > InjectedPointIds
static vtkStreamTracer * New()
A Parallel Particle tracer for unsteady vector fields.
vtkAbstractParticleWriter * ParticleWriter
vtkSmartPointer< vtkFloatArray > ParticleVorticity
vtkSmartPointer< vtkCellArray > ParticleCells
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
vtkSmartPointer< vtkCharArray > ParticleSourceIds
vtkSmartPointer< vtkPoints > OutputCoordinates
vtkTemporalStreamTracerNamespace::ParticleVector MPISendList
void SetInterpolatorPrototype(vtkAbstractInterpolatedVelocityField *ivf)
vtkSmartPointer< vtkFloatArray > ParticleAngularVel
ParticleDataList::iterator ParticleListIterator
vtkSmartPointer< vtkIntArray > ErrorCode
std::vector< double > OutputTimeValues
vtkSmartPointer< vtkIntArray > ParticleIds
vtkTemporalStreamTracerNamespace::ParticleVector LocalSeeds
std::vector< ParticleInformation > ParticleVector
virtual int FillInputPortInformation(int, vtkInformation *)
void SetTerminationTimeUnitToTimeUnit()
vtkSmartPointer< vtkFloatArray > ParticleRotation