15.1 Multi_Mesh Class

The Multi_Mesh Class is used to describe a mesh in the CÆSAR Code Package.

The following is incomplete documentation - or rather documentation in the middle of being written.

Dims Uniformity  Orthogonality  Structure    AMR  Cell-Shape    Geometry
------------------------------------------------------------------------------
1   Uniform     Orthogonal     Structured    no  Segmented     x-Cartesian
1   Uniform     Orthogonal     Structured    no  Segmented     r-Cylindrical
1   Uniform     Orthogonal     Structured    no  Segmented     r-Spherical
1   Nonuniform  Orthogonal     Structured    no  Segmented     x-Cartesian
1   Nonuniform  Orthogonal     Structured    no  Segmented     r-Cylindrical
1   Nonuniform  Orthogonal     Structured    no  Segmented     r-Spherical
1   Nonuniform  Orthogonal     Unstructured  no  Segmented     x-Cartesian
1   Nonuniform  Orthogonal     Unstructured  no  Segmented     r-Cylindrical
1   Nonuniform  Orthogonal     Unstructured  no  Segmented     r-Spherical
2   Uniform     Orthogonal     Structured    no  Quadrilateral xy-Cartesian
2   Uniform     Orthogonal     Structured    no  Quadrilateral rz-Cylindrical
2   Nonuniform  Orthogonal     Structured    no  Quadrilateral xy-Cartesian
2   Nonuniform  Orthogonal     Structured    no  Quadrilateral rz-Cylindrical
2   Nonuniform  Nonorthogonal  Structured    no  Quadrilateral xy-Cartesian
2   Nonuniform  Nonorthogonal  Structured    no  Quadrilateral rz-Cylindrical
2   Uniform     Orthogonal     Structured    yes Quadrilateral xy-Cartesian
2   Uniform     Orthogonal     Structured    yes Quadrilateral rz-Cylindrical
2   Nonuniform  Orthogonal     Structured    yes Quadrilateral xy-Cartesian
2   Nonuniform  Orthogonal     Structured    yes Quadrilateral rz-Cylindrical
2   Nonuniform  Nonorthogonal  Structured    yes Quadrilateral xy-Cartesian
2   Nonuniform  Nonorthogonal  Structured    yes Quadrilateral rz-Cylindrical
2   Nonuniform  Nonorthogonal  Unstructured  no  Quadrilateral xy-Cartesian
2   Nonuniform  Nonorthogonal  Unstructured  no  Quadrilateral rz-Cylindrical
2   Nonuniform  Nonorthogonal  Unstructured  yes Quadrilateral xy-Cartesian
2   Nonuniform  Nonorthogonal  Unstructured  yes Quadrilateral rz-Cylindrical
2   Nonuniform  Nonorthogonal  Unstructured  no  Triangular    xy-Cartesian
2   Nonuniform  Nonorthogonal  Unstructured  no  Triangular    rz-Cylindrical
2   Nonuniform  Nonorthogonal  Unstructured  no  Polygonal     xy-Cartesian
2   Nonuniform  Nonorthogonal  Unstructured  no  Polygonal     rz-Cylindrical
3   Uniform     Orthogonal     Structured    no  Hexahedral    xyz-Cartesian
3   Nonuniform  Orthogonal     Structured    no  Hexahedral    xyz-Cartesian
3   Nonuniform  Nonorthogonal  Structured    no  Hexahedral    xyz-Cartesian
3   Uniform     Orthogonal     Structured    yes Hexahedral    xyz-Cartesian
3   Nonuniform  Orthogonal     Structured    yes Hexahedral    xyz-Cartesian
3   Nonuniform  Nonorthogonal  Structured    yes Hexahedral    xyz-Cartesian
3   Nonuniform  Nonorthogonal  Unstructured  no  Hexahedral    xyz-Cartesian
3   Nonuniform  Nonorthogonal  Unstructured  yes Hexahedral    xyz-Cartesian
3   Nonuniform  Nonorthogonal  Unstructured  no  Tetrahedral   xyz-Cartesian
3   Nonuniform  Nonorthogonal  Unstructured  no  Polyhedral    xyz-Cartesian

