Using Parallel Root Grid IO¶
First, read Parallel Root Grid IO. Come back when you’re finished.
Parallel root grid IO (PRGIO) is necessary when initializing problems
that don’t fit in memory on one machine. A PRGIO problem generator
needs to function in two passes. First it needs to set up the basic
problem (see Calling the Grid Initializer: Unigrid) without allocating any data.
This will create a temporary root grid that covers the entire domain.
Then CommunicationPartitionGrid
splits this grid into several
pieces. Usually there is one partition per MPI process unless the
parameter NumberOfRootGridTilesPerDimensionPerProcessor
is greater
than 1. The temporary root grid is then deleted, leaving only the
empty level-0 grids. Finally each processor re-initializes the newly
created subgrids, this time allocating the data only when the grid
belongs to it, i.e. MyProcessorNumber == ProcessorNumber
. Both
passes are done in InitializeNew.C
.
For an example, see either the
CosmologySimulationInitialize
andCosmologySimulationReInitialize
TurbulenceSimulationInitialize
andTurbulenceSimulationReInitialize
routines in InitializeNew.C
.