17 #ifndef vtkAMRDualGridHelper_h 18 #define vtkAMRDualGridHelper_h 29 class vtkAMRDualGridHelperLevel;
32 class vtkAMRDualGridHelperDegenerateRegion;
34 class vtkAMRDualGridHelperCommRequestList;
51 vtkGetMacro(SkipGhostCopy,
int);
52 vtkSetMacro(SkipGhostCopy,
int);
53 vtkBooleanMacro(SkipGhostCopy,
int);
61 vtkGetMacro(EnableDegenerateCells,
int);
62 vtkSetMacro(EnableDegenerateCells,
int);
63 vtkBooleanMacro(EnableDegenerateCells,
int);
73 vtkGetMacro(EnableAsynchronousCommunication,
int);
74 vtkSetMacro(EnableAsynchronousCommunication,
int);
75 vtkBooleanMacro(EnableAsynchronousCommunication,
int);
92 int GetNumberOfBlocksInLevel(
int level);
106 void CopyDegenerateRegionBlockToBlock(
int regionX,
int regionY,
int regionZ,
114 void QueueRegionRemoteCopy(
int regionX,
int regionY,
int regionZ,
121 void ProcessRegionRemoteCopyQueue(
bool hackLevelFlag);
125 void ClearRegionRemoteCopyQueue();
130 vtkGetStringMacro(ArrayName);
139 vtkSetStringMacro(ArrayName);
142 void ShareMetaData();
144 void ShareBlocksWithNeighbors(
vtkIntArray* neighbors);
145 void ShareBlocksWithNeighborsAsynchronous(
vtkIntArray* neighbors);
146 void ShareBlocksWithNeighborsSynchronous(
vtkIntArray* neighbors);
149 void UnmarshalBlocksFromOne(
vtkIntArray* buffer,
int blockProc);
161 void AssignSharedRegions();
162 void AssignBlockSharedRegions(
165 int regionX,
int regionY,
int regionZ);
167 int NumberOfBlocksInThisProcess;
170 int StandardBlockDimensions[3];
171 double RootSpacing[3];
177 double GlobalOrigin[3];
180 std::vector<vtkAMRDualGridHelperLevel*> Levels;
182 int EnableDegenerateCells;
184 void ProcessRegionRemoteCopyQueueSynchronous(
bool hackLevelFlag);
185 void SendDegenerateRegionsFromQueueSynchronous(
int destProc,
vtkIdType messageLength);
186 void ReceiveDegenerateRegionsFromQueueSynchronous(
187 int srcProc,
vtkIdType messageLength,
bool hackLevelFlag);
190 void ProcessRegionRemoteCopyQueueMPIAsynchronous(
bool hackLevelFlag);
191 void SendDegenerateRegionsFromQueueMPIAsynchronous(
192 int recvProc,
vtkIdType messageLength, vtkAMRDualGridHelperCommRequestList& sendList);
193 void ReceiveDegenerateRegionsFromQueueMPIAsynchronous(
194 int sendProc,
vtkIdType messageLength, vtkAMRDualGridHelperCommRequestList& receiveList);
195 void FinishDegenerateRegionsCommMPIAsynchronous(
bool hackLevelFlag,
196 vtkAMRDualGridHelperCommRequestList& sendList,
197 vtkAMRDualGridHelperCommRequestList& receiveList);
201 std::vector<vtkAMRDualGridHelperDegenerateRegion> DegenerateRegionQueue;
203 void* CopyDegenerateRegionBlockToMessage(
204 const vtkAMRDualGridHelperDegenerateRegion& region,
void* messagePtr);
205 const void* CopyDegenerateRegionMessageToBlock(
206 const vtkAMRDualGridHelperDegenerateRegion& region,
const void* messagePtr,
bool hackLevelFlag);
207 void MarshalDegenerateRegionMessage(
void* messagePtr,
int destProc);
208 void UnmarshalDegenerateRegionMessage(
209 const void* messagePtr,
int messageLength,
int srcProc,
bool hackLevelFlag);
213 int EnableAsynchronousCommunication;
223 #define vtkAMRRegionBitOwner 128 225 #define vtkAMRRegionBitsDegenerateMask 127 232 void ResetRegionBits();
237 void AddBackGhostLevels(
int standardBlockDimensions[3]);
276 unsigned char RegionBits[3][3][3];
329 void AddFragmentSeed(
int level,
int x,
int y,
int z,
int fragmentId);
void PrintSelf(ostream &os, vtkIndent indent) VTK_OVERRIDE
unsigned char BoundaryBits
#define VTKPVVTKEXTENSIONSAMR_EXPORT
Tools for processing AMR as a dual grid.
const double * GetGlobalOrigin()
const double * GetRootSpacing()
std::vector< vtkAMRDualGridHelperSeed > FragmentIds
void operator=(const vtkObjectBase &)