16 #ifndef vtkParticleTracerBase_h
17 #define vtkParticleTracerBase_h
19 #include "vtkFiltersFlowPathsModule.h"
28 #include <unordered_map>
32 #define vtkPolyDataAlgorithm vtkTemporalAlgorithm<vtkPolyDataAlgorithm>
35 VTK_ABI_NAMESPACE_BEGIN
57 VTK_ABI_NAMESPACE_BEGIN
97 struct ParticleTracerFunctor;
101 VTK_ABI_NAMESPACE_BEGIN
105 friend struct vtkParticleTracerBaseNamespace::ParticleTracerFunctor;
116 void PrintParticleHistories();
119 #undef vtkPolyDataAlgorithm
125 #if defined(__VTK_WRAP__) || defined(__WRAP_GCCXML)
144 vtkGetMacro(ComputeVorticity,
bool);
145 void SetComputeVorticity(
bool);
152 vtkGetMacro(TerminalSpeed,
double);
153 void SetTerminalSpeed(
double);
161 vtkGetMacro(RotationScale,
double);
162 void SetRotationScale(
double);
185 vtkGetMacro(ForceReinjectionEveryNSteps,
int);
186 void SetForceReinjectionEveryNSteps(
int);
192 void SetIntegratorType(
int type);
193 int GetIntegratorType();
216 LINEAR_TRANSFORMATION = 2,
229 virtual void SetMeshOverTime(
int meshOverTime);
236 vtkGetMacro(MeshOverTime,
int);
242 "Use SetCellLocatorToJumpAndWalkCellLocator() instead"),
244 "Use SetCellLocatorToStaticCellLocator() instead")
259 void SetInterpolatorType(
int interpolatorType);
268 virtual
void SetCellLocatorToStaticCellLocator();
269 virtual
void SetCellLocatorToJumpAndWalkCellLocator();
280 void SetInterpolatorTypeToDataSetPointLocator();
289 void SetInterpolatorTypeToCellLocator();
307 vtkSetFilePathMacro(ParticleFileName);
308 vtkGetFilePathMacro(ParticleFileName);
317 vtkGetMacro(EnableParticleWriting, vtkTypeBool);
318 vtkBooleanMacro(EnableParticleWriting, vtkTypeBool);
326 void RemoveAllSources();
334 vtkGetMacro(ForceSerialExecution,
bool);
335 vtkSetMacro(ForceSerialExecution,
bool);
336 vtkBooleanMacro(ForceSerialExecution,
bool);
346 vtkTypeBool IgnorePipelineTime;
350 bool ForceSerialExecution;
390 int InitializeInterpolator();
435 virtual
bool UpdateParticleListFromOtherProcesses();
443 std::atomic<vtkIdType>& particleCount,
std::mutex& eraseMutex,
bool sequential);
451 bool ComputeDomainExitLocation(
452 double pos[4],
double p2[4],
double intersection[4],
vtkGenericCell* cell);
470 bool InsideBounds(
double point[]);
472 void CalculateVorticity(
480 std::unordered_map<vtkIdType,
int> InjectedPointIdToProcessId;
493 vtkGetMacro(ReinjectionCounter,
int);
495 void ResizeArrays(vtkIdType numTuples);
501 virtual
void InitializeExtraPointDataArrays(vtkPointData* vtkNotUsed(outputPD)) {}
528 bool SetTerminationTimeNoModify(
double t);
579 std::unordered_map<vtkIdType, vtkParticleTracerBaseNamespace::ParticleInformation>
MPIRecvList;
587 std::vector<bounds> CachedBounds[2];
614 unsigned int NumberOfParticles();
616 friend class ParticlePathFilterInternal;
617 friend class StreaklineFilterInternal;
629 VTK_ABI_NAMESPACE_END
virtual int GetMeshOverTimeMinValue()
composite dataset to encapsulates a dataset consisting of partitions.
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.
vtkInitialValueProblemSolver * Integrator
#define vtkCreateWrappedTemporalAlgorithmInterface()
represent and manipulate point attribute data
vtkNew< vtkPointData > OutputPointData
vtkIdType CachedCellId[2]
abstract class to specify dataset behavior
std::unordered_map< vtkIdType, vtkParticleTracerBaseNamespace::ParticleInformation > MPIRecvList
Storage of the particles we received.
vtkTypeBool EnableParticleWriting
record modification and/or execution time
dynamic, self-adjusting array of float
an abstract base class for locators which find cells
vtkNew< vtkSignedCharArray > ParticleSourceIds
Hold a reference to a vtkObjectBase instance.
vtkNew< vtkDoubleArray > CellVectors
concrete dataset represents vertices, lines, polygons, and triangle strips
vtkSmartPointer< vtkTemporalInterpolatedVelocityField > Interpolator
void SetMeshOverTimeToLinearTransformation()
ParticleVector::iterator ParticleIterator
provides thread-safe access to cells
vtkNew< vtkPoints > OutputCoordinates
virtual int GetMeshOverTimeMaxValue()
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...
static const double Epsilon
dynamic, self-adjusting array of int
abstract superclass for composite (multi-block or AMR) datasets
Superclass for algorithms that produce only polydata as output.
vtkParticleTracerBaseNamespace::ParticleVector MPISendList
Storage of the particles we want to send to another rank.
a simple class to control print indentation
void SetMeshOverTimeToDifferent()
vtkNew< vtkIdTypeArray > ParticleCellsConnectivity
vtkNew< vtkFloatArray > ParticleVorticity
vtkNew< vtkIntArray > ErrorCodeArray
vtkNew< vtkFloatArray > ParticleRotation
struct ParticleInformation_t ParticleInformation
vtkNew< vtkFloatArray > ParticleAge
abstract superclass for arrays of numeric data
vtkAbstractParticleWriter * ParticleWriter
vtkNew< vtkIntArray > InjectedStepIds
vtkNew< vtkFloatArray > ParticleAngularVel
dynamic, self-adjusting array of signed char
vtkParticleTracerBaseNamespace::ParticleVector LocalSeeds
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
vtkSmartPointer< vtkMultiProcessController > Controller
std::list< ParticleInformation > ParticleDataList
vtkNew< vtkIdTypeArray > InjectedPointIds
virtual void SetToExtraPointDataArrays(vtkIdType, vtkParticleTracerBaseNamespace::ParticleInformation &)
void SetMeshOverTimeToSameTopology()
Composite dataset that organizes datasets into blocks.
std::vector< ParticleInformation > ParticleVector
vtkNew< vtkIntArray > ParticleIds
vtkTimeStamp ParticleInjectionTime
ParticleDataList::iterator ParticleListIterator
general representation of visualization data
vtkTypeBool AllFixedGeometry
#define VTK_DEPRECATED_IN_9_7_0(reason)
void SetMeshOverTimeToStatic()
int ForceReinjectionEveryNSteps
represent and manipulate 3D points
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
Integrate a set of ordinary differential equations (initial value problem) in time.
A particle tracer for vector fields.
Multiprocessing communication superclass.