VTK  9.1.0
vtkPParticleTracerBase.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkParticleTracerBase.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=========================================================================*/
27#ifndef vtkPParticleTracerBase_h
28#define vtkPParticleTracerBase_h
29
31#include "vtkSmartPointer.h" // For protected ivars.
32
33#include <vector> // STL Header
34
35#include "vtkFiltersParallelFlowPathsModule.h" // For export macro
36
37class VTKFILTERSPARALLELFLOWPATHS_EXPORT vtkPParticleTracerBase : public vtkParticleTracerBase
38{
39public:
41 void PrintSelf(ostream& os, vtkIndent indent) override;
42
44
48 virtual void SetController(vtkMultiProcessController* controller);
49 vtkGetObjectMacro(Controller, vtkMultiProcessController);
51
52protected:
54 {
58 };
59
60 typedef std::vector<RemoteParticleInfo> RemoteParticleVector;
61
64
65 virtual int RequestUpdateExtent(vtkInformation* request, vtkInformationVector** inputVector,
66 vtkInformationVector* outputVector) override;
67
68 //
69
70 vtkPolyData* Execute(vtkInformationVector** inputVector) override;
73
81 void AssignSeedsToProcessors(double time, vtkDataSet* source, int sourceID, int ptId,
83 int& localAssignedCount) override;
84
90
97
99
105 bool IsPointDataValid(vtkDataObject* input) override;
106
107 //
108
109 //
110
111 // MPI controller needed when running in parallel
113
114 // List used for transmitting between processors during parallel operation
116
117 RemoteParticleVector Tail; // this is to receive the "tails" of traces from other processes
118private:
120 void operator=(const vtkPParticleTracerBase&) = delete;
121};
122#endif
general representation of visualization data
abstract class to specify dataset behavior
Definition: vtkDataSet.h:166
a simple class to control print indentation
Definition: vtkIndent.h:113
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Multiprocessing communication superclass.
virtual int RequestUpdateExtent(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override
This is called by the superclass.
std::vector< RemoteParticleInfo > RemoteParticleVector
RemoteParticleVector MPISendList
bool SendReceiveParticles(RemoteParticleVector &outofdomain, RemoteParticleVector &received)
this is used during classification of seed points and also between iterations of the main loop as par...
bool SendParticleToAnotherProcess(vtkParticleTracerBaseNamespace::ParticleInformation &info, vtkParticleTracerBaseNamespace::ParticleInformation &previous, vtkPointData *) override
vtkMultiProcessController * Controller
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
bool UpdateParticleListFromOtherProcesses() override
this is used during classification of seed points and also between iterations of the main loop as par...
vtkPolyData * Execute(vtkInformationVector **inputVector) override
void AssignUniqueIds(vtkParticleTracerBaseNamespace::ParticleVector &localSeedPoints) override
give each one a unique ID.
virtual void SetController(vtkMultiProcessController *controller)
Set/Get the controller used when sending particles between processes The controller must be an instan...
bool IsPointDataValid(vtkDataObject *input) override
Method that checks that the input arrays are ordered the same on all data sets.
void AssignSeedsToProcessors(double time, vtkDataSet *source, int sourceID, int ptId, vtkParticleTracerBaseNamespace::ParticleVector &localSeedPoints, int &localAssignedCount) override
Before starting the particle trace, classify all the injection/seed points according to which process...
A particle tracer for vector fields.
represent and manipulate point attribute data
Definition: vtkPointData.h:142
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:195
std::vector< ParticleInformation > ParticleVector
@ info
Definition: vtkX3D.h:382
@ previous
Definition: vtkX3D.h:455
@ time
Definition: vtkX3D.h:503
vtkParticleTracerBaseNamespace::ParticleInformation Current
vtkParticleTracerBaseNamespace::ParticleInformation Previous
vtkSmartPointer< vtkPointData > PreviousPD
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)