VTK  9.0.1
vtkDistributedDataFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkDistributedDataFilter.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 =========================================================================*/
15 /*----------------------------------------------------------------------------
16  Copyright (c) Sandia Corporation
17  See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
18 ----------------------------------------------------------------------------*/
19 
35 #ifndef vtkDistributedDataFilter_h
36 #define vtkDistributedDataFilter_h
37 
38 #include "vtkDataObjectAlgorithm.h"
39 #include "vtkFiltersParallelModule.h" // For export macro
40 
41 #include <vector> // for vector
42 
43 class vtkBSPCuts;
45 class vtkPKdTree;
46 
47 class VTKFILTERSPARALLEL_EXPORT vtkDistributedDataFilter : public vtkDataObjectAlgorithm
48 {
49 public:
51 
52  void PrintSelf(ostream& os, vtkIndent indent) override;
53 
54  static vtkDistributedDataFilter* New();
55 
57 
60  void SetController(vtkMultiProcessController* c);
61  vtkGetObjectMacro(Controller, vtkMultiProcessController);
63 
74  vtkPKdTree* GetKdtree();
75 
93  vtkBooleanMacro(RetainKdtree, int);
94  vtkGetMacro(RetainKdtree, int);
95  vtkSetMacro(RetainKdtree, int);
96 
108  vtkBooleanMacro(IncludeAllIntersectingCells, int);
109  vtkGetMacro(IncludeAllIntersectingCells, int);
110  vtkSetMacro(IncludeAllIntersectingCells, int);
111 
118  vtkBooleanMacro(ClipCells, int);
119  vtkGetMacro(ClipCells, int);
120  vtkSetMacro(ClipCells, int);
121 
123  {
124  ASSIGN_TO_ONE_REGION = 0,
125  ASSIGN_TO_ALL_INTERSECTING_REGIONS = 1,
126  SPLIT_BOUNDARY_CELLS = 2
127  };
128 
130 
133  void SetBoundaryMode(int mode);
135  {
136  this->SetBoundaryMode(vtkDistributedDataFilter::ASSIGN_TO_ONE_REGION);
137  }
139  {
141  }
143  {
144  this->SetBoundaryMode(vtkDistributedDataFilter::SPLIT_BOUNDARY_CELLS);
145  }
146  int GetBoundaryMode();
148 
153 
164  vtkBooleanMacro(UseMinimalMemory, int);
165  vtkGetMacro(UseMinimalMemory, int);
166  vtkSetMacro(UseMinimalMemory, int);
167 
172  vtkGetMacro(MinimumGhostLevel, int);
173  vtkSetMacro(MinimumGhostLevel, int);
174 
179  vtkBooleanMacro(Timing, int);
180  vtkSetMacro(Timing, int);
181  vtkGetMacro(Timing, int);
182 
195  vtkBSPCuts* GetCuts() { return this->UserCuts; }
196  void SetCuts(vtkBSPCuts* cuts);
197 
207  void SetUserRegionAssignments(const int* map, int numRegions);
208 
209 protected:
211  ~vtkDistributedDataFilter() override;
212 
217  virtual int RequestInformation(
219  virtual int FillInputPortInformation(int port, vtkInformation* info) override;
220 
226  virtual int RequestDataObject(
228 
231 
233  int MyId;
234 
235  int* Target;
236  int* Source;
237 
240 
241  // User-adjustable minimum number of ghost levels.
243 
244  // Actual number of ghost levels used during execution.
246 
250 
251  int Timing;
252 
255 
257 
259 
260  std::vector<int> UserRegionAssignments;
261 
262 private:
264  void operator=(const vtkDistributedDataFilter&) = delete;
265 };
266 #endif
vtkDistributedDataFilter::MyId
int MyId
Definition: vtkDistributedDataFilter.h:233
vtkDistributedDataFilter::MinimumGhostLevel
int MinimumGhostLevel
Definition: vtkDistributedDataFilter.h:242
vtkDistributedDataFilter
Serial stand-in for parallel filter that distributes data among processors.
Definition: vtkDistributedDataFilter.h:47
vtkDataObjectAlgorithm::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkDistributedDataFilter::NumConvexSubRegions
int NumConvexSubRegions
Definition: vtkDistributedDataFilter.h:238
vtkDistributedDataFilter::GhostLevel
int GhostLevel
Definition: vtkDistributedDataFilter.h:245
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:35
vtkDataObjectAlgorithm
Superclass for algorithms that produce only data object as output.
Definition: vtkDataObjectAlgorithm.h:43
vtkDistributedDataFilter::BoundaryModes
BoundaryModes
Definition: vtkDistributedDataFilter.h:122
vtkDistributedDataFilter::UseMinimalMemory
int UseMinimalMemory
Definition: vtkDistributedDataFilter.h:256
vtkDistributedDataFilter::IncludeAllIntersectingCells
int IncludeAllIntersectingCells
Definition: vtkDistributedDataFilter.h:248
vtkPKdTree
Build a k-d tree decomposition of a list of points.
Definition: vtkPKdTree.h:57
vtkDistributedDataFilter::ASSIGN_TO_ALL_INTERSECTING_REGIONS
@ ASSIGN_TO_ALL_INTERSECTING_REGIONS
Definition: vtkDistributedDataFilter.h:125
vtkDistributedDataFilter::Kdtree
vtkPKdTree * Kdtree
Definition: vtkDistributedDataFilter.h:229
vtkDistributedDataFilter::ConvexSubRegionBounds
double * ConvexSubRegionBounds
Definition: vtkDistributedDataFilter.h:239
vtkX3D::port
@ port
Definition: vtkX3D.h:453
vtkDataObjectAlgorithm::RequestUpdateExtent
virtual int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
Definition: vtkDataObjectAlgorithm.h:111
vtkDistributedDataFilter::SetBoundaryModeToAssignToOneRegion
void SetBoundaryModeToAssignToOneRegion()
Definition: vtkDistributedDataFilter.h:134
vtkDistributedDataFilter::ProgressIncrement
double ProgressIncrement
Definition: vtkDistributedDataFilter.h:254
vtkMultiProcessController
Multiprocessing communication superclass.
Definition: vtkMultiProcessController.h:75
vtkDistributedDataFilter::Controller
vtkMultiProcessController * Controller
Definition: vtkDistributedDataFilter.h:230
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkBSPCuts
This class represents an axis-aligned Binary Spatial Partitioning of a 3D space.
Definition: vtkBSPCuts.h:44
vtkDistributedDataFilter::Timing
int Timing
Definition: vtkDistributedDataFilter.h:251
vtkDistributedDataFilter::GetCuts
vtkBSPCuts * GetCuts()
You can set the k-d tree decomposition, rather than have D3 compute it.
Definition: vtkDistributedDataFilter.h:195
vtkDistributedDataFilter::UserRegionAssignments
std::vector< int > UserRegionAssignments
Definition: vtkDistributedDataFilter.h:260
vtkDistributedDataFilter::ASSIGN_TO_ONE_REGION
@ ASSIGN_TO_ONE_REGION
Definition: vtkDistributedDataFilter.h:124
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:73
vtkX3D::info
@ info
Definition: vtkX3D.h:382
vtkDistributedDataFilter::UserCuts
vtkBSPCuts * UserCuts
Definition: vtkDistributedDataFilter.h:258
vtkDistributedDataFilter::SetBoundaryModeToSplitBoundaryCells
void SetBoundaryModeToSplitBoundaryCells()
Definition: vtkDistributedDataFilter.h:142
vtkDistributedDataFilter::ClipCells
int ClipCells
Definition: vtkDistributedDataFilter.h:249
vtkDistributedDataFilter::NextProgressStep
int NextProgressStep
Definition: vtkDistributedDataFilter.h:253
vtkDistributedDataFilter::Source
int * Source
Definition: vtkDistributedDataFilter.h:236
vtkDataObjectAlgorithm::New
static vtkDataObjectAlgorithm * New()
vtkX3D::mode
@ mode
Definition: vtkX3D.h:253
vtkDataObjectAlgorithm::RequestData
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
Definition: vtkDataObjectAlgorithm.h:116
vtkDataObjectAlgorithm.h
vtkDataObjectAlgorithm::FillInputPortInformation
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.
vtkDataObjectAlgorithm::RequestDataObject
virtual int RequestDataObject(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
Definition: vtkDataObjectAlgorithm.h:102
vtkDataObjectAlgorithm::RequestInformation
virtual int RequestInformation(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
vtkDistributedDataFilter::RetainKdtree
int RetainKdtree
Definition: vtkDistributedDataFilter.h:247
vtkDistributedDataFilter::Target
int * Target
Definition: vtkDistributedDataFilter.h:235
vtkDistributedDataFilter::SetBoundaryModeToAssignToAllIntersectingRegions
void SetBoundaryModeToAssignToAllIntersectingRegions()
Definition: vtkDistributedDataFilter.h:138
vtkDistributedDataFilter::NumProcesses
int NumProcesses
Definition: vtkDistributedDataFilter.h:232
vtkDistributedDataFilter::SPLIT_BOUNDARY_CELLS
@ SPLIT_BOUNDARY_CELLS
Definition: vtkDistributedDataFilter.h:126