29 #ifndef vtkLagrangianParticle_h
30 #define vtkLagrangianParticle_h
32 #include "vtkFiltersFlowPathsModule.h"
67 PARTICLE_TERMINATION_NOT_TERMINATED = 0,
73 PARTICLE_TERMINATION_OUT_OF_TIME
74 } ParticleTermination;
89 SURFACE_INTERACTION_NO_INTERACTION = 0,
94 SURFACE_INTERACTION_OTHER
108 int numberOfTrackedUserData);
116 vtkPointData* seedData,
int weightsSize,
int numberOfTrackedUserData,
117 vtkIdType numberOfSteps = 0,
double previousIntegrationTime = 0);
185 inline double*
GetPosition() {
return this->EquationVariables.data(); }
292 this->ThreadedData = threadedData;
385 double lastCellPosition[3]);
513 double LastCellPosition[3];
an abstract base class for locators which find cells
Class to perform non planar quad intersection.
abstract class to specify dataset behavior
provides thread-safe access to cells
list of point or cell ids
a simple class to control print indentation
Basis class for Lagrangian particles.
double * GetNextUserVariables()
Get a pointer to the next user variables.
vtkDataSet * LastSurfaceDataSet
std::vector< double > TrackedUserData
static vtkLagrangianParticle * NewInstance(int numberOfVariables, vtkIdType seedId, vtkIdType particleId, vtkIdType seedArrayTupleIndex, double integrationTime, vtkPointData *seedData, int weightsSize, int numberOfTrackedUserData, vtkIdType numberOfSteps=0, double previousIntegrationTime=0)
Constructor wrapper to create a partially integrated particle in the domain.
std::vector< double > & GetPrevTrackedUserData()
Get a reference to PrevTrackedUserData See GetTrackedUserData for an explanation on how to use it.
std::vector< double > PrevTrackedUserData
virtual double GetPrevIntegrationTime()
Get the integration time at previous position.
virtual void MoveToNextPosition()
Move the particle to its next position by putting next equation variable to equation variable and cle...
virtual int GetUserFlag()
vtkIdType GetLastCellId()
Get the last traversed cell id.
virtual int GetNumberOfVariables()
Get the number of variables used to initialize EquationVariables.
vtkIdType GetLastSurfaceCellId()
Get the last intersected surface cell id.
void SetThreadedData(vtkLagrangianThreadedData *threadedData)
double * PrevUserVariables
virtual vtkIdType GetSeedArrayTupleIndex() const
Get the index of the tuple for this particle in the point data returned by GetSeedData method.
double * GetEquationVariables()
Get a pointer to the particle variables array.
virtual void SetInteraction(int interaction)
Set/Get particle interaction.
vtkLagrangianParticle()=delete
double GetPositionVectorMagnitude()
Compute and return the position vector magnitude.
virtual void SetPInsertPreviousPosition(bool val)
Set/Get parallel specific flag, indication to insert or not the previous position after streaming.
virtual ~vtkLagrangianParticle()
Destructor.
virtual void SetPManualShift(bool val)
Set/Get parallel specific flag, indication that the particle may be manually shifted after streaming.
virtual void SetIntegrationTime(double time)
Convenience setter for integration time, do not use unless manual particle shifting One using this me...
double * GetNextVelocity()
Get a pointer to the next particle velocity.
ParticleTermination
An enum to inform about a reason for termination PARTICLE_TERMINATION_NOT_TERMINATED = 0,...
@ PARTICLE_TERMINATION_OUT_OF_DOMAIN
@ PARTICLE_TERMINATION_SURF_TERMINATED
@ PARTICLE_TERMINATION_SURF_BREAK
@ PARTICLE_TERMINATION_FLIGHT_TERMINATED
@ PARTICLE_TERMINATION_OUT_OF_STEPS
double * GetPrevVelocity()
Get a pointer to the previous particle velocity.
vtkLagrangianParticle * NewParticle(vtkIdType particleId)
method to create a particle from a parent particle.
vtkLagrangianParticle(const vtkLagrangianParticle &)=delete
double * GetPrevPosition()
Get a pointer to the previous particle position.
vtkDataSet * GetLastSurfaceDataSet()
Get the dataset containing the last intersected surface cell.
void operator=(const vtkLagrangianParticle &)=delete
virtual bool GetPInsertPreviousPosition()
virtual vtkIdType GetId()
Get particle id.
void SetLastCell(vtkAbstractCellLocator *locator, vtkDataSet *dataset, vtkIdType cellId, double lastCellPosition[3])
Set the last dataset and last cell id.
vtkDataSet * GetLastDataSet()
Get the dataset containing the last traversed cell.
std::vector< double > EquationVariables
virtual void SetUserFlag(int flag)
Set/Get user flag.
double * GetLastWeights()
Get the last weights computed when locating the particle in the last traversed cell.
double * GetVelocity()
Get a pointer to the particle velocity.
virtual vtkPointData * GetSeedData()
Get the particle seed data, for reading only.
double * GetNextEquationVariables()
Get a pointer to the particle variables array at its next position.
virtual vtkIdType GetParentId()
std::vector< double > & GetTrackedUserData()
Get a reference to TrackedUserData.
double * GetPrevUserVariables()
Get a pointer to the previous user variables.
bool PInsertPreviousPosition
virtual double & GetStepTimeRef()
Get reference to step time of this particle.
vtkIdType LastSurfaceCellId
vtkLagrangianParticle(int numberOfVariables, vtkIdType seedId, vtkIdType particleId, vtkIdType seedArrayTupleIndex, double integrationTime, vtkPointData *seedData, int weightsSize, int numberOfTrackedUserData)
Constructor to create a particle from a seed.
double * NextUserVariables
double * GetUserVariables()
Get a pointer to the user variables.
SurfaceInteraction
An enum to inform about a surface interaction SURFACE_INTERACTION_NO_INTERACTION = 0,...
@ SURFACE_INTERACTION_TERMINATED
@ SURFACE_INTERACTION_BREAK
@ SURFACE_INTERACTION_PASS
@ SURFACE_INTERACTION_BOUNCE
void SetLastSurfaceCell(vtkDataSet *dataset, vtkIdType cellId)
Set the last surface dataset and last surface cell id.
std::vector< double > PrevEquationVariables
double * GetNextPosition()
Get a pointer to the next particle position.
double * GetPosition()
Get a pointer to the particle position.
virtual int GetNumberOfUserVariables()
Get the number of variables specific to the user.
std::vector< double > NextTrackedUserData
virtual void SetTermination(int termination)
Set/Get particle termination.
double PrevIntegrationTime
vtkLagrangianParticle * CloneParticle()
method to create an exact clone of a particle.
virtual double GetIntegrationTime()
Get the integration time.
virtual bool GetPManualShift()
double * GetLastCellPosition()
Get the last position evaluated.
virtual int GetInteraction()
vtkIdType SeedArrayTupleIndex
vtkAbstractCellLocator * GetLastLocator()
Get the locator used to find the last traversed cell.
std::vector< double > NextEquationVariables
virtual vtkIdType GetNumberOfSteps()
Get particle current number of steps.
virtual void SetParentId(vtkIdType parentId)
Set/Get parent particle id.
vtkAbstractCellLocator * LastLocator
virtual vtkIdType GetSeedId()
Get the particle original seed index in the seed dataset.
double * GetPrevEquationVariables()
Get a pointer to Particle variables at its previous position See GetEquationVariables for content des...
vtkLagrangianThreadedData * GetThreadedData()
Get/Set a pointer to a vtkLagrangianThreadedData that is considered to be local to the thread.
std::vector< double > & GetNextTrackedUserData()
Get a reference to NextTrackedUserData See GetTrackedUserData for an explanation on how to use it.
virtual void PrintSelf(ostream &os, vtkIndent indent)
Print information about the particle.
virtual int GetTermination()
std::vector< double > LastWeights
represent and manipulate point attribute data
struct to hold a user data