Irrespective of the mesh type, a mesh essentially provides a data structure that enables efficient storage, management and access of:
- Mesh
Geometry
information (i.e., nodal coordinates), - Mesh
Topology
information (i.e., cell-to-node connectivity, etc.), and FieldData
stored on a mesh
The underlying, concrete representation of the Geometry
and Topology
of a mesh is the key distinguishing characteristic used to classify a mesh into the different MeshTypes
. As a prerequisite to the proceeding discussion on the taxonomy of the various MeshTypes
, this section provides a high level description of the key constituents of the MeshRepresentation
. Namely, the Topology
, Geometry
and FieldData
comprising a mesh.
The topology of a mesh, ℳ(Ω) ∈ ℝd, is defined by the collection of topological entities, e.g. the Cells
, Faces
and Nodes
, comprising the mesh and the associated adjacency information that encodes the topological connections between them, broadly referred to as Connectivity
information. Each topological entity in the mesh is identified by a unique index, as depicted in the sample UnstructuredMesh
shown in figs/meshRepresentation
. This provides a convenient way to traverse and refer to individual entities in the mesh.
Sample unstructured mesh. Each node, cell and face on the mesh has a unique index.
In Mint, the three fundamental topological entities comprising a mesh are (1) Cells
, (2) Faces
, and (3) Nodes
.
Note
The current implementation does not provide first class support for edges and associated edge data in 3D. However, this is a feature we are planning to support in future versions of Mint.
A cell, 𝒞i, is given by an ordered list of Nodes
, 𝒞i = {n0, n1, ...nk}, where each entry, nj ∈ 𝒞i, corresponds to a unique node index in the mesh. The order of Nodes
defining a cell is determined according to a prescribed local numbering convention for a particular cell type. See figs/linearCells
and figs/q2Cells
. All Mint CellTypes
follow the CGNS Numbering Conventions.
Similarly, a face, ℱi, is defined by an ordered list of Nodes
, ℱi = {n0, n1, ..., nk}. Faces are essentially Cells
whose topological dimension is one less than the dimension of the Cells
they are bound to. See figs/cellFaces
. Consequently, the constituent faces of a 3D cell are 2D topological entities, such as triangles or quads, depending on the cell type. The faces of a 2D cell are 1D topological entities, i.e. segments. Last, the faces of a 1D cell are 0D topological entities, i.e. Nodes
.
Note
In 1D the Faces
of a cell are equivalent to the constituent mesh Nodes
, hence, Mint does not explicitly support Faces
in 1D.
Constituent faces of a cell in 2D and 3D respectively. the constituent faces of a 3D cell are 2D topological entities, such as triangles or quads, depending on the cell type. The faces of a 2D cell are 1D topological entities, i.e. segments.
Face Types
A mesh face can be bound to either one or two Cells
:
Faces
bound to twoCells
, within the same domain, are called internal faces.Faces
bound to twoCells
, across different domains (or partitions), are called internal boundary faces. Internal boundary faces define the communication boundaries where ghost data is exchanged between domains.Faces
bound to a single cell are called external boundary faces. External boundary faces (and/or their consistuent nodes) are typically associated with a boundary condition.
Face Orientation
As with Cells
, the ordering of the constituent nodes of a face is determined by the cell type. However, by convention, the orientation of a face is according to an outward pointing face normal, as illustrated in figs/faceOrientation
.
From the viewpoint of a cell, 𝒞k, its constituent faces, defined in the local node numbering of the cell, are oriented according to an outward facing normal with respect to the cell, 𝒞k. For example, in figs/faceOrientation
(a), the triangle, 𝒞k, has three faces that are oriented according to an outward facing normal and defined using local node numbers with respect to their cell as follows, ℱ0 = {0, 1}, ℱ1 = {1, 2} and ℱ2 = {2, 0}
As noted earlier, a face can have at most two adjacent Cells
, denoted by 𝒞0 and 𝒞1. By convention, from the viewpoint of a face, ℱk, defined using global node numbers, the face is oriented according to an outward facing normal with respect to the cell corresponding to 𝒞0. As depicted in figs/faceOrientation
(b), the face denoted by ℱk has an outward facing normal with respect to 𝒞0, consequently it is defined as follows, ℱk = {1, 2}.
Note
By convention, 𝒞1 is set to − 1 for external boundary faces, which are bound to a single cell.
The
Nodes
are zero dimensional topological entities and hence, are the lowest dimensional constituent entities of a mesh. TheNodes
are associated with the spatial coordinates of the mesh and are used in defining the topology of the higher dimensional topological entities comprising the mesh, such as theCells
,Faces
, etc., as discussed earlier. In a sense, theNodes
provide the means to link theTopology
of the mesh to its constituentGeometry
and thereby instantiate the mesh in physical space.
Definition
A mesh node, 𝓃𝒾, is associated with a point, pi ∈ ℝd and provides the means to:
- Link the
Topology
of the mesh to its constituentGeometry
- Support one or more degrees of freedom, evaluated at the given node location.
Notably, the nodes of a mesh may be more than just the vertices of the mesh. As discussed in the PreliminaryConcepts
section, a mesh is a discretization of a PDE. Recall, the primary purpose of the mesh is to define the discrete locations, in both space and time, at which the unknown variables or degrees of freedom of the governing PDE are evaluated. Depending on the numerical scheme employed and the CellTypes
used, additional mesh Nodes
may be located on the constituent cell faces, edges and in the cell interior. For example, in the Finite Element Method (FEM), the nodes for the linear Lagrange Finite Elements, see figs/linearCells
, are located at the cell vertices. However, for quadratic CellTypes
, see figs/q2cells
, the Lagrange P2 finite element, for the quadrilateral and hexahedron (in 3D) cells, includes as Nodes
, the cell, face and edge (in 3D) centroids in addition to the cell vertices. Other higher order finite elements may involve additional nodes for each edge and face as well as in the interior of the cell.
The topological connections or adjecencies between the Cells
, Faces
and Nodes
comprising the mesh, give rise to a hierarchical topological structure, depicted in figs/topological_structure
, that is broadly referred to as Connectivity
information. At the top level, a mesh consists of one or more Cells
, which constitute the highest dimensional entity comprising the mesh. Each cell is bounded by zero or more Faces
, each of which is bounded by one or more Nodes
.
Hierarchical topological structure illustrating the downward and upward topological connections of the constituent mesh entities supported in Mint.
The topological connections between the constituent entities of the mesh can be distinguished in (a) downward and (b) upward topological connections, as illustrated in figs/topological_structure
.
- The downward topological connections encode the connections from higher dimensional mesh entities to lower dimensional entities, such as cell-to-node, face-to-node or cell-to-face.
- The upward topological connections, also called reverse connectivities, encode the connections from lower dimensional mesh entities to higher dimensional entities, such as face-to-cell.
Two key guiding considerations in the design and implementation of mesh data structures are storage and computational efficiency. In that respect, the various MeshTypes
offer different advantages and tradeoffs. For example, the inherent regular topology of a StructuredMesh
implicitly defines the Connectivity
information. Consequently, the topological connections between mesh entities can be efficiently computed on-the-fly. However, for an UnstructuredMesh
, the Connectivity
information has to be extracted and stored explicitly so that it is readily available for computation.
An UnstructuredMesh
representation that explicitly stores all 0 to d topological entities and associated downward and upward Connectivity
information is said to be a full mesh representation. Otherwise, it is called a reduced mesh representation. In practice, it can be prohibitively expensive to store a full mesh representation. Consequently, most applications keep a reduced mesh representation.
The question that needs to be addressed at this point is what Connectivity
information is generally required. The answer can vary depending on the application. The type of operations performed on the mesh impose the requirements for the Connectivity
information needed. The minimum sufficient representation for an UnstructuredMesh
is the cell-to-node Connectivity
, since, all additional Connectivity
information can be subsequently computed based on this information.
In an effort to balance both flexibility and simplicity, Mint, in its simplest form, employs the minumum sufficient UnstructuredMesh
representation, consisting of the cell-to-node Connectivity
. This allows applications to employ a fairly light-weight mesh representation when possible. However, for applications that demand additional Connectivity
information, Mint provides methods to compute the needed additional information.
Warning
The present implementation of Mint provides first class support for cell-to-node, cell-to-face, face-to-cell and face-to-node Connectivity
information for all the MeshTypes
. Support for additional Connectivity
information will be added in future versions based on demand by applications.
The Geometry
of a mesh is given by a set of Nodes
. Let 𝒩 = {n0, n1, n2, ..., nk} be the finite set of nodes comprising a mesh, ℳ(Ω) ∈ ℝd, where d is the spatial dimension, d ∈ {1, 2, 3}. Each node, ni ∈ 𝒩, corresponds to a point, pi ∈ ℝd, whose spatial coordinates, i.e. an ordered tuple, define the physical location of the node in space, ni ∈ ℝd . The Nodes
link the Geometry
of the mesh to its Topology
. The Geometry
and Topology
of the mesh collectively define the physical shape, size and location of the mesh in space.
The FieldData
are used to define various physical quantities over the constituent mesh entities, i.e. the Cells
, Faces
and Nodes
of the mesh. Each constituent mesh entity can be associated with zero or more fields, each of which may correspond to a scalar, vector or tensor quantity, such as temperature, velocity, pressure, etc. Essentially, the FieldData
are used to define the solution to the unknown variables of the governing PDE that are evaluated on a given mesh, as well as, any other auxiliary variables or derived quantities that an application may need.
Warning
The present implementation of Mint supports FieldData
defined on Cells
, Faces
and Nodes
. Support for storing FieldData
on edges will be added in future versions based on application demand.