The Generate_Shell_Partition procedure returns the cell numbering for a ``Shell Partitioning''. That is, it returns an array giving cell number as a function of i, j, and k. It is called internally by the Initialize_Shell_Partition procedure.
The idea behind a ``Shell Partitioning'' is to develop a numbering for a very bad partitioning. This can then be used to test algorithms to see how well they behave under adverse situations.
All the Shell Partitionings correspond to a structured, ``linear'', ``square'' or ``cubic'', mesh. The total size of the mesh is SizeNDimensions, where Size is any integer (and is equal to the number of processors) and NDimensions is 1, 2 or 3. Each processor then gets
|
PENDimensions - |
(10.1) |
XXXXX
X
X
X
X
for processor 5. In 3-D, each PE gets the newly added top and two sides
(three sides total) of a cube.
This routine provides a functional relationship for cell numbers by (i,j,k) triplet. The cell numbers are contiguous for a PE, e.g. in 3-D the first PE has number 1, the second PE has numbers 2-8, the third PE has numbers 9-27, etc.
Calling syntax:
| call Generate_Shell_Partition | (c, i_of_c, j_of_c, k_of_c, | |
| NDimensions, NNodes_per_Side, Output) |
Input variables:
| NDimensions | The number of dimensions (1=line, 2=square, 3=cube). | ||
| NNodes_per_Side | The number of nodes in the line, or on the edges of the square or cube. | ||
| Output | Output toggle. |
Output variables:
| c | The cell numbers as a function of i, j, and k. | ||
| i_of_c, j_of_c, k_of_c | The i, j, and k numbers for a particular cell number. |
The Generate_Shell_Partition code listing contains additional documentation.
Michael L. Hall