73 #ifndef vtkRedistributeDataSetFilter_h
74 #define vtkRedistributeDataSetFilter_h
77 #include "vtkFiltersParallelDIY2Module.h"
85 #include VTK_DIY2(diy/assigner.hpp)
113 ASSIGN_TO_ONE_REGION = 0,
114 ASSIGN_TO_ALL_INTERSECTING_REGIONS = 1,
115 SPLIT_BOUNDARY_CELLS = 2
131 vtkSetClampMacro(BoundaryMode,
int, ASSIGN_TO_ONE_REGION, SPLIT_BOUNDARY_CELLS);
132 vtkGetMacro(BoundaryMode,
int);
136 this->SetBoundaryMode(ASSIGN_TO_ALL_INTERSECTING_REGIONS);
147 vtkSetMacro(UseExplicitCuts,
bool);
148 vtkGetMacro(UseExplicitCuts,
bool);
149 vtkBooleanMacro(UseExplicitCuts,
bool);
156 void SetExplicitCuts(
const std::vector<vtkBoundingBox>& boxes);
157 const std::vector<vtkBoundingBox>&
GetExplicitCuts()
const {
return this->ExplicitCuts; }
158 void RemoveAllExplicitCuts();
160 void AddExplicitCut(
const double bbox[6]);
161 int GetNumberOfExplicitCuts()
const;
171 void SetAssigner(std::shared_ptr<diy::Assigner> assigner);
172 std::shared_ptr<diy::Assigner> GetAssigner();
173 std::shared_ptr<const diy::Assigner> GetAssigner()
const;
186 vtkSetMacro(ExpandExplicitCuts,
bool);
187 vtkGetMacro(ExpandExplicitCuts,
bool);
188 vtkBooleanMacro(ExpandExplicitCuts,
bool);
196 const std::vector<vtkBoundingBox>&
GetCuts()
const {
return this->Cuts; }
217 vtkSetClampMacro(NumberOfPartitions,
int, 0,
VTK_INT_MAX);
218 vtkGetMacro(NumberOfPartitions,
int);
235 vtkSetMacro(PreservePartitionsInOutput,
bool);
236 vtkGetMacro(PreservePartitionsInOutput,
bool);
237 vtkBooleanMacro(PreservePartitionsInOutput,
bool);
245 vtkSetMacro(GenerateGlobalCellIds,
bool);
246 vtkGetMacro(GenerateGlobalCellIds,
bool);
247 vtkBooleanMacro(GenerateGlobalCellIds,
bool);
256 std::vector<vtkBoundingBox> ExpandCuts(
257 const std::vector<vtkBoundingBox>& cuts,
const vtkBoundingBox& bounds);
267 vtkSetMacro(EnableDebugging,
bool);
268 vtkGetMacro(EnableDebugging,
bool);
269 vtkBooleanMacro(EnableDebugging,
bool);
281 vtkSetMacro(LoadBalanceAcrossAllBlocks,
bool);
282 vtkGetMacro(LoadBalanceAcrossAllBlocks,
bool);
283 vtkBooleanMacro(LoadBalanceAcrossAllBlocks,
bool);
316 vtkDataSet* dataset,
const std::vector<vtkBoundingBox>& cuts);
324 const std::vector<vtkBoundingBox>& cuts,
vtkIdType* mb_offset =
nullptr);
325 bool RedistributeDataSet(
338 std::vector<vtkBoundingBox> ExplicitCuts;
339 std::vector<vtkBoundingBox> Cuts;
340 std::shared_ptr<diy::Assigner> Assigner;
344 int NumberOfPartitions;
345 bool PreservePartitionsInOutput;
346 bool GenerateGlobalCellIds;
347 bool UseExplicitCuts;
348 bool ExpandExplicitCuts;
349 bool EnableDebugging;
351 bool LoadBalanceAcrossAllBlocks;
virtual int RequestDataObject(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called by the superclass.
composite dataset to encapsulates a dataset consisting of partitions.
provides implementation for most abstract methods in the superclass vtkCompositeDataSet ...
abstract class to specify dataset behavior
static vtkDataObjectAlgorithm * New()
void SetBoundaryModeToSplitBoundaryCells()
Specify how cells on the boundaries are handled.
Hold a reference to a vtkObjectBase instance.
const std::vector< vtkBoundingBox > & GetCuts() const
Returns the cuts used by the most recent RequestData call.
a simple class to control print indentation
void SetBoundaryModeToAssignToOneRegion()
Specify how cells on the boundaries are handled.
composite dataset to encapsulates pieces of dataset.
const std::vector< vtkBoundingBox > & GetExplicitCuts() const
Specify the cuts to use when UseExplicitCuts is true.
Superclass for algorithms that produce only data object as output.
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
Composite dataset that organizes datasets into blocks.
void SetBoundaryModeToAssignToAllIntersectingRegions()
Specify how cells on the boundaries are handled.
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.
redistributes input dataset into requested number of partitions
general representation of visualization data
Fast, simple class for representing and operating on 3D bounds.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
Multiprocessing communication superclass.