28 #ifndef vtkAMRDualGridHelper_h 29 #define vtkAMRDualGridHelper_h 41 class vtkAMRDualGridHelperLevel;
44 class vtkAMRDualGridHelperDegenerateRegion;
46 class vtkAMRDualGridHelperCommRequestList;
63 vtkGetMacro(SkipGhostCopy,
int);
64 vtkSetMacro(SkipGhostCopy,
int);
65 vtkBooleanMacro(SkipGhostCopy,
int);
73 vtkGetMacro(EnableDegenerateCells,
int);
74 vtkSetMacro(EnableDegenerateCells,
int);
75 vtkBooleanMacro(EnableDegenerateCells,
int);
85 vtkGetMacro(EnableAsynchronousCommunication,
int);
86 vtkSetMacro(EnableAsynchronousCommunication,
int);
87 vtkBooleanMacro(EnableAsynchronousCommunication,
int);
104 int GetNumberOfBlocksInLevel(
int level);
118 void CopyDegenerateRegionBlockToBlock(
int regionX,
int regionY,
int regionZ,
126 void QueueRegionRemoteCopy(
int regionX,
int regionY,
int regionZ,
133 void ProcessRegionRemoteCopyQueue(
bool hackLevelFlag);
137 void ClearRegionRemoteCopyQueue();
142 vtkGetStringMacro(ArrayName);
151 vtkSetStringMacro(ArrayName);
154 void ShareMetaData();
156 void ShareBlocksWithNeighbors(
vtkIntArray* neighbors);
157 void ShareBlocksWithNeighborsAsynchronous(
vtkIntArray* neighbors);
158 void ShareBlocksWithNeighborsSynchronous(
vtkIntArray* neighbors);
161 void UnmarshalBlocksFromOne(
vtkIntArray* buffer,
int blockProc);
173 void AssignSharedRegions();
174 void AssignBlockSharedRegions(
177 int regionX,
int regionY,
int regionZ);
179 int NumberOfBlocksInThisProcess;
182 int StandardBlockDimensions[3];
183 double RootSpacing[3];
189 double GlobalOrigin[3];
192 std::vector<vtkAMRDualGridHelperLevel*> Levels;
194 int EnableDegenerateCells;
196 void ProcessRegionRemoteCopyQueueSynchronous(
bool hackLevelFlag);
197 void SendDegenerateRegionsFromQueueSynchronous(
int destProc,
vtkIdType messageLength);
198 void ReceiveDegenerateRegionsFromQueueSynchronous(
199 int srcProc,
vtkIdType messageLength,
bool hackLevelFlag);
202 void ProcessRegionRemoteCopyQueueMPIAsynchronous(
bool hackLevelFlag);
203 void SendDegenerateRegionsFromQueueMPIAsynchronous(
204 int recvProc,
vtkIdType messageLength, vtkAMRDualGridHelperCommRequestList& sendList);
205 void ReceiveDegenerateRegionsFromQueueMPIAsynchronous(
206 int sendProc,
vtkIdType messageLength, vtkAMRDualGridHelperCommRequestList& receiveList);
207 void FinishDegenerateRegionsCommMPIAsynchronous(
bool hackLevelFlag,
208 vtkAMRDualGridHelperCommRequestList& sendList,
209 vtkAMRDualGridHelperCommRequestList& receiveList);
213 std::vector<vtkAMRDualGridHelperDegenerateRegion> DegenerateRegionQueue;
215 void* CopyDegenerateRegionBlockToMessage(
216 const vtkAMRDualGridHelperDegenerateRegion& region,
void* messagePtr);
217 const void* CopyDegenerateRegionMessageToBlock(
218 const vtkAMRDualGridHelperDegenerateRegion& region,
const void* messagePtr,
bool hackLevelFlag);
219 void MarshalDegenerateRegionMessage(
void* messagePtr,
int destProc);
220 void UnmarshalDegenerateRegionMessage(
221 const void* messagePtr,
int messageLength,
int srcProc,
bool hackLevelFlag);
225 int EnableAsynchronousCommunication;
236 #define vtkAMRRegionBitOwner 128 238 #define vtkAMRRegionBitsDegenerateMask 127 245 void ResetRegionBits();
250 void AddBackGhostLevels(
int standardBlockDimensions[3]);
289 unsigned char RegionBits[3][3][3];
342 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.
~vtkAMRDualGridHelperSeed()
const double * GetGlobalOrigin()
const double * GetRootSpacing()
std::vector< vtkAMRDualGridHelperSeed > FragmentIds
void operator=(const vtkObjectBase &)