Go to the documentation of this file.
90 #ifndef vtkLagrangianParticleTracker_h
91 #define vtkLagrangianParticleTracker_h
93 #include "vtkFiltersFlowPathsModule.h"
122 STEP_LAST_CELL_LENGTH = 0,
123 STEP_CUR_CELL_LENGTH = 1,
124 STEP_LAST_CELL_VEL_DIR = 2,
125 STEP_CUR_CELL_VEL_DIR = 3,
126 STEP_LAST_CELL_DIV_THEO = 4,
127 STEP_CUR_CELL_DIV_THEO = 5
128 } CellLengthComputation;
154 vtkSetMacro(GeneratePolyVertexInteractionOutput,
bool);
155 vtkGetMacro(GeneratePolyVertexInteractionOutput,
bool);
184 vtkSetMacro(CellLengthComputationMode,
int);
185 vtkGetMacro(CellLengthComputationMode,
int);
192 vtkSetMacro(StepFactor,
double);
193 vtkGetMacro(StepFactor,
double);
200 vtkSetMacro(StepFactorMin,
double);
201 vtkGetMacro(StepFactorMin,
double);
208 vtkSetMacro(StepFactorMax,
double);
209 vtkGetMacro(StepFactorMax,
double);
216 vtkSetMacro(MaximumNumberOfSteps,
int);
217 vtkGetMacro(MaximumNumberOfSteps,
int);
225 vtkSetMacro(MaximumIntegrationTime,
double);
226 vtkGetMacro(MaximumIntegrationTime,
double);
236 vtkSetMacro(AdaptiveStepReintegration,
bool);
237 vtkGetMacro(AdaptiveStepReintegration,
bool);
238 vtkBooleanMacro(AdaptiveStepReintegration,
bool);
248 vtkSetMacro(UseParticlePathsRenderingThreshold,
bool);
249 vtkGetMacro(UseParticlePathsRenderingThreshold,
bool);
250 vtkBooleanMacro(UseParticlePathsRenderingThreshold,
bool);
260 vtkSetMacro(ParticlePathsRenderingPointsThreshold,
int);
261 vtkGetMacro(ParticlePathsRenderingPointsThreshold,
int);
337 std::queue<vtkLagrangianParticle*>& particleQueue,
vtkPointData* seedData);
340 std::queue<vtkLagrangianParticle*>& particles,
vtkPointData* seedData);
343 vtkPointData* seedData,
int nVar, std::queue<vtkLagrangianParticle*>& particles);
378 unsigned int interactedSurfaceFlatIndex,
vtkDataObject* interactionOutput);
388 double* xprev,
double* xnext,
389 double t,
double& delT,
double& delTActual,
390 double minStep,
double maxStep,
391 int& integrationRes);
represent and manipulate 3D points
int ParticlePathsRenderingPointsThreshold
Filter to inject and track particles in a flow.
virtual bool CheckParticlePathsRenderingThreshold(vtkPolyData *particlePathsOutput)
double ComputeCellLength(vtkLagrangianParticle *particle)
vtkFunctionSet abstract implementation to be used in the vtkLagrangianParticleTracker integrator.
bool UseParticlePathsRenderingThreshold
double MaximumIntegrationTime
virtual void GenerateParticles(const vtkBoundingBox *bounds, vtkDataSet *seeds, vtkDataArray *initialVelocities, vtkDataArray *initialIntegrationTimes, vtkPointData *seedData, int nVar, std::queue< vtkLagrangianParticle * > &particles)
vtkLagrangianBasicIntegrationModel * IntegrationModel
virtual bool InitializeOutputs(vtkInformationVector *outputVector, vtkPointData *seedData, vtkIdType numberOfSeeds, vtkDataObject *surfaces, vtkPolyData *&particlePathsOutput, vtkDataObject *&interactionOutput)
represent and manipulate point attribute data
virtual void InitializeInteractionData(vtkFieldData *data)
vtkDataObject * GetSurface()
void InsertPathOutputPoint(vtkLagrangianParticle *particle, vtkPolyData *particlePathsOutput, vtkIdList *particlePathPointId, bool prev=false)
void InsertPathData(vtkLagrangianParticle *particle, vtkFieldData *data)
~vtkLagrangianParticleTracker() override
bool GeneratePolyVertexInteractionOutput
virtual bool UpdateSurfaceCacheIfNeeded(vtkDataObject *&surfaces)
Superclass for algorithms that produce only data object as output.
virtual void InitializeParticleData(vtkFieldData *particleData, int maxTuples=0)
virtual vtkIdType GetNewParticleId()
Get an unique id for a particle.
virtual bool InitializeInteractionOutput(vtkInformationVector *outputVector, vtkPointData *seedData, vtkDataObject *surfaces, vtkDataObject *&interractionOutput)
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
represent and manipulate fields of data
virtual int Integrate(vtkLagrangianParticle *, std::queue< vtkLagrangianParticle * > &, vtkPolyData *particlePathsOutput, vtkIdList *particlePathPointId, vtkDataObject *interactionOutput)
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
vtkDataObject * GetSource()
virtual bool InitializePathsOutput(vtkInformationVector *outputVector, vtkPointData *seedData, vtkIdType numberOfSeeds, vtkPolyData *&particlePathsOutput)
Fast Simple Class for dealing with 3D bounds.
virtual bool InitializeFlow(vtkDataObject *flow, vtkBoundingBox *bounds)
int CellLengthComputationMode
vtkMTimeType GetMTime() override
Get the tracker modified time taking into account the integration model and the integrator.
void InsertInteractionData(vtkLagrangianParticle *particle, vtkFieldData *data)
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...
virtual bool FinalizeOutputs(vtkPolyData *particlePathsOutput, vtkDataObject *interractionOutput)
object to represent cell connectivity
vtkIdType ParticleCounter
int FillInputPortInformation(int port, vtkInformation *info) override
Declare input port type.
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)
void InsertParticleData(vtkLagrangianParticle *particle, vtkFieldData *data, int stepEnum)
static void InsertVertexCells(vtkPolyData *polydata)
vtkMTimeType SurfacesTime
bool ComputeNextStep(double *xprev, double *xnext, double t, double &delT, double &delTActual, double minStep, double maxStep, int &integrationRes)
virtual void GetParticleFeed(std::queue< vtkLagrangianParticle * > &particleQueue)
virtual void InitializeSurface(vtkDataObject *&surfaces)
virtual bool InitializeInputs(vtkInformationVector **inputVector, vtkDataObject *&flow, vtkDataObject *&seeds, vtkDataObject *&surfaces, std::queue< vtkLagrangianParticle * > &particleQueue, vtkPointData *seedData)
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()
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 void InitializePathData(vtkFieldData *data)
dynamic, self-adjusting array of double
virtual bool InitializeParticles(const vtkBoundingBox *bounds, vtkDataObject *seeds, std::queue< vtkLagrangianParticle * > &particles, vtkPointData *seedData)
void SetSurfaceConnection(vtkAlgorithmOutput *algOutput)
Specify the object used to compute surface interaction with.
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.
general representation of visualization data
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
double MinimumReductionFactor
void InsertSeedData(vtkLagrangianParticle *particle, vtkFieldData *data)
vtkTypeUInt32 vtkMTimeType