In general, treat the mesh as:

*   Nonuniform  Nonorthogonal  Unstructured  *   *             if-check

where *-values are mostly handled inside the parallel data structures.

Implications:

 Uniform meshes must be structured.
 1-D meshes must be orthogonal.
 2-D means "not spherical".

Mesh Nomenclature

A mesh consists of a collection of spatial locations or points, called nodes, that are connected in various ways to define distinct spatial volumes, called cells, and to define surface areas, called faces, between the cells and on the boundaries of the mesh.

In a three-dimensional mesh, nodes are zero-dimensional, faces are two-dimensional15.1, and cells are three-dimensional.

In a two-dimensional mesh, nodes are zero-dimensional, faces are one-dimensional (with a suppressed second dimension), and cells are two-dimensional (with a suppressed third dimension).

In a one-dimensional mesh, nodes are zero-dimensional, faces are zero-dimensional (with two suppressed dimensions), and cells are one-dimensional (with two additional suppressed dimensions).

The connectivity of a mesh refers to the way that nodes are connected to form cells, and the way that cells are connected to each other. The connectivity of a mesh may be specified in several ways, but a common form gives the node numbers surrounding each cell in an array.

The cell-shape of a mesh is determined by the maximum allowed number of faces for a cell in the mesh. In some meshes, degenerate cells are allowed which have fewer than the maximum number of faces. For one-dimensional meshes, the only possible cell-shape is segmented, which refers to a line segment or bar as the representation of a cell. For two-dimensional meshes, the possible cell-shapes are triangular, quadrilateral, or polygonal. For three-dimensional meshes, the possible cell-shapes are tetrahedral, hexahedral, or polyhedral.

The geometry of a mesh refers to both the coordinate system used by the mesh and the common names for the coordinate axes that are not suppressed. With a Cartesian coordinate system, using the common names of x, y, and z for the axes, the possible geometries are x-Cartesian, xy-Cartesian, and xyz-Cartesian. With a cylindrical coordinate system, using the common names of r, $ \theta$, and z for the axes, the possible unique geometries are r-Cylindrical, $ \theta$-Cylindrical, r$ \theta$-Cylindrical, rz-Cylindrical, and r$ \theta$z-Cylindrical. With a spherical coordinate system, using the common names of r, $ \theta$ (azimuth, range of 0-2$ \pi$), and $ \phi$ (zenith, range of 0-$ \pi$) for the axes, the possible unique geometries are r-Spherical, $ \theta$-Spherical, $ \phi$-Spherical, r$ \theta$-Spherical, r$ \phi$-Spherical, $ \theta$$ \phi$-Spherical, and r$ \theta$$ \phi$-Spherical. In CÆSAR only the major geometries are included, namely x-Cartesian, r-Cylindrical, r-Spherical, xy-Cartesian, rz-Cylindrical, and xyz-Cartesian.

Mesh Type Descriptions:

In the mesh descriptions that follow, distinctions are made for the connectivity of the mesh

Unstructured Polyhedral or Polygonal Mesh

