VTK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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 =========================================================================*/
26 #ifndef __vtkPParticleTracerBase_h
27 #define __vtkPParticleTracerBase_h
28 
29 #include "vtkSmartPointer.h" // For protected ivars.
30 #include "vtkParticleTracerBase.h"
31 
32 //BTX
33 #include <vector> // STL Header
34 #include <list> // STL Header
35 //ETX
36 
37 #include "vtkFiltersParallelFlowPathsModule.h" // For export macro
38 
39 class VTKFILTERSPARALLELFLOWPATHS_EXPORT vtkPParticleTracerBase : public vtkParticleTracerBase
40 {
41 public:
42 
44  void PrintSelf(ostream& os, vtkIndent indent);
45 
46 
48 
50  virtual void SetController(vtkMultiProcessController* controller);
51  vtkGetObjectMacro(Controller, vtkMultiProcessController);
53 
54  protected:
56  {
59  vtkSmartPointer<vtkPointData> PreviousPD;
60  };
61 
62  typedef std::vector<RemoteParticleInfo> RemoteParticleVector;
63 
64 
67 
68  virtual int RequestUpdateExtent(vtkInformation* request,
69  vtkInformationVector** inputVector,
70  vtkInformationVector* outputVector);
71 
72  //
73  // Generate output
74  //
75  virtual int RequestData(vtkInformation* request,
76  vtkInformationVector** inputVector,
77  vtkInformationVector* outputVector);
78 
79 //
80 //BTX
81 
82  virtual vtkPolyData* Execute(vtkInformationVector** inputVector);
85  vtkPointData*);
86 
88 
92  virtual void AssignSeedsToProcessors(double time,
93  vtkDataSet *source, int sourceID, int ptId,
95  int &LocalAssignedCount);
97 
99 
101  virtual void AssignUniqueIds(
104 
108  virtual void SendReceiveParticles(RemoteParticleVector &outofdomain, RemoteParticleVector &received);
109 
111 
115  virtual bool IsPointDataValid(vtkDataObject* input);
116 
117 
118 //
119 //ETX
120 //
121 
122  // MPI controller needed when running in parallel
123  vtkMultiProcessController* Controller;
124 
125  // List used for transmitting between processors during parallel operation
127 
128  int Rank;
129  int NumProcs;
130  RemoteParticleVector Tail; //this is to receive the "tails" of traces from other processes
131 private:
132  vtkPParticleTracerBase(const vtkPParticleTracerBase&); // Not implemented.
133  void operator=(const vtkPParticleTracerBase&); // Not implemented.
134 
135 };
136 
137 #endif
std::vector< RemoteParticleInfo > RemoteParticleVector
virtual void UpdateParticleListFromOtherProcesses()
virtual int RequestUpdateExtent(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
virtual int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
vtkParticleTracerBaseNamespace::ParticleInformation Current
virtual vtkPolyData * Execute(vtkInformationVector **inputVector)
void PrintSelf(ostream &os, vtkIndent indent)
virtual bool SendParticleToAnotherProcess(vtkParticleTracerBaseNamespace::ParticleInformation &, vtkParticleTracerBaseNamespace::ParticleInformation &, vtkPointData *)
virtual void AssignUniqueIds(vtkParticleTracerBaseNamespace::ParticleVector &LocalSeedPoints)
vtkParticleTracerBaseNamespace::ParticleInformation Previous
vtkSmartPointer< vtkPointData > PreviousPD
vtkMultiProcessController * Controller
virtual bool IsPointDataValid(vtkDataObject *input)
RemoteParticleVector MPISendList
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
std::vector< ParticleInformation > ParticleVector
virtual void AssignSeedsToProcessors(double time, vtkDataSet *source, int sourceID, int ptId, vtkParticleTracerBaseNamespace::ParticleVector &LocalSeedPoints, int &LocalAssignedCount)
A particle tracer for vector fields.