VTK  9.2.6
vtkStructuredImplicitConnectivity.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkStructuredImplicitConnectivity.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=========================================================================*/
38
39#ifndef vtkStructuredImplicitConnectivity_h
40#define vtkStructuredImplicitConnectivity_h
41
42#include "vtkFiltersParallelMPIModule.h" // For export macro
43#include "vtkObject.h"
44
45// Forward declarations
46class vtkDataArray;
47class vtkImageData;
50class vtkPointData;
51class vtkPoints;
54
55namespace vtk
56{
57namespace detail
58{
59
60class CommunicationManager;
61struct DomainMetaData;
62struct StructuredGrid;
63
64} // END namespace detail
65} // END namespace vtk
66
67class VTKFILTERSPARALLELMPI_EXPORT vtkStructuredImplicitConnectivity : public vtkObject
68{
69public:
71 void PrintSelf(ostream& os, vtkIndent indent) override;
73
80 void SetWholeExtent(int wholeExt[6]);
81
82 // \brief Registers the structured grid dataset belonging to this process.
83 // \param gridID the ID of the grid in this rank.
84 // \param extent the [imin,imax,jmin,jmax,kmin,kmax] of the grid.
85 // \param gridPnts pointer to the points of the grid (nullptr for uniform grid).
86 // \param pointData pointer to the node-centered fields of the grid.
87 // \pre gridID >= 0. The code uses values of gridID < -1 as flag internally.
88 // \pre vtkStructuredExtent::Smaller(extent,wholeExtent) == true.
89 // \note A rank with no or an empty grid, should not call this method.
90 void RegisterGrid(const int gridID, int extent[6], vtkPoints* gridPnts, vtkPointData* pointData);
91
92 // \brief Registers the rectilinear grid dataset belonging to this process.
93 // \param gridID the ID of the in this rank.
94 // \param extent the [imin,imax,jmin,jmax,kmin,kmax] of the grid.
95 // \param xcoords the x-coordinates array of the rectilinear grid.
96 // \param ycoords the y-coordinates array of the rectilinear grid.
97 // \param zcoords the z-coordinates array of the rectilinear grid.
98 // \param pointData pointer to the node-centered fields of the grid.
99 // \pre gridID >= 0. The code uses values of gridID < -1 as flag internally.
100 // \pre vtkStructuredExtent::Smaller(extent,wholeExtent) == true.
101 // \note A rank with no or an empty grid, should not call this method.
102 void RegisterRectilinearGrid(const int gridID, int extent[6], vtkDataArray* xcoords,
103 vtkDataArray* ycoords, vtkDataArray* zcoords, vtkPointData* pointData);
104
112
118
127
133 void GetOutputStructuredGrid(const int gridID, vtkStructuredGrid* grid);
134
140 void GetOutputImageData(const int gridID, vtkImageData* grid);
141
147 void GetOutputRectilinearGrid(const int gridID, vtkRectilinearGrid* grid);
148
149protected:
152
155
156 vtk::detail::DomainMetaData* DomainInfo;
157 vtk::detail::StructuredGrid* InputGrid;
158 vtk::detail::StructuredGrid* OutputGrid;
159 vtk::detail::CommunicationManager* CommManager;
160
165
169 void PackData(int ext[6], vtkMultiProcessStream& bytestream);
170
174 void UnPackData(unsigned char* buffer, unsigned int size);
175
179 void AllocateBuffers(const int dim);
180
185
190
195 void GrowGrid(const int dim);
196
202 void UpdateNeighborList(const int dim);
203
208
215
216private:
218 void operator=(const vtkStructuredImplicitConnectivity&) = delete;
219};
220#endif
topologically and geometrically regular array of data
a simple class to control print indentation
Definition vtkIndent.h:34
Process communication using MPI.
stream used to pass data across processes using vtkMultiProcessController.
represent and manipulate point attribute data
represent and manipulate 3D points
Definition vtkPoints.h:34
a dataset that is topologically regular with variable spacing in the three coordinate directions
topologically regular array of data
void GetOutputRectilinearGrid(const int gridID, vtkRectilinearGrid *grid)
Gets the output rectilinear grid instance on this process.
void GetOutputStructuredGrid(const int gridID, vtkStructuredGrid *grid)
Gets the output structured grid instance on this process.
void ConstructOutput()
Constructs the output data-structures.
void PackData(int ext[6], vtkMultiProcessStream &bytestream)
Packs the data to send into a bytestream.
void RegisterRectilinearGrid(const int gridID, int extent[6], vtkDataArray *xcoords, vtkDataArray *ycoords, vtkDataArray *zcoords, vtkPointData *pointData)
void EstablishConnectivity()
Finds implicit connectivity for a distributed structured dataset.
static vtkStructuredImplicitConnectivity * New()
void ExchangeData()
Exchanges one layer (row or column) of data between neighboring grids to fix the implicit connectivit...
void GetOutputImageData(const int gridID, vtkImageData *grid)
Gets the output uniform grid instance on this process.
bool HasImplicitConnectivity()
Checks if there is implicit connectivity.
void SetWholeExtent(int wholeExt[6])
Sets the whole extent for the distributed structured domain.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void AllocateBuffers(const int dim)
Allocates send/rcv buffers needed to carry out the communication.
void ExchangeExtents()
Exchanges extents among processes.
void UnPackData(unsigned char *buffer, unsigned int size)
Unpacks the data to the output grid.
bool GlobalDataDescriptionMatch()
Checks if the data description matches globally.
void UpdateNeighborList(const int dim)
Updates the list of neighbors after growing the grid along the given dimension dim.
void GetGlobalImplicitConnectivityState()
Gets whether there is implicit connectivity across all processes.
void RegisterGrid(const int gridID, int extent[6], vtkPoints *gridPnts, vtkPointData *pointData)
void ComputeNeighbors()
Computes the neighbors with implicit connectivity.
vtk::detail::CommunicationManager * CommManager
void SetController(vtkMPIController *)
void GrowGrid(const int dim)
Grows grid along a given dimension.
Specialization of tuple ranges and iterators for vtkAOSDataArrayTemplate.
#define vtkDataArray