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, , and z for the axes, the possible unique geometries are r-Cylindrical, -Cylindrical, r-Cylindrical, rz-Cylindrical, and rz-Cylindrical. With a spherical coordinate system, using the common names of r, (azimuth, range of 0-2), and (zenith, range of 0-) for the axes, the possible unique geometries are r-Spherical, -Spherical, -Spherical, r-Spherical, r-Spherical, -Spherical, and r-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
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.