Field Redistribute Block to Arbitrary Test Description
Test Description: This system test checks the functionality of the arbitrary grid distribution routines by redistributing data from one Field distributed in the normal block structure to another Field that has been distributed arbitrarily and then back again. The original data should exactly match the final data, which serves as the test for SUCCESS. This program creates two identical Grids with different distributions, one with the normal block structure and the other with a semi-random arbitrary distribution. The first Grid has two Fields created from it, the first as the source for the test and the second for the final results. The second Grid has a single Field that serves as an intermediate result between the two redistributions.
Test ResultsTest Configuration
- Test Programming Language: Fortran90
- Number of PETs: 6
- Communications Method: MPI
Sections
The main program of the test application consists of the following sections.
- Create
- Initialize
- Run
- Finalize
- Destroy
Create
- Initializes the framework.
- Gets the PET count and number of this PET.
Initialize
- Creates two Grids, one is distributed in the normal block style, the other is arbitrarily distributed.
- Creates a Field and creates the Array internally for each Grid. Creates an additional Field for source Grid.
- Precomputes communication patterns for redistribution between the first and second Grid, and back again.
- Creates a Field and creates the Array internally for each Grid.
- Precomputes communication patterns for redistribution between the first and second Grid, and back again.
- Gets Grid coordinates.
- Adds data to Field1, setting each computational point to a given geometric function:
10.0 + 5.0*sin((X/60.0)*pi) + 2.0*sin((Y/50.0)*pi)
Run
- Redistibutes Field1 from the first Grid (distributed in normal block style) to the second Grid (arbitrarily distributed). The results end up in Field2.
- Redistibutes Field2 from the second Grid (arbitrarily distributed) to the first Grid (distributed in block style). The results end up in Field3.
Finalize
- Compares Field1 to Field3, they should be identical.
Destroy
- Deallocates memory for all the created objects by calling destroy subroutines for the DELayout Field and Grid.

