16 #ifndef vtkLegacyParticleTracerBase_h 17 #define vtkLegacyParticleTracerBase_h 19 #include "vtkDeprecation.h" 58 int CachedDataSetId[2];
89 struct ParticleTracerFunctor;
96 friend struct vtkLegacyParticleTracerBaseNamespace::ParticleTracerFunctor;
107 void PrintSelf(ostream& os,
vtkIndent indent)
override;
108 void PrintParticleHistories();
116 vtkGetMacro(ComputeVorticity,
bool);
117 void SetComputeVorticity(
bool);
124 vtkGetMacro(TerminalSpeed,
double);
125 void SetTerminalSpeed(
double);
133 vtkGetMacro(RotationScale,
double);
134 void SetRotationScale(
double);
157 vtkGetMacro(ForceReinjectionEveryNSteps,
int);
158 void SetForceReinjectionEveryNSteps(
int);
168 void SetTerminationTime(
double t);
169 vtkGetMacro(TerminationTime,
double);
175 void SetIntegratorType(
int type);
176 int GetIntegratorType();
183 vtkGetMacro(StartTime,
double);
184 void SetStartTime(
double t);
208 LINEAR_TRANSFORMATION = 2,
221 virtual void SetMeshOverTime(
int meshOverTime);
228 vtkGetMacro(MeshOverTime,
int);
241 VTK_DEPRECATED_IN_9_2_0(
"Use SetMeshOverTime instead")
244 this->SetMeshOverTime(staticMesh ? STATIC : DIFFERENT);
246 VTK_DEPRECATED_IN_9_2_0(
"Use GetMeshOverTime instead")
247 virtual
vtkTypeBool GetStaticMesh() {
return this->MeshOverTime == STATIC; }
253 INTERPOLATOR_WITH_CELL_LOCATOR
267 void SetInterpolatorType(
int interpolatorType);
276 void SetInterpolatorTypeToDataSetPointLocator();
284 void SetInterpolatorTypeToCellLocator();
302 vtkSetFilePathMacro(ParticleFileName);
303 vtkGetFilePathMacro(ParticleFileName);
313 vtkBooleanMacro(EnableParticleWriting,
vtkTypeBool);
332 void RemoveAllSources();
340 vtkGetMacro(ForceSerialExecution,
bool);
341 vtkSetMacro(ForceSerialExecution,
bool);
342 vtkBooleanMacro(ForceSerialExecution,
bool);
370 int FillInputPortInformation(
int port,
vtkInformation* info)
override;
413 virtual int OutputParticles(
vtkPolyData* poly) = 0;
420 virtual std::vector<vtkDataSet*> GetSeedSources(
vtkInformationVector* inputVector,
int timeStep);
423 int InitializeInterpolator();
449 virtual void AssignUniqueIds(
471 std::atomic<vtkIdType>& particleCount, std::mutex& eraseMutex,
bool sequential);
488 bool ComputeDomainExitLocation(
489 double pos[4],
double p2[4],
double intersection[4],
vtkGenericCell* cell);
507 bool InsideBounds(
double point[]);
509 void CalculateVorticity(
514 double GetCacheDataTime(
int i);
515 double GetCacheDataTime();
517 virtual void ResetCache();
530 void GetPointDataArrayNames(
vtkDataSet* input, std::vector<std::string>& names);
533 vtkGetMacro(ReinjectionCounter,
int);
534 vtkGetMacro(CurrentTimeValue,
double);
576 bool SetTerminationTimeNoModify(
double t);
580 double IntegrationStep;
582 bool ComputeVorticity;
583 double RotationScale;
584 double TerminalSpeed;
587 int ReinjectionCounter;
594 std::vector<double> InputTimeValues;
596 double TerminationTime;
597 double CurrentTimeValue;
602 int TerminationTimeStep;
606 int ForceReinjectionEveryNSteps;
612 char* ParticleFileName;
629 using bounds =
struct bounds_t;
630 std::vector<bounds> CachedBounds[2];
659 unsigned int NumberOfParticles();
663 static const double Epsilon;
A particle tracer for vector fields.
std::list< ParticleInformation > ParticleDataList
virtual int GetMeshOverTimeMinValue()
virtual void AddRestartSeeds(vtkInformationVector **)
For restarts of particle paths, we add in the ability to add in particles from a previous computation...
void SetMeshOverTimeToDifferent()
vtkTypeBool IgnorePipelineTime
ProtoPD is used just to keep track of the input array names and number of components for copy allocat...
void SetMeshOverTimeToStatic()
MeshOverTimeTypes
Types of Variance of Mesh over time.
vtkLegacyParticleTracerBaseNamespace::ParticleDataList ParticleHistories
ProtoPD is used just to keep track of the input array names and number of components for copy allocat...
virtual int GetMeshOverTimeMaxValue()
vtkSmartPointer< vtkPolyData > Output
vtkIdType UniqueIdCounter
ProtoPD is used just to keep track of the input array names and number of components for copy allocat...
vtkSmartPointer< vtkPointData > ProtoPD
ProtoPD is used just to keep track of the input array names and number of components for copy allocat...
vtkTypeBool DisableResetCache
ProtoPD is used just to keep track of the input array names and number of components for copy allocat...
ParticleDataList::iterator ParticleListIterator
virtual void Initialize()
bool ForceSerialExecution
A Parallel Particle tracer for unsteady vector fields.
std::vector< ParticleInformation > ParticleVector
virtual bool SendParticleToAnotherProcess(vtkLegacyParticleTracerBaseNamespace::ParticleInformation &, vtkLegacyParticleTracerBaseNamespace::ParticleInformation &, vtkPointData *)
virtual bool UpdateParticleListFromOtherProcesses()
this is used during classification of seed points and also between iterations of the main loop as par...
virtual void SetToExtraPointDataArrays(vtkIdType, vtkLegacyParticleTracerBaseNamespace::ParticleInformation &)
ParticleVector::iterator ParticleIterator
void SetMeshOverTimeToLinearTransformation()
void SetMeshOverTimeToSameTopology()
virtual void InitializeExtraPointDataArrays(vtkPointData *vtkNotUsed(outputPD))
Methods to append values to existing point data arrays that may only be desired on specific concrete ...
#define VTKPVVTKEXTENSIONSFILTERSGENERALMPI_EXPORT
vtkSmartPointer< vtkPointData > ParticlePointData
ProtoPD is used just to keep track of the input array names and number of components for copy allocat...