VTK  9.2.5
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=========================================================================*/
32#ifndef vtkLagrangianParticle_h
33#define vtkLagrangianParticle_h
34
35#include "vtkFiltersFlowPathsModule.h" // For export macro
36#include "vtkNew.h" // For vtkNew
37#include "vtkSystemIncludes.h" // For PrintSelf signature and vtkType
38
39#include <vector>
40
43class vtkDataSet;
44class vtkGenericCell;
45class vtkIdList;
46class vtkPointData;
48
49class VTKFILTERSFLOWPATHS_EXPORT vtkLagrangianParticle
50{
51public:
71 {
72 PARTICLE_TERMINATION_NOT_TERMINATED = 0,
80 PARTICLE_TERMINATION_ABORTED
81 } ParticleTermination;
82
94 typedef enum SurfaceInteraction
95 {
96 SURFACE_INTERACTION_NO_INTERACTION = 0,
101 SURFACE_INTERACTION_OTHER
102 } SurfaceInteraction;
103
113 vtkLagrangianParticle(int numberOfVariables, vtkIdType seedId, vtkIdType particleId,
114 vtkIdType seedArrayTupleIndex, double integrationTime, vtkPointData* seedData,
115 int numberOfTrackedUserData);
116
121 static vtkLagrangianParticle* NewInstance(int numberOfVariables, vtkIdType seedId,
122 vtkIdType particleId, vtkIdType seedArrayTupleIndex, double integrationTime,
123 vtkPointData* seedData, int numberOfTrackedUserData, vtkIdType numberOfSteps = 0,
124 double previousIntegrationTime = 0);
125
133
138
143
145
149 inline double* GetPrevEquationVariables() { return this->PrevEquationVariables.data(); }
151
153
165 inline double* GetEquationVariables() { return this->EquationVariables.data(); }
167
169
174 inline double* GetNextEquationVariables() { return this->NextEquationVariables.data(); }
176
178
183 inline double* GetPrevPosition() { return this->PrevEquationVariables.data(); }
185
187
192 inline double* GetPosition() { return this->EquationVariables.data(); }
194
196
201 inline double* GetNextPosition() { return this->NextEquationVariables.data(); }
203
205
210 inline double* GetPrevVelocity() { return this->PrevVelocity; }
212
214
219 inline double* GetVelocity() { return this->Velocity; }
221
223
228 inline double* GetNextVelocity() { return this->NextVelocity; }
230
232
237 inline double* GetPrevUserVariables() { return this->PrevUserVariables; }
239
241
246 inline double* GetUserVariables() { return this->UserVariables; }
248
250
255 inline double* GetNextUserVariables() { return this->NextUserVariables; }
257
259
263 inline std::vector<double>& GetPrevTrackedUserData() { return this->PrevTrackedUserData; }
265
267
277 inline std::vector<double>& GetTrackedUserData() { return this->TrackedUserData; }
279
281
285 inline std::vector<double>& GetNextTrackedUserData() { return this->NextTrackedUserData; }
287
289
296 inline vtkLagrangianThreadedData* GetThreadedData() { return this->ThreadedData; }
298 {
299 this->ThreadedData = threadedData;
300 }
302
309 virtual void MoveToNextPosition();
310
314 virtual vtkIdType GetId();
315
317
321 virtual void SetParentId(vtkIdType parentId);
324
330
334 virtual int GetNumberOfVariables();
335
340
345
351
356
361
366
371
373
378 virtual void SetTermination(int termination);
379 virtual int GetTermination();
381
383
388 virtual void SetInteraction(int interaction);
389 virtual int GetInteraction();
391
393
396 virtual void SetUserFlag(int flag);
397 virtual int GetUserFlag();
399
401
406 virtual void SetPInsertPreviousPosition(bool val);
409
411
416 virtual void SetPManualShift(bool val);
417 virtual bool GetPManualShift();
419
423 virtual double& GetStepTimeRef();
424
428 virtual double GetIntegrationTime();
429
433 virtual double GetPrevIntegrationTime();
434
443 virtual void SetIntegrationTime(double time);
444
449
453 virtual void PrintSelf(ostream& os, vtkIndent indent);
454
455protected:
458 void operator=(const vtkLagrangianParticle&) = delete;
459
460 std::vector<double> PrevEquationVariables;
463
464 std::vector<double> EquationVariables;
465 double* Velocity;
467
468 std::vector<double> NextEquationVariables;
471
472 std::vector<double> PrevTrackedUserData;
473 std::vector<double> TrackedUserData;
474 std::vector<double> NextTrackedUserData;
475
476 vtkLagrangianThreadedData* ThreadedData = nullptr;
477
484
485 double StepTime;
494
495 // Parallel related flags
498};
499
500#endif
501// VTK-HeaderTest-Exclude: vtkLagrangianParticle.h
an abstract base class for locators which find cells
Class to perform non planar quad intersection.
abstract class to specify dataset behavior
Definition: vtkDataSet.h:63
provides thread-safe access to cells
list of point or cell ids
Definition: vtkIdList.h:34
a simple class to control print indentation
Definition: vtkIndent.h:40
Basis class for Lagrangian particles.
vtkLagrangianParticle * NewParticle(vtkIdType particleId)
method to create a particle from a parent particle.
std::vector< double > TrackedUserData
vtkLagrangianParticle * CloneParticle()
method to create an exact clone of a particle.
double * GetUserVariables()
Get a pointer to the user variables.
std::vector< double > PrevTrackedUserData
virtual double GetPrevIntegrationTime()
Get the integration time at previous position.
virtual vtkPointData * GetSeedData()
Get the particle seed data, for reading only.
virtual void MoveToNextPosition()
Move the particle to its next position by putting next equation variable to equation variable and cle...
double * GetNextVelocity()
Get a pointer to the next particle velocity.
virtual int GetUserFlag()
Set/Get user flag.
virtual int GetNumberOfVariables()
Get the number of variables used to initialize EquationVariables.
vtkIdType GetLastSurfaceCellId()
Get the last intersected surface cell id.
double * GetNextEquationVariables()
Get a pointer to the particle variables array at its next position.
std::vector< double > & GetNextTrackedUserData()
Get a reference to NextTrackedUserData See GetTrackedUserData for an explanation on how to use it.
void SetThreadedData(vtkLagrangianThreadedData *threadedData)
Get/Set a pointer to a vtkLagrangianThreadedData that is considered to be local to the thread.
virtual vtkIdType GetSeedArrayTupleIndex() const
Get the index of the tuple for this particle in the point data returned by GetSeedData method.
virtual void SetInteraction(int interaction)
Set/Get particle interaction.
double * GetPrevVelocity()
Get a pointer to the previous particle velocity.
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...
ParticleTermination
An enum to inform about a reason for termination PARTICLE_TERMINATION_NOT_TERMINATED = 0,...
double * GetEquationVariables()
Get a pointer to the particle variables array.
vtkLagrangianParticle(const vtkLagrangianParticle &)=delete
void operator=(const vtkLagrangianParticle &)=delete
virtual bool GetPInsertPreviousPosition()
Set/Get parallel specific flag, indication to insert or not the previous position after streaming.
virtual vtkIdType GetId()
Get particle id.
std::vector< double > EquationVariables
virtual void SetUserFlag(int flag)
Set/Get user flag.
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.
virtual vtkIdType GetParentId()
Set/Get parent particle id.
vtkLagrangianThreadedData * GetThreadedData()
Get/Set a pointer to a vtkLagrangianThreadedData that is considered to be local to the thread.
double * GetPosition()
Get a pointer to the particle position.
double * GetPrevUserVariables()
Get a pointer to the previous user variables.
std::vector< double > & GetTrackedUserData()
Get a reference to TrackedUserData.
vtkDataSet * GetLastSurfaceDataSet()
Get the dataset containing the last intersected surface cell.
std::vector< double > & GetPrevTrackedUserData()
Get a reference to PrevTrackedUserData See GetTrackedUserData for an explanation on how to use it.
double * GetNextUserVariables()
Get a pointer to the next user variables.
virtual double & GetStepTimeRef()
Get reference to step time of this particle.
SurfaceInteraction
An enum to inform about a surface interaction SURFACE_INTERACTION_NO_INTERACTION = 0,...
vtkLagrangianParticle(int numberOfVariables, vtkIdType seedId, vtkIdType particleId, vtkIdType seedArrayTupleIndex, double integrationTime, vtkPointData *seedData, int numberOfTrackedUserData)
Constructor to create a particle from a seed.
void SetLastSurfaceCell(vtkDataSet *dataset, vtkIdType cellId)
Set the last surface dataset and last surface cell id.
std::vector< double > PrevEquationVariables
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.
virtual double GetIntegrationTime()
Get the integration time.
virtual bool GetPManualShift()
Set/Get parallel specific flag, indication that the particle may be manually shifted after streaming.
virtual int GetInteraction()
Set/Get particle interaction.
std::vector< double > NextEquationVariables
double * GetPrevEquationVariables()
Get a pointer to Particle variables at its previous position See GetEquationVariables for content des...
virtual vtkIdType GetNumberOfSteps()
Get particle current number of steps.
double * GetPrevPosition()
Get a pointer to the previous particle position.
double * GetNextPosition()
Get a pointer to the next particle position.
virtual void SetParentId(vtkIdType parentId)
Set/Get parent particle id.
double * GetVelocity()
Get a pointer to the particle velocity.
virtual vtkIdType GetSeedId()
Get the particle original seed index in the seed dataset.
virtual void PrintSelf(ostream &os, vtkIndent indent)
Print information about the particle.
virtual int GetTermination()
Set/Get particle termination.
represent and manipulate point attribute data
Definition: vtkPointData.h:42
struct to hold a user data
int vtkIdType
Definition: vtkType.h:332