VTK  9.2.6
vtkDIYAggregateDataSetFilter.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkDIYAggregateDataSetFilter.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=========================================================================*/
22#ifndef vtkDIYAggregateDataSetFilter_h
23#define vtkDIYAggregateDataSetFilter_h
24
26#include "vtkFiltersParallelDIY2Module.h" // For export macro
27
28#include <map> // For passing computed data between methods
29#include <string> // For passing computed data between methods
30#include <vector> // For passing computed data between methods
31
32class vtkDataObject;
33class vtkIdList;
34
35class VTKFILTERSPARALLELDIY2_EXPORT vtkDIYAggregateDataSetFilter : public vtkAggregateDataSetFilter
36{
38
39public:
41 void PrintSelf(ostream& os, vtkIndent indent) override;
42
43protected:
46
47 int RequestData(vtkInformation* request, vtkInformationVector** inputVector,
48 vtkInformationVector* outputVector) override;
50
57 int GetTargetProcessId(int sourceProcessId, int numberOfProcesses);
58
67 bool DoExtentsOverlap(int extent1[6], int extent2[6], int dimensions[3], int* overlappingExtent);
68
72 void GetExtent(vtkDataSet* dataSet, int extent[6]);
73
78
83 int MoveDataWithDIY(int inputExtent[6], int wholeExtent[6], int outputExtent[6],
84 std::map<int, std::string>& serializedDataSets, std::vector<std::string>& receivedDataSets);
85
89 int MoveData(int inputExtent[6], int wholeExtent[6], int outputExtent[6],
90 std::map<int, std::string>& serializedDataSets, std::vector<std::string>& receivedDataSets);
91
97 int inputExent[6], int wholeExtent[6], int outputExtent[6], vtkIdList* processesIReceiveFrom);
98
103 void ExtractRectilinearGridCoordinates(int* sourceExtent, int* targetExtent,
104 vtkDataArray* sourceCoordinates, vtkDataArray* targetCoordinates);
105
106private:
108 void operator=(const vtkDIYAggregateDataSetFilter&) = delete;
109
114 bool OutputInitialized;
115};
116
117#endif
Aggregates data sets to a reduced number of processes.
Aggregates data sets to a reduced number of processes.
int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override
This is called within ProcessRequest when a request asks the algorithm to do its work.
bool DoExtentsOverlap(int extent1[6], int extent2[6], int dimensions[3], int *overlappingExtent)
Given two extents and dimensions (marking whether or not we have cells in that dimension with a value...
void ExtractRectilinearGridCoordinates(int *sourceExtent, int *targetExtent, vtkDataArray *sourceCoordinates, vtkDataArray *targetCoordinates)
Put appropriate values from sourceCoordinates into targetCoordinates based on the extents overlap.
int GetTargetProcessId(int sourceProcessId, int numberOfProcesses)
Given a source process id and number of processes, return a target process id for the aggregate opera...
~vtkDIYAggregateDataSetFilter() override
void GetExtent(vtkDataSet *dataSet, int extent[6])
Get the extent of the topologically regular dataset.
int MoveData(int inputExtent[6], int wholeExtent[6], int outputExtent[6], std::map< int, std::string > &serializedDataSets, std::vector< std::string > &receivedDataSets)
Move data directly with vtkMPIController.
void ExtractDataSetInformation(vtkDataSet *source, vtkDataSet *target)
Extract information from source dataset into target dataset.
int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called within ProcessRequest when a request asks for Information.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int MoveDataWithDIY(int inputExtent[6], int wholeExtent[6], int outputExtent[6], std::map< int, std::string > &serializedDataSets, std::vector< std::string > &receivedDataSets)
Move data with DIY.
static vtkDIYAggregateDataSetFilter * New()
void ComputeProcessesIReceiveFrom(int inputExent[6], int wholeExtent[6], int outputExtent[6], vtkIdList *processesIReceiveFrom)
Determine which processes I receive data and put those process ranks (in order) into processesIReceiv...
abstract superclass for arrays of numeric data
general representation of visualization data
abstract class to specify dataset behavior
Definition vtkDataSet.h:57
list of point or cell ids
Definition vtkIdList.h:31
a simple class to control print indentation
Definition vtkIndent.h:34
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
boost::graph_traits< vtkGraph * >::vertex_descriptor target(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)