22 #ifndef vtkPStructuredGridConnectivity_h
23 #define vtkPStructuredGridConnectivity_h
26 #include "vtkFiltersParallelGeometryModule.h"
34 VTK_ABI_NAMESPACE_BEGIN
80 int GetGridRank(
int gridID);
85 bool IsGridRemote(
int gridID);
90 bool IsGridLocal(
int gridID);
148 bool GridExtentsAreEqual(
int rhs[6],
int lhs[6]);
153 bool HasPointData(
int gridIdx);
158 bool HasCellData(
int gridIdx);
163 bool HasPoints(
int gridIdx);
168 void InitializeMessageCounters();
174 void ClearRemoteData();
179 void ClearRawBuffers();
185 void RegisterRemoteGrid(
int gridID,
int extents[6],
int process);
203 void PackGhostData();
209 void UnpackGhostData();
215 void DeserializeBufferSizesForProcess(
int* buffersizes,
vtkIdType N,
int processId);
221 void SerializeBufferSizes(
int*& sizesbuf,
vtkIdType& N);
227 void ExchangeBufferSizes();
234 void ExchangeGhostDataInit();
253 void CommunicateGhostData();
260 void ExchangeGhostDataPost();
265 void ExchangeGhostData();
282 void SerializeFieldData(
int sourceExtent[6],
int targetExtent[6],
vtkFieldData* fieldData,
306 void DeserializeDataArray(
vtkDataArray*& dataArray,
int dataType,
int numberOfTuples,
319 void DeserializeGhostPointData(
326 void DeserializeGhostCellData(
335 void SerializeGhostData(
336 int sndGridID,
int rcvGrid,
int sndext[6],
unsigned char*& buffer,
unsigned int&
size);
342 void DeserializeGhostData(
int gridID,
int neiListID,
int neiGridIdx,
int rcvext[6],
343 unsigned char* buffer,
unsigned int size);
349 void ExchangeGridExtents();
355 void SerializeGridExtents(
int*& sndbuffer,
vtkIdType& N);
361 void DeserializeGridExtentForProcess(
int* rcvbuffer,
vtkIdType& N,
int processId);
374 for (
int i = 0; i < 6; ++i)
376 if (rhs[i] != lhs[i])
388 assert(
"pre: grid index is out-of-bounds!" && (gridIdx >= 0) &&
403 assert(
"pre: grid index is out-of-bounds!" && (gridIdx >= 0) &&
418 assert(
"pre: grid index is out-of-bounds!" && (gridIdx >= 0) &&
441 for (
unsigned int i = 0; i < this->
SendBuffers.size(); ++i)
443 for (
unsigned int j = 0; j < this->
SendBuffers[i].size(); ++j)
452 for (
unsigned int i = 0; i < this->
RcvBuffers.size(); ++i)
454 for (
unsigned int j = 0; j < this->
RcvBuffers[i].size(); ++j)
467 for (
unsigned int i = 0; i < this->
RemotePoints.size(); ++i)
469 for (
unsigned int j = 0; j < this->
RemotePoints[i].size(); ++j)
518 assert(
"pre: Instance has not been initialized!" && this->
Initialized);
519 assert(
"pre: gridID is out-of-bounds" && (gridID >= 0) &&
529 assert(
"pre: Instance has not been initialized!" && this->
Initialized);
530 assert(
"pre: gridID out-of-bounds!" &&
531 (gridID >= 0 && gridID < static_cast<int>(this->
NumberOfGrids)));
534 VTK_ABI_NAMESPACE_END
vtkPStructuredGridConnectivity inherits from vtkStructuredGridConnectivity and implements functionali...
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
bool HasPointData(int gridIdx)
Returns true iff the grid corresponding to the given ID has point data.
bool HasCellData(int gridIdx)
Returns true iff the grid corresponding to the given ID has cell data.
represent and manipulate point attribute data
stream used to pass data across processes using vtkMultiProcessController.
std::vector< vtkPointData * > GridPointData
int GetNumberOfLocalGrids()
Returns the number of local grids registers by the process that owns the current vtkPStructuredGridCo...
represent and manipulate cell attribute data
virtual void TransferGhostDataFromNeighbors(int gridID)
This method transfers the fields (point data and cell data) to the ghost extents from the neighboring...
std::vector< int > GridIds
int GetGridRank(int gridID)
Returns the rank of the given gridID.
vtkMPICommunicator::Request * MPIRequests
void ClearRemoteData()
Clears all internal VTK data-structures that are used to store the remote ghost data.
void ComputeNeighbors() override
Computes neighboring information.
bool IsGridRemote(int gridID)
Returns true iff the grid is remote, otherwise false.
bool GridExtentsAreEqual(int rhs[6], int lhs[6])
Returns true if the two extents are equal, otherwise false.
std::vector< std::vector< unsigned int > > SendBufferSizes
vtkStructuredGridConnectivity is a concrete instance of vtkObject that implements functionality for c...
void CreateGhostLayers(int N=1) override
Creates ghost layers.
virtual void RegisterGrid(int gridID, int extents[6], vtkUnsignedCharArray *nodesGhostArray, vtkUnsignedCharArray *cellGhostArray, vtkPointData *pointData, vtkCellData *cellData, vtkPoints *gridNodes)
Registers the current grid corresponding to the grid ID by its global extent w.r.t.
vtkMultiProcessController * Controller
std::vector< std::vector< unsigned char * > > RcvBuffers
a simple class to control print indentation
static vtkStructuredGridConnectivity * New()
std::vector< std::vector< vtkCellData * > > RemoteCellData
abstract superclass for arrays of numeric data
Process communication using MPI.
void ClearRawBuffers()
Clears all raw send/rcv buffers.
std::vector< vtkCellData * > GridCellData
dynamic, self-adjusting array of unsigned char
unsigned int NumberOfGrids
An internal, light-weight class used to store neighbor information.
std::vector< std::vector< vtkPoints * > > RemotePoints
std::vector< int > GridRanks
void SetNumberOfGrids(unsigned int N) override
Set/Get the total number of domains distributed among processors.
void InitializeMessageCounters()
Sets all message counters to 0.
bool HasPoints(int gridIdx)
Returns true iff the grid corresponding to the given ID has points.
bool IsGridLocal(int gridID)
Returns true iff the grid corresponding to the given gridID is local.
std::vector< std::vector< unsigned int > > RcvBufferSizes
std::vector< std::vector< unsigned char * > > SendBuffers
std::vector< std::vector< vtkPointData * > > RemotePointData
represent and manipulate 3D points
std::vector< vtkPoints * > GridPoints
represent and manipulate fields of data
Multiprocessing communication superclass.