19 #ifndef vtkAMRDualGridHelper_h 20 #define vtkAMRDualGridHelper_h 31 class vtkAMRDualGridHelperLevel;
34 class vtkAMRDualGridHelperDegenerateRegion;
36 class vtkAMRDualGridHelperCommRequestList;
53 vtkGetMacro(SkipGhostCopy,
int);
54 vtkSetMacro(SkipGhostCopy,
int);
55 vtkBooleanMacro(SkipGhostCopy,
int);
63 vtkGetMacro(EnableDegenerateCells,
int);
64 vtkSetMacro(EnableDegenerateCells,
int);
65 vtkBooleanMacro(EnableDegenerateCells,
int);
75 vtkGetMacro(EnableAsynchronousCommunication,
int);
76 vtkSetMacro(EnableAsynchronousCommunication,
int);
77 vtkBooleanMacro(EnableAsynchronousCommunication,
int);
94 int GetNumberOfBlocksInLevel(
int level);
108 void CopyDegenerateRegionBlockToBlock(
int regionX,
int regionY,
int regionZ,
116 void QueueRegionRemoteCopy(
int regionX,
int regionY,
int regionZ,
123 void ProcessRegionRemoteCopyQueue(
bool hackLevelFlag);
127 void ClearRegionRemoteCopyQueue();
132 vtkGetStringMacro(ArrayName);
141 vtkSetStringMacro(ArrayName);
144 void ShareMetaData();
146 void ShareBlocksWithNeighbors(
vtkIntArray* neighbors);
147 void ShareBlocksWithNeighborsAsynchronous(
vtkIntArray* neighbors);
148 void ShareBlocksWithNeighborsSynchronous(
vtkIntArray* neighbors);
151 void UnmarshalBlocksFromOne(
vtkIntArray* buffer,
int blockProc);
163 void AssignSharedRegions();
164 void AssignBlockSharedRegions(
167 int regionX,
int regionY,
int regionZ);
169 int NumberOfBlocksInThisProcess;
172 int StandardBlockDimensions[3];
173 double RootSpacing[3];
179 double GlobalOrigin[3];
182 std::vector<vtkAMRDualGridHelperLevel*> Levels;
184 int EnableDegenerateCells;
186 void ProcessRegionRemoteCopyQueueSynchronous(
bool hackLevelFlag);
187 void SendDegenerateRegionsFromQueueSynchronous(
int destProc,
vtkIdType messageLength);
188 void ReceiveDegenerateRegionsFromQueueSynchronous(
189 int srcProc,
vtkIdType messageLength,
bool hackLevelFlag);
192 void ProcessRegionRemoteCopyQueueMPIAsynchronous(
bool hackLevelFlag);
193 void SendDegenerateRegionsFromQueueMPIAsynchronous(
194 int recvProc,
vtkIdType messageLength, vtkAMRDualGridHelperCommRequestList& sendList);
195 void ReceiveDegenerateRegionsFromQueueMPIAsynchronous(
196 int sendProc,
vtkIdType messageLength, vtkAMRDualGridHelperCommRequestList& receiveList);
197 void FinishDegenerateRegionsCommMPIAsynchronous(
bool hackLevelFlag,
198 vtkAMRDualGridHelperCommRequestList& sendList,
199 vtkAMRDualGridHelperCommRequestList& receiveList);
203 std::vector<vtkAMRDualGridHelperDegenerateRegion> DegenerateRegionQueue;
205 void* CopyDegenerateRegionBlockToMessage(
206 const vtkAMRDualGridHelperDegenerateRegion& region,
void* messagePtr);
207 const void* CopyDegenerateRegionMessageToBlock(
208 const vtkAMRDualGridHelperDegenerateRegion& region,
const void* messagePtr,
bool hackLevelFlag);
209 void MarshalDegenerateRegionMessage(
void* messagePtr,
int destProc);
210 void UnmarshalDegenerateRegionMessage(
211 const void* messagePtr,
int messageLength,
int srcProc,
bool hackLevelFlag);
215 int EnableAsynchronousCommunication;
225 #define vtkAMRRegionBitOwner 128 227 #define vtkAMRRegionBitsDegenerateMask 127 234 void ResetRegionBits();
239 void AddBackGhostLevels(
int standardBlockDimensions[3]);
278 unsigned char RegionBits[3][3][3];
331 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 &)