Vertex defined cell Application Object


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:

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: