A Vertex_defined_cell is a Region that has vertices specified for it.
NOTE - The connectivity between instances of Vertex_defined_cell can be deduced from their vertices. An Unstructured_mesh is often formed from a set of instances of Vertex_defined_cell.
The number of vertices of the cell, and their position with respect to the shape of the cell depend upon the shape of the region and the order of the cell. Table 1 specifies:
Table 1: Vertex positions for a Vertex_defined_cell
vertex |
array position |
parametric position in cell |
edge: 1 £ i £ order[1] +1 |
i |
x=(i - 1)/order[1] |
triangle: 1 £ i £ order[1] +2 - j 1 £ j £order[1] - 1 |
i + (j - 1)*(order[1] + 1) - (j - 1)*(j - 2)/2 |
L2=(i - 1)/order[1] L3=(j - 1)/order[1] |
quadrilateral: 1 £ i £ order[1] +1 1 £ j £ order[2] + 1 |
i + (j - 1)*(order[1] + 1) |
x=(i - 1)/order[1] h=(j - 1)/order[2] |
tetrahedron: 1 £ i £ order[1] + 2 - j 1 £ j £ order[1] + 2 - k 1 £ k £ order[1] + 1 |
i + (j - 1)*(order[1] + 1) - (j - 1)*(j - 2)/2 + (order[1] + 1)*(order[1] + 2)*(order[1] + 3)/6 - (order[1] + 2 - k)*(order[1] + 3 - k)*(order[1] + 4 - k)/6 |
L2=(i - 1)/order[1] L3=(j - 1)/order[1] L4=(k - 1)/order[1] |
pyramid: 1 £ i £ order[1] +2 - k 1 £ j £order[1] + 2 - k 1 £ k £order[1] - 1 |
The nodes on the base of the pyramid (k=1) are in positions: i + (j - 1)*(order[1] + 1). The nodes for subsequent layers follow, with the singular position at the top of the pyramid as the last position in the list. |
x=(i - 1)/order[1] h=(j - 1)/order[2] z=(k - 1)/order[3] This cell shape is regarded as a hexahedron with a singularity at z=1. |
wedge: 1 £ i £ order[1] +2 - j 1 £ j £order[1] - 1 1 £ k £order[3] - 1 |
i + (j - 1)*(order[1] + 1) - (j - 1)*(j - 2)/2 + (k - 1)*(order[1] + 2)*(order[1] + 1)/2 |
L2=(i - 1)/order[1] L3=(j - 1)/order[1] z=(k - 1)/order[3] |
hexahedron: 1 £ i £ order[1] +1 1 £ j £ order[2] + 1 1 £ k £ order[3] + 1 |
i + (j - 1)*(order[1] + 1) + (k - 1)*(order[1] + 1)*(order[2] + 1) |
x=(i - 1)/order[1] h=(j - 1)/order[2] z=(k - 1)/order[3] |
n-dimensional hyperbrick: |
generalisation of the hexahedron case into n-dimensions |
generalisation of the hexahedron case into n-dimensions |
The following notation is used in Table 1:
EXPRESS specification:
*)
ENTITY Vertex_defined_cell
SUBTYPE OF (Region);
order : ARRAY[1,dimension] OF INTEGER;
vertices : ARRAY[1,number_of_vertices] OF OPTIONAL Vertex;
DERIVE
dimension : INTEGER := SELF/Region.topological_dimension;
standard_shape : BOOLEAN := SELF/Region.standard_shape;
shape_code : STRING := SELF/Region.shape_code;
number_of_vertices : INTEGER :=
number_of_cell_vertices (dimension, shape_code, order);
WHERE
necessary_shape :
IF (dimesion = 2) OR (dimension = 3) THEN
standard_shape;
ELSE
TRUE;
END_IF;
valid_order :
CASE dimension OF
2 : CASE shape_code OF
'TS001' : order[1] = order[2]; (* triangle *)
OTHERWISE : TRUE;
END_CASE;
3 : CASE shape_code OF
'TS003' : order[1] = order[2] AND
order[1] = order[3]; (* tetrahedron *)
'TS004' : order[1] = order[2] AND
order[1] = order[3]; (* pyramid *)
'TS005' : order[1] = order[2]; (* wedge *)
OTHERWISE : TRUE;
END_CASE;
OTHERWISE : TRUE;
END_CASE;
END_ENTITY;
(*
Attribute definitions:
order: The order of the Vertex_defined_cell. This can be different for different topological directions.
vertices: The vertices of the Vertex_defined_cell. Position in the array is related to position with respect to the shape of the cell, as specified in Table 1.
standard_shape: A Boolean flag that is:
- true:
- the shape is specified, and is a standard shape defined by this part of ISO 10303;
- false:
- otherwise.
shape_code: A text string that is:
- the shape code, if the shape is specified and a standard shape defined by this part of ISO 10303;
- null, otherwise.
Formation propositions:
necessary_shape: A Vertex_defined_cell with a topological dimension of 2 or 3 shall have a standard shape.
valid_order: The order of the Vertex_defined_cell shall be as follows:
- if the Vertex_defined_cell is a triangle, then the two components of the order shall be the same;
- if the Vertex_defined_cell is a tetrahedron or a pyramid, then the three components of the order shall be the same;
- if the Vertex_defined_cell is a wedge, then the first two components of the order shall be the same.