 |
VTK
9.1.0
|
Go to the documentation of this file.
88 #ifndef vtkLagrangianParticleTracker_h
89 #define vtkLagrangianParticleTracker_h
93 #include "vtkFiltersFlowPathsModule.h"
114 struct IntegratingFunctor;
126 STEP_CUR_CELL_LENGTH = 1,
127 STEP_CUR_CELL_VEL_DIR = 3,
128 STEP_CUR_CELL_DIV_THEO = 5
129 } CellLengthComputation;
155 vtkSetMacro(GeneratePolyVertexInteractionOutput,
bool);
156 vtkGetMacro(GeneratePolyVertexInteractionOutput,
bool);
173 vtkSetMacro(CellLengthComputationMode,
int);
174 vtkGetMacro(CellLengthComputationMode,
int);
181 vtkSetMacro(StepFactor,
double);
182 vtkGetMacro(StepFactor,
double);
189 vtkSetMacro(StepFactorMin,
double);
190 vtkGetMacro(StepFactorMin,
double);
197 vtkSetMacro(StepFactorMax,
double);
198 vtkGetMacro(StepFactorMax,
double);
205 vtkSetMacro(MaximumNumberOfSteps,
int);
206 vtkGetMacro(MaximumNumberOfSteps,
int);
214 vtkSetMacro(MaximumIntegrationTime,
double);
215 vtkGetMacro(MaximumIntegrationTime,
double);
225 vtkSetMacro(AdaptiveStepReintegration,
bool);
226 vtkGetMacro(AdaptiveStepReintegration,
bool);
227 vtkBooleanMacro(AdaptiveStepReintegration,
bool);
235 vtkSetMacro(GenerateParticlePathsOutput,
bool);
236 vtkGetMacro(GenerateParticlePathsOutput,
bool);
237 vtkBooleanMacro(GenerateParticlePathsOutput,
bool);
311 std::queue<vtkLagrangianParticle*>& particles,
vtkPointData* seedData);
314 int nVar, std::queue<vtkLagrangianParticle*>& particles);
341 std::queue<vtkLagrangianParticle*>&,
vtkPolyData* particlePathsOutput,
348 vtkIdList* particlePathPointId,
bool prev =
false);
354 unsigned int interactedSurfaceFlatIndex,
vtkDataObject* interactionOutput);
366 double t,
double& delT,
double& delTActual,
double minStep,
double maxStep,
double cellLength,
385 bool GenerateParticlePathsOutput =
true;
404 friend struct IntegratingFunctor;
virtual int Integrate(vtkInitialValueProblemSolver *integrator, vtkLagrangianParticle *, std::queue< vtkLagrangianParticle * > &, vtkPolyData *particlePathsOutput, vtkPolyLine *particlePath, vtkDataObject *interactionOutput)
This method is thread safe.
represent and manipulate 3D points
vtkLagrangianThreadedData * SerialThreadedData
Filter to inject and track particles in a flow.
double ComputeCellLength(vtkLagrangianParticle *particle)
Computes the cell length for the next step using the method set by CellLengthComputationMode.
virtual void DeleteParticle(vtkLagrangianParticle *particle)
This method is thread safe Call the ParticleAboutToBeDeleted model method and delete the particle.
vtkFunctionSet abstract implementation to be used in the vtkLagrangianParticleTracker integrator.
double MaximumIntegrationTime
composite dataset to encapsulates pieces of dataset.
std::atomic< vtkIdType > ParticleCounter
virtual void GenerateParticles(const vtkBoundingBox *bounds, vtkDataSet *seeds, vtkDataArray *initialVelocities, vtkDataArray *initialIntegrationTimes, vtkPointData *seedData, int nVar, std::queue< vtkLagrangianParticle * > &particles)
vtkLagrangianBasicIntegrationModel * IntegrationModel
represent and manipulate point attribute data
vtkDataObject * GetSurface()
Specify the source object used to compute surface interaction with Note that this method does not con...
void InsertPathOutputPoint(vtkLagrangianParticle *particle, vtkPolyData *particlePathsOutput, vtkIdList *particlePathPointId, bool prev=false)
This method is thread safe.
~vtkLagrangianParticleTracker() override
bool GeneratePolyVertexInteractionOutput
virtual bool UpdateSurfaceCacheIfNeeded(vtkDataObject *&surfaces)
Superclass for algorithms that produce only data object as output.
virtual vtkIdType GetNewParticleId()
Get an unique id for a particle This method is thread safe.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetSourceConnection(vtkAlgorithmOutput *algOutput)
Specify the source object used to generate particle initial position (seeds).
abstract superclass for arrays of numeric data
vtkLagrangianParticleTracker()
double MinimumVelocityMagnitude
Composite dataset that organizes datasets into blocks.
vtkIdType IntegratedParticleCounterIncrement
vtkDataObject * GetSource()
Specify the source object used to generate particle initial position (seeds).
Fast, simple class for representing and operating on 3D bounds.
virtual bool InitializeFlow(vtkDataObject *flow, vtkBoundingBox *bounds)
cell represents a set of 1D lines
int CellLengthComputationMode
vtkMTimeType GetMTime() override
Get the tracker modified time taking into account the integration model and the integrator.
a simple class to control print indentation
void SetSurfaceData(vtkDataObject *source)
Specify the source object used to compute surface interaction with Note that this method does not con...
object to represent cell connectivity
int FillInputPortInformation(int port, vtkInformation *info) override
Declare input port type.
struct to hold a user data
int RequestDataObject(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
Create outputs objects.
list of point or cell ids
vtkDataObject * SurfacesCache
void InsertInteractionOutputPoint(vtkLagrangianParticle *particle, unsigned int interactedSurfaceFlatIndex, vtkDataObject *interactionOutput)
This method is thread safe.
static void InsertVertexCells(vtkPolyData *polydata)
vtkMTimeType SurfacesTime
virtual void GetParticleFeed(std::queue< vtkLagrangianParticle * > &particleQueue)
virtual void InitializeSurface(vtkDataObject *&surfaces)
Basis class for Lagrangian particles.
int FillOutputPortInformation(int port, vtkInformation *info) override
Declare output port type.
abstract class to specify dataset behavior
bool AdaptiveStepReintegration
vtkDataObject * FlowCache
static vtkLagrangianParticleTracker * New()
virtual bool FinalizeOutputs(vtkPolyData *particlePathsOutput, vtkDataObject *interactionOutput)
Proxy object to connect input/output ports.
void SetIntegrationModel(vtkLagrangianBasicIntegrationModel *integrationModel)
Set/Get the integration model.
concrete dataset represents vertices, lines, polygons, and triangle strips
virtual bool InitializePathsOutput(vtkPointData *seedData, vtkIdType numberOfSeeds, vtkPolyData *&particlePathsOutput)
This method is thread safe.
bool ComputeNextStep(vtkInitialValueProblemSolver *integrator, double *xprev, double *xnext, double t, double &delT, double &delTActual, double minStep, double maxStep, double cellLength, int &integrationRes, vtkLagrangianParticle *particle)
This method is thread safe.
dynamic, self-adjusting array of double
void SetSurfaceConnection(vtkAlgorithmOutput *algOutput)
Specify the object used to compute surface interaction with.
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
static void InsertPolyVertexCell(vtkPolyData *polydata)
void SetSourceData(vtkDataObject *source)
Specify the source object used to generate particle initial position (seeds).
Integrate a set of ordinary differential equations (initial value problem) in time.
std::atomic< vtkIdType > IntegratedParticleCounter
general representation of visualization data
virtual bool InitializeParticles(const vtkBoundingBox *bounds, vtkDataSet *seeds, std::queue< vtkLagrangianParticle * > &particles, vtkPointData *seedData)
void SetIntegrator(vtkInitialValueProblemSolver *integrator)
Set/Get the integrator.
int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override
Process inputs to integrate particle and generate output.
vtkInitialValueProblemSolver * Integrator
vtkBoundingBox FlowBoundsCache
virtual bool InitializeInteractionOutput(vtkPointData *seedData, vtkDataObject *surfaces, vtkDataObject *&interractionOutput)
This method is thread safe.
double MinimumReductionFactor
vtkTypeUInt32 vtkMTimeType