The SEDRIS Data Representation Model
APPENDIX A - Classes Mesh Face Table |
---|
An instance of this DRM class is a 2-dimensional <Data Table>, classified as ECC_MESH_FACE_SET, which defines the face elements of a <Finite Element Mesh> instance in terms of vertex numbers in the ordered <Vertex> component list of the <Finite Element Mesh>.
The two <Regular Axes> of a <Mesh Face Table> instance are constrained as follows.
The first <Regular Axis> assigns an index value to each mesh face in the table.
Field | Value |
---|---|
axis_type | { SE_ELEM_CODE_TYP_INDEX, { SE_INDEX_CODE_MESH_FACE }} |
axis_value_count | total number of Mesh Faces in the table. |
interpolation_type | SE_INTERPOLATION_TYP_DISALLOWED |
first_value | 1 |
spacing | 1 |
spacing_type | SE_SPACING_TYP_ARITHMETIC |
axis_alignment | SE_AXIS_ALNMNT_NONE |
value_unit | EUC_UNITLESS |
value_scale | ESC_UNI |
The second <Regular Axis> assigns an index value to each mesh node in the table.
Field | Value |
---|---|
axis_type | { SE_ELEM_CODE_TYP_INDEX, { SE_INDEX_CODE_MESH_NODE }} |
axis_value_count | M + R, where M = the maximum number of nodes for any one Mesh Face in the table, and R = is the maximum number of perimeter rings in any one mesh face. (If all the mesh faces have simply connected perimeters, then R=1) |
interpolation_type | SE_INTERPOLATION_TYP_DISALLOWED |
first_value | 1 |
spacing | 1 |
spacing_type | SE_SPACING_TYP_ARITHMETIC |
axis_alignment | SE_AXIS_ALNMNT_NONE |
value_unit | EUC_UNITLESS |
value_scale | ESC_UNI |
The <Table Property Descriptions> of a <Mesh Face Table> instance are constrained as follows.
The first <Table Property Description> specifies, for cell i, j, the index in the ordered <Vertex> list of the <Vertex> representing the jth node of the ith mesh face.
If the ith mesh face contains less than j nodes, so that j is greater than the number of the last listed node of mesh face i, then the cell data element contains zero (0).
Field | Value |
---|---|
meaning | { SE_ELEM_CODE_TYP_INDEX, { SE_INDEX_CODE_MESH_VERTEX}} |
value_type | SE_PDV_INTEGER_UNSIGNED |
value_unit | EUC_UNITLESS |
value_scale | ESC_UNI |
Note that the edges of each mesh face i are implicitly defined by this <Table Property Description>, by pairing node j to node j + 1.
The optional second <Table Property Description> defines surface topology by indicating, for each edge (j, j + 1) of mesh face i, the index of mesh face k (if any) that is adjacent to mesh face i along the edge.
A value of 0 indicates an "outside" or "universal" adjacency. A value of i for mesh face i indicates that the edge is artificially connecting an inside perimeter ring to another perimeter ring.
Field | Value |
---|---|
meaning | { SE_ELEM_CODE_TYP_INDEX, { SE_INDEX_CODE_ADJACENT_MESH_FACE}} |
value_type | SE_PDV_INTEGER_UNSIGNED |
value_unit | EUC_UNITLESS |
value_scale | ESC_UNI |
For a given SE_INDEX_CODE_MESH_FACE i (>0) and SE_INDEX_CODE_MESH_NODE j, the (i, j)-th cell gives the vertex number that comprises the j-th node of the i-th mesh face. The mesh face vertices are listed (j index) in clockwise order around the outer perimeter of the mesh face, starting and ending with a first vertex. If inner perimeter rings are present, the vertex list along the SE_INDEX_CODE_MESH_NODE axis continues with inner perimeter vertices in counter-clockwise order starting and ending with a first vertex on each inner ring.
The mesh face node ordering implicitly defines the edges of each mesh face. The data provider has the option of defining Surface topology by adding a second <Table Property Description>, with meaning SE_INDEX_CODE_ADJACENT_MESH_FACE, to each cell. The SE_INDEX_CODE_ADJACENT_MESH_FACE in cell (i,j) is the mesh face adjacent to mesh face i at the edge between nodes j and j+1.
Consider 6 <Vertex> instances, used to define a <Mesh Face Table>, where the mesh would be diagrammed as follows.
(k) =k Mesh: (1)-----(2)-----(3) \ A / \ B | \ / C \ | (4)------(5)-(6)
So in this example, 6 <Vertex> instances form the nodes of the mesh, which has 3 mesh faces (A, B, C).
The corresponding <Mesh Face Table>, without surface topology, would be organized as follows, where each individual cell contains a vertex number.
ALIGN=CENTER>Node Number | |||||
---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | |
1 (Mesh Face A) | 1 | 2 | 4 | 1 | 0 |
2 (Mesh Face B) | 2 | 3 | 6 | 5 | 2 |
3 (Mesh Face C) | 4 | 2 | 5 | 4 | 0 |
Consider the <Mesh Face Table> from the previous example, with the addition of surface topology. In this instance, each individual cell contains a {vertex number, adjacent mesh face number} pair.
ALIGN=CENTER>Node Number | |||||
---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | |
1 (Mesh Face A) | 1, 0 | 2, 3 | 4, 0 | 1, 0 | 0, 0 |
2 (Mesh Face B) | 2, 0 | 3, 0 | 6, 0 | 5, 3 | 2, 0 |
3 (Mesh Face C) | 4, 1 | 2, 2 | 5, 0 | 4, 0 | 0, 0 |
No. A <Mesh Face Table> has very rigid constraints on the values of its <Axis> and <Table Property Description> components, cell data ordering, and classification. Furthermore, a <Mesh Face Table> can only be instantiated as a component of a <Finite Element Mesh>.
The rule is:
For a given SE_INDEX_CODE_MESH_VERTEX i, the nodes j shall be listed starting from a vertex on the outside perimeter of the Mesh Face and continuing consecutively around the perimeter in clockwise direction until the first vertex is reached (and repeated). If "inside" perimeters exist, node numbering continues counter clockwise around each internal ring in similar fashion. Clockwise implies an "up" direction. If the <Finite Element Mesh> is a surface, then "up" should be chosen consistently across all Mesh Faces. However, if the mesh is a solid mesh, then "up" is arbitrary for each Mesh Face.
This indicates the kind of information represented by the <Data Table>, such as terrain elevation or water characteristics.
|