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 Size^{NDimensions}, where Size is any integer (and is equal to the number of processors) and NDimensions is 1, 2 or 3. Each processor then gets
PE^{NDimensions} - PE - 1 | (10.1) |
XXXXX X X X Xfor 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