VTK  9.1.0
vtkLagrangianParticle.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkLagrangianParticle.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
29 #ifndef vtkLagrangianParticle_h
30 #define vtkLagrangianParticle_h
31 
32 #include "vtkFiltersFlowPathsModule.h" // For export macro
33 #include "vtkNew.h" // For vtkNew
34 #include "vtkSystemIncludes.h" // For PrintSelf signature and vtkType
35 
36 #include <vector>
37 
40 class vtkDataSet;
41 class vtkGenericCell;
42 class vtkIdList;
43 class vtkPointData;
45 
46 class VTKFILTERSFLOWPATHS_EXPORT vtkLagrangianParticle
47 {
48 public:
67  typedef enum ParticleTermination
68  {
69  PARTICLE_TERMINATION_NOT_TERMINATED = 0,
77  PARTICLE_TERMINATION_ABORTED
78  } ParticleTermination;
79 
91  typedef enum SurfaceInteraction
92  {
93  SURFACE_INTERACTION_NO_INTERACTION = 0,
98  SURFACE_INTERACTION_OTHER
99  } SurfaceInteraction;
100 
110  vtkLagrangianParticle(int numberOfVariables, vtkIdType seedId, vtkIdType particleId,
111  vtkIdType seedArrayTupleIndex, double integrationTime, vtkPointData* seedData,
112  int numberOfTrackedUserData);
113 
118  static vtkLagrangianParticle* NewInstance(int numberOfVariables, vtkIdType seedId,
119  vtkIdType particleId, vtkIdType seedArrayTupleIndex, double integrationTime,
120  vtkPointData* seedData, int numberOfTrackedUserData, vtkIdType numberOfSteps = 0,
121  double previousIntegrationTime = 0);
122 
130 
135 
140 
142 
146  inline double* GetPrevEquationVariables() { return this->PrevEquationVariables.data(); }
148 
150 
162  inline double* GetEquationVariables() { return this->EquationVariables.data(); }
164 
166 
171  inline double* GetNextEquationVariables() { return this->NextEquationVariables.data(); }
173 
175 
180  inline double* GetPrevPosition() { return this->PrevEquationVariables.data(); }
182 
184 
189  inline double* GetPosition() { return this->EquationVariables.data(); }
191 
193 
198  inline double* GetNextPosition() { return this->NextEquationVariables.data(); }
200 
202 
207  inline double* GetPrevVelocity() { return this->PrevVelocity; }
209 
211 
216  inline double* GetVelocity() { return this->Velocity; }
218 
220 
225  inline double* GetNextVelocity() { return this->NextVelocity; }
227 
229 
234  inline double* GetPrevUserVariables() { return this->PrevUserVariables; }
236 
238 
243  inline double* GetUserVariables() { return this->UserVariables; }
245 
247 
252  inline double* GetNextUserVariables() { return this->NextUserVariables; }
254 
256 
260  inline std::vector<double>& GetPrevTrackedUserData() { return this->PrevTrackedUserData; }
262 
264 
274  inline std::vector<double>& GetTrackedUserData() { return this->TrackedUserData; }
276 
278 
282  inline std::vector<double>& GetNextTrackedUserData() { return this->NextTrackedUserData; }
284 
286 
293  inline vtkLagrangianThreadedData* GetThreadedData() { return this->ThreadedData; }
294  inline void SetThreadedData(vtkLagrangianThreadedData* threadedData)
295  {
296  this->ThreadedData = threadedData;
297  }
299 
306  virtual void MoveToNextPosition();
307 
311  virtual vtkIdType GetId();
312 
314 
318  virtual void SetParentId(vtkIdType parentId);
321 
326  virtual vtkIdType GetSeedId();
327 
331  virtual int GetNumberOfVariables();
332 
337 
342 
348 
353 
358 
362  void SetLastSurfaceCell(vtkDataSet* dataset, vtkIdType cellId);
363 
368 
370 
375  virtual void SetTermination(int termination);
376  virtual int GetTermination();
378 
380 
385  virtual void SetInteraction(int interaction);
386  virtual int GetInteraction();
388 
390 
393  virtual void SetUserFlag(int flag);
394  virtual int GetUserFlag();
396 
398 
403  virtual void SetPInsertPreviousPosition(bool val);
406 
408 
413  virtual void SetPManualShift(bool val);
414  virtual bool GetPManualShift();
416 
420  virtual double& GetStepTimeRef();
421 
425  virtual double GetIntegrationTime();
426 
430  virtual double GetPrevIntegrationTime();
431 
440  virtual void SetIntegrationTime(double time);
441 
446 
450  virtual void PrintSelf(ostream& os, vtkIndent indent);
451 
452 protected:
455  void operator=(const vtkLagrangianParticle&) = delete;
456 
457  std::vector<double> PrevEquationVariables;
458  double* PrevVelocity;
460 
461  std::vector<double> EquationVariables;
462  double* Velocity;
463  double* UserVariables;
464 
465  std::vector<double> NextEquationVariables;
466  double* NextVelocity;
468 
469  std::vector<double> PrevTrackedUserData;
470  std::vector<double> TrackedUserData;
471  std::vector<double> NextTrackedUserData;
472 
473  vtkLagrangianThreadedData* ThreadedData = nullptr;
474 
481 
482  double StepTime;
487  int UserFlag;
491 
492  // Parallel related flags
495 };
496 
497 #endif
498 // VTK-HeaderTest-Exclude: vtkLagrangianParticle.h
vtkLagrangianParticle::GetNextEquationVariables
double * GetNextEquationVariables()
Get a pointer to the particle variables array at its next position.
Definition: vtkLagrangianParticle.h:171
vtkLagrangianParticle::SetPManualShift
virtual void SetPManualShift(bool val)
Set/Get parallel specific flag, indication that the particle may be manually shifted after streaming.
vtkLagrangianParticle::PrevVelocity
double * PrevVelocity
Definition: vtkLagrangianParticle.h:458
vtkLagrangianParticle::GetSeedId
virtual vtkIdType GetSeedId()
Get the particle original seed index in the seed dataset.
vtkLagrangianParticle::NewInstance
static vtkLagrangianParticle * NewInstance(int numberOfVariables, vtkIdType seedId, vtkIdType particleId, vtkIdType seedArrayTupleIndex, double integrationTime, vtkPointData *seedData, int numberOfTrackedUserData, vtkIdType numberOfSteps=0, double previousIntegrationTime=0)
Constructor wrapper to create a partially integrated particle in the domain.
vtkLagrangianParticle::GetTrackedUserData
std::vector< double > & GetTrackedUserData()
Get a reference to TrackedUserData.
Definition: vtkLagrangianParticle.h:274
vtkLagrangianParticle::PrevIntegrationTime
double PrevIntegrationTime
Definition: vtkLagrangianParticle.h:484
vtkLagrangianParticle::SeedId
vtkIdType SeedId
Definition: vtkLagrangianParticle.h:477
vtkLagrangianParticle::PARTICLE_TERMINATION_OUT_OF_STEPS
@ PARTICLE_TERMINATION_OUT_OF_STEPS
Definition: vtkLagrangianParticle.h:74
vtkPointData
represent and manipulate point attribute data
Definition: vtkPointData.h:142
vtkLagrangianParticle::GetNextUserVariables
double * GetNextUserVariables()
Get a pointer to the next user variables.
Definition: vtkLagrangianParticle.h:252
vtkIdType
int vtkIdType
Definition: vtkType.h:332
vtkLagrangianParticle::NumberOfVariables
int NumberOfVariables
Definition: vtkLagrangianParticle.h:490
vtkLagrangianParticle::GetPrevPosition
double * GetPrevPosition()
Get a pointer to the previous particle position.
Definition: vtkLagrangianParticle.h:180
vtkLagrangianParticle::PARTICLE_TERMINATION_FLIGHT_TERMINATED
@ PARTICLE_TERMINATION_FLIGHT_TERMINATED
Definition: vtkLagrangianParticle.h:71
vtkLagrangianParticle::Id
vtkIdType Id
Definition: vtkLagrangianParticle.h:475
vtkLagrangianParticle::PARTICLE_TERMINATION_OUT_OF_TIME
@ PARTICLE_TERMINATION_OUT_OF_TIME
Definition: vtkLagrangianParticle.h:75
vtkLagrangianParticle::GetTermination
virtual int GetTermination()
Set/Get particle termination.
vtkLagrangianParticle::SetParentId
virtual void SetParentId(vtkIdType parentId)
Set/Get parent particle id.
vtkLagrangianParticle::GetEquationVariables
double * GetEquationVariables()
Get a pointer to the particle variables array.
Definition: vtkLagrangianParticle.h:162
vtkLagrangianParticle::vtkLagrangianParticle
vtkLagrangianParticle()=delete
vtkLagrangianParticle::LastSurfaceCellId
vtkIdType LastSurfaceCellId
Definition: vtkLagrangianParticle.h:489
vtkLagrangianParticle::GetIntegrationTime
virtual double GetIntegrationTime()
Get the integration time.
vtkLagrangianParticle::PARTICLE_TERMINATION_OUT_OF_DOMAIN
@ PARTICLE_TERMINATION_OUT_OF_DOMAIN
Definition: vtkLagrangianParticle.h:73
vtkLagrangianParticle::GetLastSurfaceCellId
vtkIdType GetLastSurfaceCellId()
Get the last intersected surface cell id.
vtkLagrangianParticle::PrevTrackedUserData
std::vector< double > PrevTrackedUserData
Definition: vtkLagrangianParticle.h:469
vtkLagrangianParticle::EquationVariables
std::vector< double > EquationVariables
Definition: vtkLagrangianParticle.h:461
vtkLagrangianParticle::PARTICLE_TERMINATION_TRANSFERRED
@ PARTICLE_TERMINATION_TRANSFERRED
Definition: vtkLagrangianParticle.h:76
vtkLagrangianParticle::GetPrevTrackedUserData
std::vector< double > & GetPrevTrackedUserData()
Get a reference to PrevTrackedUserData See GetTrackedUserData for an explanation on how to use it.
Definition: vtkLagrangianParticle.h:260
vtkLagrangianParticle::GetNumberOfSteps
virtual vtkIdType GetNumberOfSteps()
Get particle current number of steps.
vtkLagrangianParticle::GetPrevEquationVariables
double * GetPrevEquationVariables()
Get a pointer to Particle variables at its previous position See GetEquationVariables for content des...
Definition: vtkLagrangianParticle.h:146
vtkLagrangianParticle::UserVariables
double * UserVariables
Definition: vtkLagrangianParticle.h:463
vtkX3D::time
@ time
Definition: vtkX3D.h:503
vtkLagrangianParticle::NextEquationVariables
std::vector< double > NextEquationVariables
Definition: vtkLagrangianParticle.h:465
vtkLagrangianParticle::MoveToNextPosition
virtual void MoveToNextPosition()
Move the particle to its next position by putting next equation variable to equation variable and cle...
vtkLagrangianParticle::GetNumberOfVariables
virtual int GetNumberOfVariables()
Get the number of variables used to initialize EquationVariables.
vtkLagrangianParticle::GetNextPosition
double * GetNextPosition()
Get a pointer to the next particle position.
Definition: vtkLagrangianParticle.h:198
vtkLagrangianParticle::GetNextVelocity
double * GetNextVelocity()
Get a pointer to the next particle velocity.
Definition: vtkLagrangianParticle.h:225
vtkLagrangianParticle::NewParticle
vtkLagrangianParticle * NewParticle(vtkIdType particleId)
method to create a particle from a parent particle.
vtkLagrangianParticle::SetTermination
virtual void SetTermination(int termination)
Set/Get particle termination.
vtkLagrangianParticle::Velocity
double * Velocity
Definition: vtkLagrangianParticle.h:462
vtkLagrangianParticle::GetPositionVectorMagnitude
double GetPositionVectorMagnitude()
Compute and return the position vector magnitude.
vtkLagrangianParticle::SetIntegrationTime
virtual void SetIntegrationTime(double time)
Convenience setter for integration time, do not use unless manual particle shifting One using this me...
vtkLagrangianParticle::SetLastSurfaceCell
void SetLastSurfaceCell(vtkDataSet *dataset, vtkIdType cellId)
Set the last surface dataset and last surface cell id.
vtkLagrangianParticle::SurfaceInteraction
SurfaceInteraction
An enum to inform about a surface interaction SURFACE_INTERACTION_NO_INTERACTION = 0,...
Definition: vtkLagrangianParticle.h:92
vtkLagrangianParticle::GetId
virtual vtkIdType GetId()
Get particle id.
vtkLagrangianParticle::GetVelocity
double * GetVelocity()
Get a pointer to the particle velocity.
Definition: vtkLagrangianParticle.h:216
vtkLagrangianParticle::GetPosition
double * GetPosition()
Get a pointer to the particle position.
Definition: vtkLagrangianParticle.h:189
vtkLagrangianParticle::operator=
void operator=(const vtkLagrangianParticle &)=delete
vtkLagrangianParticle::GetNextTrackedUserData
std::vector< double > & GetNextTrackedUserData()
Get a reference to NextTrackedUserData See GetTrackedUserData for an explanation on how to use it.
Definition: vtkLagrangianParticle.h:282
vtkLagrangianParticle::PrevUserVariables
double * PrevUserVariables
Definition: vtkLagrangianParticle.h:459
vtkLagrangianParticle::ParentId
vtkIdType ParentId
Definition: vtkLagrangianParticle.h:476
vtkLagrangianParticle::TrackedUserData
std::vector< double > TrackedUserData
Definition: vtkLagrangianParticle.h:470
vtkLagrangianParticle::GetSeedArrayTupleIndex
virtual vtkIdType GetSeedArrayTupleIndex() const
Get the index of the tuple for this particle in the point data returned by GetSeedData method.
vtkLagrangianParticle::Interaction
int Interaction
Definition: vtkLagrangianParticle.h:486
vtkLagrangianParticle::SeedData
vtkPointData * SeedData
Definition: vtkLagrangianParticle.h:480
vtkLagrangianParticle::UserFlag
int UserFlag
Definition: vtkLagrangianParticle.h:487
vtkLagrangianParticle::GetNumberOfUserVariables
virtual int GetNumberOfUserVariables()
Get the number of variables specific to the user.
vtkLagrangianParticle::~vtkLagrangianParticle
virtual ~vtkLagrangianParticle()
Destructor.
vtkLagrangianParticle::PARTICLE_TERMINATION_SURF_TERMINATED
@ PARTICLE_TERMINATION_SURF_TERMINATED
Definition: vtkLagrangianParticle.h:70
vtkLagrangianParticle::GetPManualShift
virtual bool GetPManualShift()
Set/Get parallel specific flag, indication that the particle may be manually shifted after streaming.
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:113
vtkLagrangianParticle::SURFACE_INTERACTION_BREAK
@ SURFACE_INTERACTION_BREAK
Definition: vtkLagrangianParticle.h:95
vtkLagrangianThreadedData
struct to hold a user data
Definition: vtkLagrangianThreadedData.h:38
vtkLagrangianParticle::GetParentId
virtual vtkIdType GetParentId()
Set/Get parent particle id.
vtkLagrangianParticle::PARTICLE_TERMINATION_SURF_BREAK
@ PARTICLE_TERMINATION_SURF_BREAK
Definition: vtkLagrangianParticle.h:72
vtkLagrangianParticle::CloneParticle
vtkLagrangianParticle * CloneParticle()
method to create an exact clone of a particle.
vtkLagrangianParticle::NextUserVariables
double * NextUserVariables
Definition: vtkLagrangianParticle.h:467
vtkIdList
list of point or cell ids
Definition: vtkIdList.h:140
vtkLagrangianParticle::SetPInsertPreviousPosition
virtual void SetPInsertPreviousPosition(bool val)
Set/Get parallel specific flag, indication to insert or not the previous position after streaming.
vtkLagrangianParticle::StepTime
double StepTime
Definition: vtkLagrangianParticle.h:482
vtkLagrangianParticle::PrevEquationVariables
std::vector< double > PrevEquationVariables
Definition: vtkLagrangianParticle.h:457
vtkLagrangianParticle::NextVelocity
double * NextVelocity
Definition: vtkLagrangianParticle.h:466
vtkLagrangianParticle::SetUserFlag
virtual void SetUserFlag(int flag)
Set/Get user flag.
vtkLagrangianParticle::NumberOfSteps
vtkIdType NumberOfSteps
Definition: vtkLagrangianParticle.h:478
vtkLagrangianParticle::PInsertPreviousPosition
bool PInsertPreviousPosition
Definition: vtkLagrangianParticle.h:493
vtkLagrangianParticle::GetUserVariables
double * GetUserVariables()
Get a pointer to the user variables.
Definition: vtkLagrangianParticle.h:243
vtkLagrangianParticle::Termination
int Termination
Definition: vtkLagrangianParticle.h:485
vtkAbstractCellLocator
an abstract base class for locators which find cells
Definition: vtkAbstractCellLocator.h:49
vtkLagrangianParticle::SetThreadedData
void SetThreadedData(vtkLagrangianThreadedData *threadedData)
Get/Set a pointer to a vtkLagrangianThreadedData that is considered to be local to the thread.
Definition: vtkLagrangianParticle.h:294
vtkLagrangianParticle::SURFACE_INTERACTION_TERMINATED
@ SURFACE_INTERACTION_TERMINATED
Definition: vtkLagrangianParticle.h:94
vtkLagrangianParticle
Basis class for Lagrangian particles.
Definition: vtkLagrangianParticle.h:47
vtkLagrangianParticle::GetPrevUserVariables
double * GetPrevUserVariables()
Get a pointer to the previous user variables.
Definition: vtkLagrangianParticle.h:234
vtkLagrangianParticle::LastSurfaceDataSet
vtkDataSet * LastSurfaceDataSet
Definition: vtkLagrangianParticle.h:488
vtkDataSet
abstract class to specify dataset behavior
Definition: vtkDataSet.h:166
vtkLagrangianParticle::PrintSelf
virtual void PrintSelf(ostream &os, vtkIndent indent)
Print information about the particle.
vtkLagrangianParticle::GetUserFlag
virtual int GetUserFlag()
Set/Get user flag.
vtkLagrangianParticle::GetPInsertPreviousPosition
virtual bool GetPInsertPreviousPosition()
Set/Get parallel specific flag, indication to insert or not the previous position after streaming.
vtkLagrangianParticle::SetInteraction
virtual void SetInteraction(int interaction)
Set/Get particle interaction.
vtkLagrangianParticle::GetLastSurfaceDataSet
vtkDataSet * GetLastSurfaceDataSet()
Get the dataset containing the last intersected surface cell.
vtkNew.h
vtkLagrangianParticle::ParticleTermination
ParticleTermination
An enum to inform about a reason for termination PARTICLE_TERMINATION_NOT_TERMINATED = 0,...
Definition: vtkLagrangianParticle.h:68
vtkLagrangianParticle::IntegrationTime
double IntegrationTime
Definition: vtkLagrangianParticle.h:483
vtkGenericCell
provides thread-safe access to cells
Definition: vtkGenericCell.h:116
vtkLagrangianParticle::GetPrevVelocity
double * GetPrevVelocity()
Get a pointer to the previous particle velocity.
Definition: vtkLagrangianParticle.h:207
vtkLagrangianParticle::SURFACE_INTERACTION_PASS
@ SURFACE_INTERACTION_PASS
Definition: vtkLagrangianParticle.h:97
vtkLagrangianParticle::GetPrevIntegrationTime
virtual double GetPrevIntegrationTime()
Get the integration time at previous position.
vtkLagrangianParticle::GetInteraction
virtual int GetInteraction()
Set/Get particle interaction.
vtkLagrangianParticle::vtkLagrangianParticle
vtkLagrangianParticle(const vtkLagrangianParticle &)=delete
vtkLagrangianParticle::GetThreadedData
vtkLagrangianThreadedData * GetThreadedData()
Get/Set a pointer to a vtkLagrangianThreadedData that is considered to be local to the thread.
Definition: vtkLagrangianParticle.h:293
vtkLagrangianParticle::GetStepTimeRef
virtual double & GetStepTimeRef()
Get reference to step time of this particle.
vtkLagrangianParticle::NextTrackedUserData
std::vector< double > NextTrackedUserData
Definition: vtkLagrangianParticle.h:471
vtkLagrangianParticle::GetSeedData
virtual vtkPointData * GetSeedData()
Get the particle seed data, for reading only.
vtkLagrangianParticle::PManualShift
bool PManualShift
Definition: vtkLagrangianParticle.h:494
vtkLagrangianParticle::SURFACE_INTERACTION_BOUNCE
@ SURFACE_INTERACTION_BOUNCE
Definition: vtkLagrangianParticle.h:96
vtkLagrangianParticle::SeedArrayTupleIndex
vtkIdType SeedArrayTupleIndex
Definition: vtkLagrangianParticle.h:479
vtkLagrangianParticle::vtkLagrangianParticle
vtkLagrangianParticle(int numberOfVariables, vtkIdType seedId, vtkIdType particleId, vtkIdType seedArrayTupleIndex, double integrationTime, vtkPointData *seedData, int numberOfTrackedUserData)
Constructor to create a particle from a seed.
vtkSystemIncludes.h
vtkBilinearQuadIntersection
Class to perform non planar quad intersection.
Definition: vtkBilinearQuadIntersection.h:31