79 #ifndef vtkLagrangianParticleTracker_h
80 #define vtkLagrangianParticleTracker_h
84 #include "vtkFiltersFlowPathsModule.h"
91 VTK_ABI_NAMESPACE_BEGIN
107 struct IntegratingFunctor;
119 STEP_CUR_CELL_LENGTH = 1,
120 STEP_CUR_CELL_VEL_DIR = 3,
121 STEP_CUR_CELL_DIV_THEO = 5
122 } CellLengthComputation;
148 vtkSetMacro(GeneratePolyVertexInteractionOutput,
bool);
149 vtkGetMacro(GeneratePolyVertexInteractionOutput,
bool);
166 vtkSetMacro(CellLengthComputationMode,
int);
167 vtkGetMacro(CellLengthComputationMode,
int);
174 vtkSetMacro(StepFactor,
double);
175 vtkGetMacro(StepFactor,
double);
182 vtkSetMacro(StepFactorMin,
double);
183 vtkGetMacro(StepFactorMin,
double);
190 vtkSetMacro(StepFactorMax,
double);
191 vtkGetMacro(StepFactorMax,
double);
198 vtkSetMacro(MaximumNumberOfSteps,
int);
199 vtkGetMacro(MaximumNumberOfSteps,
int);
207 vtkSetMacro(MaximumIntegrationTime,
double);
208 vtkGetMacro(MaximumIntegrationTime,
double);
218 vtkSetMacro(AdaptiveStepReintegration,
bool);
219 vtkGetMacro(AdaptiveStepReintegration,
bool);
220 vtkBooleanMacro(AdaptiveStepReintegration,
bool);
228 vtkSetMacro(GenerateParticlePathsOutput,
bool);
229 vtkGetMacro(GenerateParticlePathsOutput,
bool);
230 vtkBooleanMacro(GenerateParticlePathsOutput,
bool);
304 std::queue<vtkLagrangianParticle*>& particles,
vtkPointData* seedData);
307 int nVar, std::queue<vtkLagrangianParticle*>& particles);
308 virtual bool UpdateSurfaceCacheIfNeeded(
vtkDataObject*& surfaces);
314 virtual bool InitializePathsOutput(
320 virtual bool InitializeInteractionOutput(
325 static void InsertPolyVertexCell(
vtkPolyData* polydata);
326 static void InsertVertexCells(
vtkPolyData* polydata);
328 virtual void GetParticleFeed(std::queue<vtkLagrangianParticle*>& particleQueue);
334 std::queue<vtkLagrangianParticle*>&,
vtkPolyData* particlePathsOutput,
341 vtkIdList* particlePathPointId,
bool prev =
false);
347 unsigned int interactedSurfaceFlatIndex,
vtkDataObject* interactionOutput);
359 double t,
double& delT,
double& delTActual,
double minStep,
double maxStep,
double cellLength,
378 bool GenerateParticlePathsOutput =
true;
393 bool FlowCacheInvalid =
true;
396 bool SurfaceCacheInvalid =
true;
399 friend struct IntegratingFunctor;
408 VTK_ABI_NAMESPACE_END
virtual int RequestDataObject(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
int CellLengthComputationMode
vtkDataObject * SurfacesCache
vtkMTimeType SurfacesTime
represent and manipulate point attribute data
vtkTypeUInt32 vtkMTimeType
abstract class to specify dataset behavior
static vtkDataObjectAlgorithm * New()
vtkDataObject * FlowCache
struct to hold a user data
concrete dataset represents vertices, lines, polygons, and triangle strips
double MinimumReductionFactor
bool AdaptiveStepReintegration
vtkLagrangianThreadedData * SerialThreadedData
Proxy object to connect input/output ports.
dynamic, self-adjusting array of double
int FillOutputPortInformation(int port, vtkInformation *info) override
Fill the output port information objects for this algorithm.
std::atomic< vtkIdType > IntegratedParticleCounter
a simple class to control print indentation
vtkBoundingBox FlowBoundsCache
vtkFunctionSet abstract implementation to be used in the vtkLagrangianParticleTracker integrator...
list of point or cell ids
bool GeneratePolyVertexInteractionOutput
composite dataset to encapsulates pieces of dataset.
abstract superclass for arrays of numeric data
virtual vtkMTimeType GetMTime()
Return this object's modified time.
vtkSmartPointer< vtkInitialValueProblemSolver > Integrator
Basis class for Lagrangian particles.
double MaximumIntegrationTime
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
Superclass for algorithms that produce only data object as output.
object to represent cell connectivity
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
std::atomic< vtkIdType > ParticleCounter
Composite dataset that organizes datasets into blocks.
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.
vtkIdType IntegratedParticleCounterIncrement
general representation of visualization data
vtkSmartPointer< vtkLagrangianBasicIntegrationModel > IntegrationModel
Filter to inject and track particles in a flow.
represent and manipulate 3D points
double MinimumVelocityMagnitude
cell represents a set of 1D lines
Fast, simple class for representing and operating on 3D bounds.
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.