A mesh is said to be structured, or logically rectangular,
if its nodes and cells can be numbered with an index for each dimension. For example, in three dimensions every cell in a structured mesh can be referred to by an $ \left(\vphantom{ i,j,k }\right.$i, j, k$ \left.\vphantom{ i,j,k }\right)$ triplet. In a structured mesh the connectivity is known a priori - mesh cell $ \left(\vphantom{ i,j,k }\right.$i, j, k$ \left.\vphantom{ i,j,k }\right)$ shares a face with cells $ \left(\vphantom{ i+1,j,k }\right.$i + 1, j, k$ \left.\vphantom{ i+1,j,k }\right)$,$ \left(\vphantom{ i-1,j,k }\right.$i - 1, j, k$ \left.\vphantom{ i-1,j,k }\right)$,$ \left(\vphantom{ i,j+1,k }\right.$i, j + 1, k$ \left.\vphantom{ i,j+1,k }\right)$,$ \left(\vphantom{ i,j-1,k }\right.$i, j - 1, k$ \left.\vphantom{ i,j-1,k }\right)$,$ \left(\vphantom{ i,j,k+1 }\right.$i, j, k + 1$ \left.\vphantom{ i,j,k+1 }\right)$, and $ \left(\vphantom{ i,j,k-1 }\right.$i, j, k - 1$ \left.\vphantom{ i,j,k-1 }\right)$ and is defined by nodes $ \left(\vphantom{ i,j,k }\right.$i, j, k$ \left.\vphantom{ i,j,k }\right)$,$ \left(\vphantom{ i+1,j,k }\right.$i + 1, j, k$ \left.\vphantom{ i+1,j,k }\right)$,$ \left(\vphantom{ i,j+1,k }\right.$i, j + 1, k$ \left.\vphantom{ i,j+1,k }\right)$,$ \left(\vphantom{ i+1,j+1,k }\right.$i + 1, j + 1, k$ \left.\vphantom{ i+1,j+1,k }\right)$,$ \left(\vphantom{ i,j,k+1 }\right.$i, j, k + 1$ \left.\vphantom{ i,j,k+1 }\right)$,$ \left(\vphantom{ i,j,k+1 }\right.$i, j, k + 1$ \left.\vphantom{ i,j,k+1 }\right)$,$ \left(\vphantom{ i+1,j,k+1 }\right.$i + 1, j, k + 1$ \left.\vphantom{ i+1,j,k+1 }\right)$,$ \left(\vphantom{ i,j+1,k+1 }\right.$i, j + 1, k + 1$ \left.\vphantom{ i,j+1,k+1 }\right)$, and $ \left(\vphantom{ i+1,j+1,k+1 }\right.$i + 1, j + 1, k + 1$ \left.\vphantom{ i+1,j+1,k+1 }\right)$. Structured meshes must be formed from quadrilateral meshes in 2-D and hexahedral meshes in 3-D.

A mesh is said to be orthogonal
if all of the mesh faces are aligned with the coordinate axes. Thus, one can speak of a minus x-face or a plus y-face of a cell with no ambiguity. All angles between faces are either zero or 90o. Orthogonal meshes are composed of rectangles in 2-D and right rectangular prisms (also known as rectangular parallelepipeds) in 3-D. In addition, each face is planar in 3-D.

A uniform mesh
has cells that all have the same shape and size. All cells have the same volume and face areas. Stating a cell-width and the number of cells in each direction completely specifies a uniform mesh. Uniform meshes are composed of rectangles in 2-D and right rectangular prisms (also known as rectangular parallelepipeds) in 3-D.

AMR (Adaptive Mesh Refinement) meshes
can be thought of as a halfway point between quadrilateral/hexahedral cell-shapes and polygonal/polyhedral cell-shapes.

Initialize (Mesh, "Uniform", Geometry, NDimensions, dx, dy, dz

Multi_Mesh public procedures:

 Fundamental procedures  
 Initialize  Initializes a Multi_Mesh object.
 Finalize  Finalizes a Multi_Mesh object.
 Valid_State  Returns false iff a Multi_Mesh object is in an invalid state.
 Initialized  Returns true iff a Multi_Mesh object has been initialized.
 Operations  
 Name  Returns the name of the Multi_Mesh object.
 Output  Writes out the Multi_Mesh object.
 Set_Version  Sets the version number of the Multi_Mesh object (also has an assignment interface).
 Version  Returns the version number of the Multi_Mesh object.

Multi_Mesh public defined type:

 Multi_Mesh type  
 Initialized  Initialization status.
 Name  The name for this mesh.
 Version  Version number which is incremented every time the array is modified, or is synced with the version number of a data structure that it depends on when it is updated.

The Multi_Mesh Class code listing contains additional documentation. The Multi_Mesh Class also contains a Unit Test Program.



Subsections
Michael L. Hall