VTK  9.2.6
vtkPLagrangianParticleTracker.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkPLagrangianParticleTracker.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=========================================================================*/
37#ifndef vtkPLagrangianParticleTracker_h
38#define vtkPLagrangianParticleTracker_h
39
40#include "vtkFiltersParallelFlowPathsModule.h" // For export macro
42#include "vtkNew.h" // for ivars
43
44#include <map> // for std::map
45
46class ParticleFeedManager;
47class ParticleIdManager;
48class ParticleStreamManager;
52
53class VTKFILTERSPARALLELFLOWPATHS_EXPORT vtkPLagrangianParticleTracker
55{
56public:
58 void PrintSelf(ostream& os, vtkIndent indent) override;
60
61protected:
64
66
67 void GenerateParticles(const vtkBoundingBox* bounds, vtkDataSet* seeds,
68 vtkDataArray* initialVelocities, vtkDataArray* initialIntegrationTimes, vtkPointData* seedData,
69 int nVar, std::queue<vtkLagrangianParticle*>& particles) override;
70
85 void GetParticleFeed(std::queue<vtkLagrangianParticle*>& particleQueue) override;
87 std::queue<vtkLagrangianParticle*>& particleQueue, vtkPolyData* particlePathsOutput,
88 vtkPolyLine* particlePath, vtkDataObject* interactionOutput) override;
89
93 void ReceiveParticles(std::queue<vtkLagrangianParticle*>& particleQueue);
94
99
100 bool FinalizeOutputs(vtkPolyData* particlePathsOutput, vtkDataObject* interactionOutput) override;
101
102 bool UpdateSurfaceCacheIfNeeded(vtkDataObject*& surfaces) override;
103
109
115 void DeleteParticle(vtkLagrangianParticle* particle) override;
116
120 vtkGetMacro(ParticleCounter, vtkIdType);
121
123
127 ParticleStreamManager* StreamManager;
129 ParticleFeedManager* FeedManager;
130
133
134 std::map<vtkIdType, vtkLagrangianParticle*> OutOfDomainParticleMap;
135
136private:
138 void operator=(const vtkPLagrangianParticleTracker&) = delete;
139};
140#endif
Fast, simple class for representing and operating on 3D bounds.
abstract superclass for arrays of numeric data
general representation of visualization data
abstract class to specify dataset behavior
Definition vtkDataSet.h:63
a simple class to control print indentation
Definition vtkIndent.h:40
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Integrate a set of ordinary differential equations (initial value problem) in time.
Filter to inject and track particles in a flow.
Basis class for Lagrangian particles.
Process communication using MPI.
Composite dataset that organizes datasets into blocks.
Allocate and hold a VTK object.
Definition vtkNew.h:62
parallel Lagrangian particle tracker
int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
vtkIdType GetNewParticleId() override
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 GenerateParticles(const vtkBoundingBox *bounds, vtkDataSet *seeds, vtkDataArray *initialVelocities, vtkDataArray *initialIntegrationTimes, vtkPointData *seedData, int nVar, std::queue< vtkLagrangianParticle * > &particles) override
~vtkPLagrangianParticleTracker() override
void SetController(vtkMPIController *)
int Integrate(vtkInitialValueProblemSolver *integrator, vtkLagrangianParticle *, std::queue< vtkLagrangianParticle * > &particleQueue, vtkPolyData *particlePathsOutput, vtkPolyLine *particlePath, vtkDataObject *interactionOutput) override
This method is thread safe.
void ReceiveTransferredParticleIds()
Non threadsafe methods to receive transferred particle ids.
void DeleteParticle(vtkLagrangianParticle *particle) override
Delete a particle if not out of domain If out of domain, it will be stored and deleted later in case ...
void GetParticleFeed(std::queue< vtkLagrangianParticle * > &particleQueue) override
Flags description : Worker flag working : the worker has at least one particle in it's queue and is c...
static vtkPLagrangianParticleTracker * New()
vtkNew< vtkUnstructuredGrid > TmpSurfaceInput
bool UpdateSurfaceCacheIfNeeded(vtkDataObject *&surfaces) override
bool FinalizeOutputs(vtkPolyData *particlePathsOutput, vtkDataObject *interactionOutput) override
std::map< vtkIdType, vtkLagrangianParticle * > OutOfDomainParticleMap
void ReceiveParticles(std::queue< vtkLagrangianParticle * > &particleQueue)
Non threadsafe methods to receive particles.
vtkNew< vtkMultiBlockDataSet > TmpSurfaceInputMB
represent and manipulate point attribute data
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition vtkPolyData.h:91
cell represents a set of 1D lines
Definition vtkPolyLine.h:40
dataset represents arbitrary combinations of all possible cell types
int vtkIdType
Definition vtkType.h:332