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=========================================================================*/
25#ifndef vtkDIYAggregateDataSetFilter_h
26#define vtkDIYAggregateDataSetFilter_h
27
29#include "vtkFiltersParallelDIY2Module.h" // For export macro
30
31#include <map> // For passing computed data between methods
32#include <string> // For passing computed data between methods
33#include <vector> // For passing computed data between methods
34
35class vtkDataObject;
36class vtkIdList;
37
38class VTKFILTERSPARALLELDIY2_EXPORT vtkDIYAggregateDataSetFilter : public vtkAggregateDataSetFilter
39{
41
42public:
44 void PrintSelf(ostream& os, vtkIndent indent) override;
45
46protected:
49
50 int RequestData(vtkInformation* request, vtkInformationVector** inputVector,
51 vtkInformationVector* outputVector) override;
53
60 int GetTargetProcessId(int sourceProcessId, int numberOfProcesses);
61
70 bool DoExtentsOverlap(int extent1[6], int extent2[6], int dimensions[3], int* overlappingExtent);
71
75 void GetExtent(vtkDataSet* dataSet, int extent[6]);
76
81
86 int MoveDataWithDIY(int inputExtent[6], int wholeExtent[6], int outputExtent[6],
87 std::map<int, std::string>& serializedDataSets, std::vector<std::string>& receivedDataSets);
88
92 int MoveData(int inputExtent[6], int wholeExtent[6], int outputExtent[6],
93 std::map<int, std::string>& serializedDataSets, std::vector<std::string>& receivedDataSets);
94
100 int inputExent[6], int wholeExtent[6], int outputExtent[6], vtkIdList* processesIReceiveFrom);
101
106 void ExtractRectilinearGridCoordinates(int* sourceExtent, int* targetExtent,
107 vtkDataArray* sourceCoordinates, vtkDataArray* targetCoordinates);
108
109private:
111 void operator=(const vtkDIYAggregateDataSetFilter&) = delete;
112
117 bool OutputInitialized;
118};
119
120#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:63
list of point or cell ids
Definition vtkIdList.h:34
a simple class to control print indentation
Definition vtkIndent.h:40
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 *)