16 #ifndef vtkParticleTracerBase_h
17 #define vtkParticleTracerBase_h
20 #include "vtkFiltersFlowPathsModule.h"
28 VTK_ABI_NAMESPACE_BEGIN
50 VTK_ABI_NAMESPACE_BEGIN
92 struct ParticleTracerFunctor;
96 VTK_ABI_NAMESPACE_BEGIN
100 friend struct vtkParticleTracerBaseNamespace::ParticleTracerFunctor;
112 void PrintParticleHistories();
120 vtkGetMacro(ComputeVorticity,
bool);
121 void SetComputeVorticity(
bool);
128 vtkGetMacro(TerminalSpeed,
double);
129 void SetTerminalSpeed(
double);
137 vtkGetMacro(RotationScale,
double);
138 void SetRotationScale(
double);
161 vtkGetMacro(ForceReinjectionEveryNSteps,
int);
162 void SetForceReinjectionEveryNSteps(
int);
172 void SetTerminationTime(
double t);
173 vtkGetMacro(TerminationTime,
double);
179 void SetIntegratorType(
int type);
180 int GetIntegratorType();
187 vtkGetMacro(StartTime,
double);
188 void SetStartTime(
double t);
212 LINEAR_TRANSFORMATION = 2,
225 virtual void SetMeshOverTime(
int meshOverTime);
232 vtkGetMacro(MeshOverTime,
int);
248 this->SetMeshOverTime(staticMesh ? STATIC : DIFFERENT);
251 virtual
vtkTypeBool GetStaticMesh() {
return this->MeshOverTime == STATIC; }
257 INTERPOLATOR_WITH_CELL_LOCATOR
271 void SetInterpolatorType(
int interpolatorType);
280 void SetInterpolatorTypeToDataSetPointLocator();
288 void SetInterpolatorTypeToCellLocator();
306 vtkSetFilePathMacro(ParticleFileName);
307 vtkGetFilePathMacro(ParticleFileName);
317 vtkBooleanMacro(EnableParticleWriting,
vtkTypeBool);
336 void RemoveAllSources();
344 vtkGetMacro(ForceSerialExecution,
bool);
345 vtkSetMacro(ForceSerialExecution,
bool);
346 vtkBooleanMacro(ForceSerialExecution,
bool);
417 virtual int OutputParticles(
vtkPolyData* poly) = 0;
424 virtual std::vector<vtkDataSet*> GetSeedSources(
vtkInformationVector* inputVector,
int timeStep);
427 int InitializeInterpolator();
474 std::atomic<vtkIdType>& particleCount, std::mutex& eraseMutex,
bool sequential);
490 bool ComputeDomainExitLocation(
491 double pos[4],
double p2[4],
double intersection[4],
vtkGenericCell* cell);
509 bool InsideBounds(
double point[]);
511 void CalculateVorticity(
516 double GetCacheDataTime(
int i);
517 double GetCacheDataTime();
519 virtual void ResetCache();
532 void GetPointDataArrayNames(
vtkDataSet* input, std::vector<std::string>& names);
535 vtkGetMacro(ReinjectionCounter,
int);
536 vtkGetMacro(CurrentTimeValue,
double);
578 bool SetTerminationTimeNoModify(
double t);
582 double IntegrationStep;
584 bool ComputeVorticity;
585 double RotationScale;
586 double TerminalSpeed;
589 int ReinjectionCounter;
596 std::vector<double> InputTimeValues;
598 double TerminationTime;
599 double CurrentTimeValue;
604 int TerminationTimeStep;
608 int ForceReinjectionEveryNSteps;
614 char* ParticleFileName;
631 using bounds =
struct bounds_t;
632 std::vector<bounds> CachedBounds[2];
661 unsigned int NumberOfParticles();
666 static const double Epsilon;
669 VTK_ABI_NAMESPACE_END
virtual int GetMeshOverTimeMinValue()
A helper class for interpolating between times during particle tracing.
abstract class to write particle data to file
MeshOverTimeTypes
Types of Variance of Mesh over time.
represent and manipulate point attribute data
vtkIdType CachedCellId[2]
abstract class to specify dataset behavior
virtual int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
This is called by the superclass.
#define VTK_DEPRECATED_IN_9_2_0(reason)
record modification and/or execution time
dynamic, self-adjusting array of float
virtual bool SendParticleToAnotherProcess(vtkParticleTracerBaseNamespace::ParticleInformation &, vtkParticleTracerBaseNamespace::ParticleInformation &, vtkPointData *)
concrete dataset represents vertices, lines, polygons, and triangle strips
void SetMeshOverTimeToLinearTransformation()
ParticleVector::iterator ParticleIterator
provides thread-safe access to cells
virtual int GetMeshOverTimeMaxValue()
bool ForceSerialExecution
Proxy object to connect input/output ports.
dynamic, self-adjusting array of double
virtual void AddRestartSeeds(vtkInformationVector **)
For restarts of particle paths, we add in the ability to add in particles from a previous computation...
vtkParticleTracerBaseNamespace::ParticleDataList ParticleHistories
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...
virtual int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
dynamic, self-adjusting array of int
abstract superclass for composite (multi-block or AMR) datasets
Superclass for algorithms that produce only polydata as output.
vtkTypeBool DisableResetCache
ProtoPD is used just to keep track of the input array names and number of components for copy allocat...
vtkSmartPointer< vtkPolyData > Output
virtual void Initialize()
a simple class to control print indentation
void SetMeshOverTimeToDifferent()
virtual int RequestInformation(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
vtkIdType UniqueIdCounter
ProtoPD is used just to keep track of the input array names and number of components for copy allocat...
abstract superclass for arrays of numeric data
dynamic, self-adjusting array of signed char
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
vtkTypeBool ProcessRequest(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
see vtkAlgorithm for details
virtual void InitializeExtraPointDataArrays(vtkPointData *vtkNotUsed(outputPD))
Methods to append values to existing point data arrays that may only be desired on specific concrete ...
std::list< ParticleInformation > ParticleDataList
vtkTypeBool IgnorePipelineTime
ProtoPD is used just to keep track of the input array names and number of components for copy allocat...
object to represent cell connectivity
virtual void SetToExtraPointDataArrays(vtkIdType, vtkParticleTracerBaseNamespace::ParticleInformation &)
void SetMeshOverTimeToSameTopology()
Composite dataset that organizes datasets into blocks.
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.
std::vector< ParticleInformation > ParticleVector
vtkSmartPointer< vtkPointData > ParticlePointData
ProtoPD is used just to keep track of the input array names and number of components for copy allocat...
ParticleDataList::iterator ParticleListIterator
general representation of visualization data
void SetMeshOverTimeToStatic()
represent and manipulate 3D points
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual bool UpdateParticleListFromOtherProcesses()
this is used during classification of seed points and also between iterations of the main loop as par...
Integrate a set of ordinary differential equations (initial value problem) in time.
A particle tracer for vector fields.
Multiprocessing communication superclass.