VTK  9.1.0
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=========================================================================*/
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
154
155 vtk::detail::DomainMetaData* DomainInfo;
156 vtk::detail::StructuredGrid* InputGrid;
157 vtk::detail::StructuredGrid* OutputGrid;
158 vtk::detail::CommunicationManager* CommManager;
159
164
168 void PackData(int ext[6], vtkMultiProcessStream& bytestream);
169
173 void UnPackData(unsigned char* buffer, unsigned int size);
174
178 void AllocateBuffers(const int dim);
179
184
189
194 void GrowGrid(const int dim);
195
201 void UpdateNeighborList(const int dim);
202
207
214
215private:
217 void operator=(const vtkStructuredImplicitConnectivity&) = delete;
218};
219#endif
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:159
topologically and geometrically regular array of data
Definition: vtkImageData.h:157
a simple class to control print indentation
Definition: vtkIndent.h:113
Process communication using MPI.
stream used to pass data across processes using vtkMultiProcessController.
abstract base class for most VTK objects
Definition: vtkObject.h:82
represent and manipulate point attribute data
Definition: vtkPointData.h:142
represent and manipulate 3D points
Definition: vtkPoints.h:143
a dataset that is topologically regular with variable spacing in the three coordinate directions
topologically regular array of data
a distributed structured dataset that is implicitly connected among partitions without abutting.
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 GrowGrid(const int dim)
Grows grid along a given dimension.
Specialization of tuple ranges and iterators for vtkAOSDataArrayTemplate.