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 - 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.
|call Generate_Shell_Partition||(c, i_of_c, j_of_c, k_of_c,|
|NDimensions, NNodes_per_Side, Output)|
|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.|
|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