Skip navigation links
(CGNS Documentation Home Page) (Steering Committee Charter) (Overview and Entry-Level Document) (A User's Guide to CGNS) (Mid-Level Library) (Standard Interface Data Structures) (SIDS File Mapping Manual) (CGIO User's Guide) (Parallel CGNS User's Guide) (ADF Implementation) (HDF5 Implementation) (Python Implementation) (CGNS Tools and Utilities)

(Introduction) (Design Philosophy of Standard Interface Data Structures) (Conventions) (Building-Block Structure Definitions) (Data-Array Structure Definitions) (Hierarchical Structures) (Grid Coordinates, Elements, and Flow Solution) (Multizone Interface Connectivity) (Boundary Conditions) (Governing Flow Equations) (Time-Dependent Flow) (Miscellaneous Data Structures) (Conventions for Data-Name Identifiers) (Structured Two-Zone Flat Plate Example)

3 Conventions

3.1 Data Structure Notation Conventions

The intellectual content of the CGNS database is defined in terms of C-like notation including typedefs and structures. The database is made up of entities, and each entity has a type associated with it. Entities include such things as the dimensionality of the grid, an array of grid coordinates, or a zone that contains all the data associated with a given region. Entities are defined in terms of types, where a type can be an integer or a collection of elements (a structure) or a hierarchy of structures or other similar constructs.

The terminology "instance of an entity" is used to refer to an entity that has been assigned a value or whose elements have been assigned values. The terminology "specific instance of a structure" is also used in the following sections. It is short for an instance of an entity whose type is a structure.

Names of entities and types are constructed using conventions typical of Mathematica external link [Mathematica 3.0, Wolfram Research, Inc. external link, Champaign, IL (1996)]. Names or identifiers contain no spaces and capitalization is used to distinguish individual words making up a name; names are case-sensitive. The character "/" should be avoided in names, as well as the names "." and "..", as these have special meaning when referencing elements of a structure entity. An entity name cannot exceed 32 characters.

The following notational conventions are employed:

    !   comment to end of line
_t suffix used for naming a type
; end of a definition, declaration, assignment or entity instance
= assignment (takes on the value of)
:= indicates a type definition (typedef)
[ ] delimiters of an array
{ } delimiters of a structure definition
{{ }} delimiters of an instance of a structure entity
< > delimiters of a structure parameter list
int integer
real floating-point number
char character
bit bit
Enumeration( ) indicates an enumeration type
Data( ) indicates an array of data, which may be multidimensional
List( ) indicates a list of entities
Identifier( ) indicates an entity identifier
LogicalLink( ) indicates a logical link
/ delimiter for element of a structure entity
../ delimiter for parent of a structure entity
(r) designation for a required structure element
(o) designation for an optional structure element
(o/d) designation for an optional structure element with default if absent

An enumeration type is a set of values identified by names; names of values within a given enumeration declaration must be unique. An example of an enumeration type is the following:

  Enumeration( Dog, Cat, Bird, Frog ) 
This defines an enumeration type which contains four values.

Data() identifies an array of given dimensionality and size in each dimension, whose elements are all of a given data type. It is written as,

  Data( DataType, Dimension, DimensionValues[] ) ;
Dimension is an integer, and DimensionValues[] is an array of integers of size Dimension. Dimension and DimensionValues[] specify the dimensionality of the array and its size in each dimension. DataType specifies the data type of the array's elements; it may consist of one of the following: int, real, char or bit. For multidimensional arrays, FORTRAN indexing conventions are used. Data() is formulated to map directly onto the data section of an ADF node.

A typedef establishes a new type and defines it in terms of previously defined types. Types are identified by the suffix "_t", and the symbol ":=" is used to establish a type definition (or typedef). For example, the above enumeration example can be used in a typedef:

  Pet_t := Enumeration( Dog, Cat, Bird, Frog ) ;
This defines a new type Pet_t, which can then be used to declare a new entity, such as,
  Pet_t MyFavoritePet ;
By the above typedef and declaration, MyFavoritePet is an entity of type Pet_t and can have the values Dog, Cat, Bird or Frog. A specific instance of MyFavoritePet is setting it equal to one of these values (e.g., MyFavoritePet = Bird).

A structure is a type that can contain any number of elements, including elements that are also structures. An example of a structure type definition is:

  Sample_t :=
    {
    int Dimension ;                                      (r)

    real[4] Vector ;                                     (o)

    Pet_t ObnoxiousPet ;                                 (o)
    } ;
where Sample_t is the type of the structure. This structure contains three elements, Dimension, Vector and ObnoxiousPet, whose types are int, real[4] and Pet_t, respectively. The type int specifies an integer, and real[4] specifies an array of reals that is one-dimensional with a length of four. The "(r)" and "(o)" notation in the right margin is explained below. Given the definition of Sample_t, entities of this type can then be declared (e.g., Sample_t Sample1;). An example of an instance of a structure entity is given by,
  Sample_t Sample1 = 
    {{
    Dimension = 3 ;
    Vector = [1.0, 3.45, 2.1, 5.4] ;
    ObnoxiousPet = Dog ;
    }} ;
Note the different functions played by single braces "{" and double braces "{{". The first is used to delimit the definition of a structure type; the second is used to delimit a specific instance of a structure entity.

Some structure type definitions contain arbitrarily long lists of other structures or types. These lists will be identified by the notation,

  List( Sample_t Sample1 ... SampleN ) ;
where Sample1 ... SampleN is the list of structure names or identifiers, each of which has the type Sample_t. Within each list, the individual structure names are user-defined.

In the CGNS database it is sometimes necessary to reference the name or identifier of a structure entity. References to entities are denoted by Identifier(), whose single argument is a structure type. For example,

  Identifier(Sample_t) SampleName ;
declares an entity, SampleName, whose value is the identifier of a structure entity of type Sample_t. Given this declaration, SampleName could be assigned the value Sample1 (i.e., SampleName = Sample1).

It is sometimes convenient to directly identify an element of a specific structure entity. It is also convenient to indicate that two entities with different names are actually the same entity. We borrow UNIX conventions to indicate both these features, and make the analogy that a structure entity is a UNIX directory and its elements are UNIX files. An element of an entity is designated by "/"; an example is Sample1/Vector). The structure entity that a given element belongs to is designated "../". A UNIX-like logical link that specifies the sameness of two apparently different entities is identified by LogicalLink(); it has one argument. An example of a logical link is as follows: Suppose a specific instance of a structure entity contains two elements that are of type Sample_t; call them SampleA and SampleB. The statement that SampleB is actually the same entity as SampleA is,

  SampleB = LogicalLink(../SampleA) ;
The argument of LogicalLink() is the UNIX-like "path name" of the entity with which the link is made. In this document, LogicalLink() and the direct specification of a structure element via "/" and "../" are actually seldom used. These language elements are never used in the actual definition of a structure type.

Structure type definitions include three additional syntactic/semantic notions. These are parameterized structures, structure-related functions, and the identification of required and optional fields within a structure.

As previously stated, one of our design objectives is to minimize duplication of information within the CGNS database. To meet this objective, information is often stored in only one location of the hierarchy; however, that information is typically used in other parts of the hierarchy. A consequence of this is that it may not be possible to decipher all the information associated with a given entity in the hierarchy without knowledge of data contained in higher level entities. For example, the grid size of a zone is stored in one location (in Zone_t), but is needed in many substructures to define the size of grid and solution-data arrays.

This organization of information must be reflected in the language used to describe the database. First, parameterized structures are introduced to formalize the notion that information must be passed down the hierarchy. A given structure type is defined in terms of a list of parameters that precisely specify what information must be obtained from the structure's parent. These structure-defining parameters play a similar role to subroutine parameters in C or FORTRAN and are used to define fields within the structure; they are also passed onto substructures. Parameterized structures are also loosely tied to templates in C++.

Parameterized structures are identified by the delimiters < > enclosing the list of parameters. Each structure parameter in a structure-type definition consists of a type and an identifier. Examples of parameterized structure type definitions are:

  NewSample_t< int Dimension, int Fred > :=
    {
    int[Dimension] Vector ;                              (o)

    Pet_t ObnoxiousPet ;                                 (o)

    Stuff_t<Fred> Thingy ;                               (o)
    } ;

  Stuff_t< int George > :=
    {
    real[George] IrrelevantStuff ;                       (r)
    } ;
NewSample_t and Stuff_t are parameterized structure types. Dimension and Fred are the structure parameters of NewSample_t. George is the structure parameter of Stuff_t. All structure parameters in this example are of type int. Thingy is a structure entity of type Stuff_t; it uses the parameter Fred to complete its declaration. Note the use of George and Fred in the above example. George is a parameter in the definition of Stuff_t; Fred is an argument in the declaration of an entity of type Stuff_t. This mimics the use of parameters in function definitions in C.

A second language feature required to cope with the cascade of information within the hierarchy is structure-related functions. For example, the size of an array within a given structure may be a function of one or more of the structure-defining parameters, or the array size may be a function of an optional field within the structure. No new syntax is provided to incorporate structure-related functions; they are instead described in terms of their return values, dependencies, and functionality.

An additional notation used in structure typedefs is that each element or field within a structure definition is identified as required, optional, or optional with a default if absent; these are designated by "(r)", "(o)", and "(o/d)", respectively, in the right margin of the structure definition. These designations are included to assist in implementation of the data structures into an actual database and can be used to guide mapping of data as well as error checking. "Required" fields are those essential to the interpretation of the information contained within the data structure. "Optional" fields are those that are not necessary but potentially useful, such as documentation. "Defaulted-optional" fields are those that take on a known default if absent from the database.

In the example of Sample_t above, only the element Dimension is required. Both elements Vector and ObnoxiousPet are optional. This means that in any specific instance of the structure, only Dimension must be present. An alternative instance of the entity Sample1 shown above is the following:

  Sample_t Sample1 = 
    {{
    Dimension = 4 ;
    }} ;

None of the entities and types defined in the above examples are actually used in the definition of the SIDS. As a final note, the reader should be aware that the SIDS is a conceptual description of the form of the data. The actual location of data in the file is determined by the file mapping, defined by the appropriate File Mapping Manual.

3.2 Structured Grid Notation and Indexing Conventions

A grid is defined by its vertices. In a 3-D structured grid, the volume is the ensemble of cells, where each cell is the hexahedron region defined by eight nearest neighbor vertices. Each cell is bounded by six faces, where each face is the quadrilateral made up of four vertices. An edge links two nearest-neighbor vertices; a face is bounded by four edges.

In a 2-D structured grid, the notation is more ambiguous. Typically, the quadrilateral area composed of four nearest-neighbor vertices is referred to as a cell. The sides of each cell, the line linking two vertices, is either a face or an edge. In a 1-D grid, the line connecting two vertices is a cell.

A structured multizone grid is composed of multiple regions called zones, where each zone includes all the vertices, cells, faces, and edges that constitute the grid in that region.

Indices describing a 3-D grid are ordered (i,j,k); (i,j) is used for 2-D and (i) for 1-D.

Cell centers, face centers, and edge centers are indexed by the minimum i, j, and k indices of the connecting vertices. For example, a 2-D cell center (or face center on a 3-D grid) would have the following convention:

Section of 2-D grid, with indices

In addition, the default beginning vertex for the grid in a given zone is (1,1,1); this means the default beginning cell center of the grid in that zone is also (1,1,1).

A zone may contain grid-coordinate or flow-solution data defined at a set of points outside the zone itself. These are referred to as "rind" or ghost points and may be associated with fictitious vertices or cell centers. They are distinguished from the vertices and cells making up the grid within the zone (including its boundary vertices), which are referred to as "core" points. The following is a 2-D zone with a single row of rind vertices at the minimum and maximum i-faces. The grid size (i.e., the number of core vertices in each direction) is 5×4. Core vertices are designated by a bullet, and rind vertices by "×". Default indexing is also shown for the vertices.

5 by 4 core grid, with row of rind vertices at minimum and maximum i faces

For a zone, the minimum faces in each coordinate direction are denoted i-min, j-min and k-min; the maximum faces are denoted i-max, j-max and k-max. These are the minimum and maximum core faces. For example, i-min is the face or grid plane whose core vertices have minimum i index (which if using default indexing is 1).

3.3 Unstructured Grid Element Numbering Conventions

The major difference in the way structured and unstructured grids are recorded is the element definition. In a structured grid, the elements can always be recomputed easily using the computational coordinates, and therefore they are usually not written in the data file. For an unstructured grid, the element connectivity cannot be easily built, so this additional information is generally added to the data file. The element information typically includes the element type or shape, and the list of nodes for each element.

In an unstructured zone, the nodes are ordered from 1 to N, where N is the number of nodes in the zone. An element is defined as a group of one or more nodes, where each node is represented by its index. The elements are indexed from 1 to M within a zone, where M is the total number of elements defined for the zone.

CGNS supports eight element shapes - points, lines, triangles, quadrangles, tetrahedra, pentahedra, pyramids, and hexahedra. Elements describing a volume are referred to as 3-D elements. Those defining a surface are 2-D elements. Line and point elements are called 1-D and 0-D elements, respectively.

In a 3-D unstructured mesh, the cells are defined using 3-D elements, while the boundary patches may be described using 2-D elements. The complete element definition may include more than just the cells.

Each element shape may have a different number of nodes, depending on whether linear, quadratic, or cubic interpolation is used. Therefore the name of each type of element is composed of two parts; the first part identifies the element shape, and the second part the number of nodes. The following table summarizes the element types supported in CGNS.

Element Types in CGNS


Dimensionality   Shape   Linear   Quadratic   Cubic   Quartic
      Interpolation   Interpolation   Interpolation   Interpolation

0-D Point NODE NODE NODE NODE
1-D Line BAR_2 BAR_3 BAR_4 BAR_5
2-D Triangle TRI_3 TRI_6 TRI_9, TRI_10 TRI_12, TRI_15
Quadrangle QUAD_4 QUAD_8, QUAD_9 QUAD_12, QUAD_16 QUAD_P4_16, QUAD_25
3-D Tetrahedron TETRA_4 TETRA_10 TETRA_16, TETRA_20 TETRA_22, TETRA_34, TETRA_35
Pyramid PYRA_5 PYRA_13, PYRA_14 PYRA_21, PYRA_29, PYRA_30 PYRA_P4_29, PYRA_50, PYRA_55
Pentahedron PENTA_6 PENTA_15, PENTA_18 PENTA_24, PENTA_38, PENTA_40 PENTA_33, PENTA_66, PENTA_75
Hexahedron HEXA_8 HEXA_20, HEXA_27 HEXA_32, HEXA_56, HEXA_64 HEXA_44, HEXA_98, HEXA_125


General polyhedral elements can be recorded using the CGNS generic element types NGON_n and NFACE_n. See the Elements_t structure definition for more detail.

The ordering of the nodes within an element is important. Since the nodes in each element type could be ordered in multiple ways, it is necessary to define numbering conventions. The following sections describe the element numbering conventions used in CGNS.

Like a structured zone, an unstructured zone may contain grid-coordinates or flow-solution data at points outside of the zone itself, through the use of ghost or "rind" points and elements. However, unlike for structured zones, rind data for unstructured zones cannot be defined implicitly (i.e., via indexing conventions alone). In other words, when using rind with unstructured zones, the rind grid points and their element connectivity information should always be given.

3.3.1 1-D (Line) Elements

1-D elements represent geometrically a line (or bar). The linear form, BAR_2, is composed of two nodes at each extremity of the line. The quadratic form, BAR_3, has an additional node located at the middle of the line. The cubic form of the line, BAR_4, contains two nodes interior to the endpoints. The quartic form of the line, BAR_5, contains three nodes interior to the endpoints.

Linear and Quadratic Elements
    BAR_2

BAR_2 element
    BAR_3

BAR_3 element
Cubic Elements
    BAR_4
BAR_4 element
Quartic Elements
    BAR_5
BAR_5 element

Note that nodes are uniformly spaced on all edges for all higher order elements.

3.3.2 2-D (Surface) Elements

2-D elements represent a surface in either 2-D or 3-D space. Note that in physical space, the surface need not be planar, but may be curved. In a 2-D mesh the elements represent the cells themselves; in a 3-D mesh they represent faces. CGNS supports two shapes of 2-D elements - triangles and quadrangles.

The normal vector of a 2-D element is computed using the cross product of a vector from the first to second node, with a vector from the first to third node. The direction of the normal is such that the three vectors (i.e., N2 - N1, N3 - N1, and N) form a right-handed triad.

N = (N2 - N1) cross (N3 - N1)

In a 2-D mesh, all elements must be oriented the same way; i.e., all normals must point toward the same side of the mesh.

3.3.2.1 Triangular Elements

Six types of triangular elements are supported in CGNS, TRI_3, TRI_6, TRI_9, TRI_10, TRI_12, and TRI_15. TRI_3 elements are composed of three nodes located at the three geometric corners of the triangle. TRI_6 elements have three additional nodes located at the middles of the three edges. The cubic forms of triangular elements, TRI_9 and TRI_10 contain two interior nodes along each edge, and an interior face node in the case of TRI_10. The quartic forms of triangular elements, TRI_12 and TRI_15 contain three interior nodes along each edge, and three interior face nodes in the case of TRI_15.

Linear and Quadratic Elements
    TRI_3 and TRI_6
TRI_3 and TRI_6 elements
Cubic Elements
    TRI_9 and TRI_10
TRI_9 and TRI_10 elements

Notes

    N1,...,N10   Grid point identification number. Integer ≥ 0 or blank, and no two values may be the same. Grid points N1, N2, and N3 are in consecutive order about the triangle.

E1,E2,E3 Edge identification number.

F1 Face identification number.
Quartic Elements
    TRI_12
TRI_12 element
    TRI_15
TRI_15 element

Notes

    N13, N14, and N15 are equally spaced within the element.

3.3.2.2 Quadrilateral Elements

CGNS supports seven types of quadrilateral elements, QUAD_4, QUAD_8, QUAD_9, QUAD_12, QUAD_16, QUAD_P4_16, and QUAD_25. QUAD_4 elements are composed of four nodes located at the four geometric corners of the quadrangle. In addition, QUAD_8 and QUAD_9 elements have four mid-edge nodes, and QUAD_9 adds a mid-face node. The cubic forms of quadrilateral elements, QUAD_12 and QUAD_16 contain two interior nodes along each edge, and four interior face nodes in the case of QUAD_16. The quartic forms of quadrilateral elements, QUAD_P4_16 and QUAD_25 contain three interior nodes along each edge, and nine interior face nodes in the case of QUAD_25.

Linear and Quadratic Elements
    QUAD_4 and QUAD_8
QUAD_4 and QUAD_8 elements

QUAD_9

QUAD_9 element
Cubic Elements
    QUAD_12

QUAD_12 element
    QUAD_16

QUAD_16 element

Notes

    N1,...,N16   Grid point identification number. Integer ≥ 0 or blank, and no two values may be the same. Grid points N1, ..., N4 are in consecutive order about the quadrangle.

E1,...,E4 Edge identification number.

F1 Face identification number.
Quartic Elements
    QUAD_P4_16

QUAD_P4_16 element
    QUAD_25

QUAD_25 element

3.3.3 3-D (Volume) Elements

3-D elements represent a volume in 3-D space, and constitute the cells of a 3-D mesh. CGNS supports four different shapes of 3-D elements - tetrahedra, pyramids, pentahedra, and hexahedra.

3.3.3.1 Tetrahedral Elements

CGNS supports seven types of tetrahedral elements, TETRA_4, TETRA_10, TETRA_16, TETRA_20, TETRA_22, TETRA_34, and TETRA_35. TETRA_4 elements are composed of four nodes located at the four geometric corners of the tetrahedron. TETRA_10 elements have six additional nodes, at the middle of each of the six edges. The cubic forms of tetrahedral elements, TETRA_16 and TETRA_20 contain two interior nodes along each edge, and four interior face nodes in the case of TETRA_20. The quartic forms of tetrahedral elements, TETRA_22, TETRA_34, and TETRA_35 contain three interior nodes along each edge, twelve interior face nodes in the case of TETRA_34, and twelve interior face nodes plus one interior volume node in the case of TETRA_35.

Linear and Quadratic Elements
    TETRA_4

TETRA_4 element
    TETRA_10

TETRA_10 element
Cubic Elements
TETRA_16
TETRA_16 element

TETRA_20
TETRA_20 element

Notes

    N1,...,N20   Grid point identification number. Integer ≥ 0 or blank, and no two values may be the same. Grid points N1 ... N3 are in consecutive order about one trilateral face. The cross product of a vector going from N1 to N2, with a vector going from N1 to N3, must result in a vector oriented from face F1 toward N4.

E1,...,E6 Edge identification number. The edges are oriented from the first to the second node. A negative edge (e.g., -E1) means that the edge is used in its reverse direction.

F1,...,F4 Face identification number. The faces are oriented so that the cross product of a vector from its first to second node, with a vector from its first to third node, is oriented outward.
Quartic Elements
TETRA_22
TETRA_22 element

TETRA_34
TETRA_34 element

TETRA_35
TETRA_35 element

Notes

    N23   Is located at the centroid of sub-triangle N1-N12-N6.
N24 Is located at the centroid of sub-triangle N2-N6-N9.
N25 Is located at the centroid of sub-triangle N3-N9-N12.
N26 Is located at the centroid of sub-triangle N1-N6-N15.
N27 Is located at the centroid of sub-triangle N2-N18-N6.
N28 Is located at the centroid of sub-triangle N4-N15-N18.
N29 Is located at the centroid of sub-triangle N2-N9-N18.
N30 Is located at the centroid of sub-triangle N3-N21-N9.
N31 Is located at the centroid of sub-triangle N4-N18-N21.
N32 Is located at the centroid of sub-triangle N3-N12-N21.
N33 Is located at the centroid of sub-triangle N1-N15-N12.
N34 Is located at the centroid of sub-triangle N4-N21-N15.
N35 Is located at the centroid of the tetrahedron.

3.3.3.2 Pyramid Elements

CGNS supports nine types of pyramid elements, PYRA_5, PYRA_13, PYRA_14, PYRA_21, PYRA_29, PYRA_30, PYRA_P4_29, PYRA_50, and PYRA_55. PYRA_5 elements are composed of five nodes located at the five geometric corners of the pyramid. In addition, PYRA_13 and PYRA_14 elements have a node at the middle of each of the eight edges; PYRA_14 adds a node at the middle of the quadrilateral face. The cubic forms of pyramid elements, PYRA_21, PYRA_29, and PYRA_30 contain two interior nodes along each edge, eight interior face nodes in the case of PYRA_29 and PYRA_30, and an additonal interior volume node for PYRA_30. The quartic forms of pyramid elements, PYRA_P4_29, PYRA_50, and PYRA_55 contain three interior nodes along each edge, 21 interior face nodes in the case of PYRA_50, and 21 interior face nodes and five additonal interior volume nodes for PYRA_55.

Linear and Quadratic Elements
    PYRA_5

PYRA_5 element
    PYRA_13

PYRA_13 element

PYRA_14

PYRA_14 element
Cubic Elements
PYRA_21
PYRA_21 element

PYRA_29
PYRA_29 element

PYRA_30
PYRA_30 element

Notes

    N1,...,N30   Grid point identification number. Integer ≥ 0 or blank, and no two values may be the same. Grid points N1 ... N4 are in consecutive order about the quadrilateral face. The cross product of a vector going from N1 to N2, with a vector going from N1 to N3, must result in a vector oriented from face F1 toward N5.

E1,...,E8 Edge identification number. The edges are oriented from the first to the second node. A negative edge (e.g., -E1) means that the edge is used in its reverse direction.

F1,...,F5 Face identification number. The faces are oriented so that the cross product of a vector from its first to second node, with a vector from its first to third node, is oriented outward.
Quartic Elements
PYRA_P4_29
PYRA_P4_29 element

PYRA_50
PYRA_50 element

PYRA_55
PYRA_55 element

Notes

    N39   Is located at the centroid of sub-triangle N1-N7-N19.
N40 Is located at the centroid of sub-triangle N2-N22-N7.
N41 Is located at the centroid of sub-triangle N5-N19-N22.
N42 Is located at the centroid of sub-triangle N2-N10-N22.
N43 Is located at the centroid of sub-triangle N3-N25-N10.
N44 Is located at the centroid of sub-triangle N5-N22-N25.
N45 Is located at the centroid of sub-triangle N3-N13-N25.
N46 Is located at the centroid of sub-triangle N4-N28-N13.
N47 Is located at the centroid of sub-triangle N5-N25-N28.
N48 Is located at the centroid of sub-triangle N4-N16-N28.
N49 Is located at the centroid of sub-triangle N1-N19-N16.
N50 Is located at the centroid of sub-triangle N5-N28-N19.
N51 Is located at the intersection of the line N5-N30 and the face N18-N21-N24-N27.
N52 Is located at the intersection of the line N5-N32 and the face N18-N21-N24-N27.
N53 Is located at the intersection of the line N5-N34 and the face N18-N21-N24-N27.
N54 Is located at the intersection of the line N5-N36 and the face N18-N21-N24-N27.
N55 Is located at the intersection of the line N5-N38 and the face N20-N23-N26-N29.

NOTE: Prior to 5/21/2019, Face F1 was defined incorrectly in the table for PYRA_50 and PYRA_55.

3.3.3.3 Pentahedral Elements

CGNS supports nine types of pentahedral elements, PENTA_6, PENTA_15, PENTA_18, PENTA_24, PENTA_38, PENTA_40, PENTA_33, PENTA_66, and PENTA_75. PENTA_6 elements are composed of six nodes located at the six geometric corners of the pentahedron. In addition, PENTA_15 and PENTA_18 elements have a node at the middle of each of the nine edges; PENTA_18 adds a node at the middle of each of the three quadrilateral faces. The cubic forms of the pentahedral elements, PENTA_24, PENTA_38, and PENTA_40 contain two interior nodes along each edge, fourteen interior face nodes in the case of PENTA_38 and PENTA_40, and an additonal two interior volume nodes for PENTA_40. The quartic forms of the pentahedral elements, PENTA_33, PENTA_66, and PENTA_75 contain three interior nodes along each edge, 33 interior face nodes in the case of PENTA_66, and 33 interior face nodes and an additonal nine interior volume nodes for PENTA_75.

Linear and Quadratic Elements
    PENTA_6

PENTA_6 element
    PENTA_15

PENTA_15 element

PENTA_18

PENTA_18 element
Cubic Elements
PENTA_24
PENTA_24 element

PENTA_38
PENTA_38 element

PENTA_40
PENTA_40 element

Notes

    N1,...,N40   Grid point identification number. Integer ≥ 0 or blank, and no two values may be the same. Grid points N1 ... N3 are in consecutive order about one trilateral face. Grid points N4 ... N6 are in order in the same direction around the opposite trilateral face.

E1,...,E9 Edge identification number. The edges are oriented from the first to the second node. A negative edge (e.g., -E1) means that the edge is used in its reverse direction.

F1,...,F5 Face identification number. The faces are oriented so that the cross product of a vector from its first to second node, with a vector from its first to third node, is oriented outward.

N39 Is at the centroid of the triangle N13,N17,N15.

N40 Is at the centroid of the triangle N14,N18,N16.
Quartic Elements
PENTA_33
PENTA_33 element

PENTA_66
PENTA_66 element

PENTA_75
PENTA_75 element

Notes

    N34   Is located at the centroid of sub-triangle N1-N14-N8.
    N35   Is located at the centroid of sub-triangle N2-N8-N11.
    N36   Is located at the centroid of sub-triangle N3-N11-N14.
    N64   Is located at the centroid of sub-triangle N4-N26-N32.
    N65   Is located at the centroid of sub-triangle N5-N29-N26.
    N66   Is located at the centroid of sub-triangle N6-N32-N29.
    N67   Is located at the centroid of sub-triangle N16-N38-N56.
    N68   Is located at the centroid of sub-triangle N19-N47-N38.
    N69   Is located at the centroid of sub-triangle N22-N56-N47.
    N70   Is located at the centroid of sub-triangle N17-N45-N63.
    N71   Is located at the centroid of sub-triangle N20-N54-N45.
    N72   Is located at the centroid of sub-triangle N23-N63-N54.
    N73   Is located at the centroid of sub-triangle N18-N42-N60.
    N74   Is located at the centroid of sub-triangle N21-N51-N42.
    N75   Is located at the centroid of sub-triangle N24-N60-N51.

NOTE: Prior to 5/21/2019, Face F4 was defined incorrectly in the table for PENTA_66 and PENTA_75.

3.3.3.4 Hexahedral Elements

CGNS supports nine types of hexahedral elements, HEXA_8, HEXA_20, HEXA_27, HEXA_32, HEXA_56, HEXA_64, HEXA_44, HEXA_98, and HEXA_125. HEXA_8 elements are composed of eight nodes located at the eight geometric corners of the hexahedron. In addition, HEXA_20 and HEXA_27 elements have a node at the middle of each of the twelve edges; HEXA_27 adds a node at the middle of each of the six faces, and one at the cell center. The cubic forms of the hexahedral elements, HEXA_32, HEXA_56, and HEXA_64 contain two interior nodes along each edge, 24 interior face nodes in the case of HEXA_56 and HEXA_64, and an additonal eight interior volume nodes for HEXA_64. The quartic forms of the hexahedral elements, HEXA_44, HEXA_98, and HEXA_125 contain three interior nodes along each edge, 54 interior face nodes in the case of HEXA_98, and 54 interior face nodes and an additonal 27 interior volume nodes for HEXA_125.

Linear and Quadratic Elements
    HEXA_8

HEXA_8 element
    HEXA_20

HEXA_20 element
   

HEXA_20 element table

HEXA_27

HEXA_27 element


HEXA_27 element table

NOTE: Prior to 7/19/2019, there was a typo in F3 corner nodes definition for HEXA_8, HEXA_20, and HEXA_27.

Cubic Elements
HEXA_32
HEXA_32 element


HEXA_32 element table

HEXA_56
HEXA_56 element

HEXA_64
HEXA_64 element


HEXA_56 and HEXA_64 element table

NOTE: Prior to 7/19/2019, there was a typo in F3 corner nodes definition for HEXA_32, HEXA_56, and HEXA_64, and F5 mid-face nodes were mis-ordered in HEXA_56 and HEXA_64.

Notes

    N1,...,N64   Grid point identification number. Integer ≥ 0 or blank, and no two values may be the same. Grid points N1 ... N4 are in consecutive order about one quadrilateral face. Grid points N5 ... N8 are in order in the same direction around the opposite quadrilateral face.

E1,...,E12 Edge identification number. The edges are oriented from the first to the second node. A negative edge (e.g., -E1) means that the edge is used in its reverse direction.

F1,...,F6 Face identification number. The faces are oriented so that the cross product of a vector from its first to second node, with a vector from its first to third node, is oriented outward.

Quartic Elements
HEXA_44
HEXA_44 element


HEXA_44 element table

HEXA_98
HEXA_98 element

HEXA_125
HEXA_125 element


HEXA_98 and HEXA_125 element table

NOTE: Prior to 7/19/2019, there was a typo in F3 corner nodes definition for HEXA_44, HEXA_98, and HEXA_125, and F5 mid-face nodes were mis-ordered in HEXA_98 and HEXA_125.

NOTE: Prior to 5/21/2019, Face F1 was defined incorrectly in the table for HEXA_98 and HEXA_125.

3.3.4 Unstructured Grid Example

Consider an unstructured zone in the shape of a cube, with each edge of the zone having three nodes. The resulting unstructured grid has a total of 27 nodes, as illustrated in the exploded figure below.

3 by 3 by 3 unstructured grid, with numbered nodes

Example Unstructured Cube (Exploded View)

This zone contains eight hexahedral cells, numbered 1 to 8, and the cell connectivity is:


Element No.   Element Connectivity

1 1,  2,  5,  4, 10, 11, 14, 13
2 2,  3,  6,  5, 11, 12, 15, 14
3 4,  5,  8,  7, 13, 14, 17, 16
4 5,  6,  9,  8, 14, 15, 18, 17
510, 11, 14, 13, 19, 20, 23, 22
611, 12, 15, 14, 20, 21, 24, 23
713, 14, 17, 16, 22, 23, 26, 25
814, 15, 18, 17, 23, 24, 27, 26

In addition to the cells, the boundary faces could also be added to the element definition of this unstructured zone. There are 24 boundary faces in this zone, corresponding to element numbers 9 to 32. Each boundary face is of type QUAD_4. The table below shows the element connectivity of each boundary face, as well as the element number and face number of its parent cell.


Face   Element No.   Element Connectivity   Parent Cell   Parent Face

Left 9 1, 10, 13, 4 1 5
10 4, 13, 16, 7 3 5
11 10, 19, 22, 13 5 5
12 13, 22, 25, 16 7 5
13 3, 6, 15, 12 2 3
14 6, 9, 18, 15 4 3
15 12, 15, 24, 21 6 3
16 15, 18, 27, 24 8 3
Bottom 17 1, 2, 11, 10 1 2
18 2, 3, 12, 11 2 2
19 10, 11, 20, 19 5 2
20 11, 12, 21, 20 6 2
Top 21 7, 16, 17, 8 3 4
22 8, 17, 18, 9 4 4
23 16, 25, 26, 17 7 4
24 17, 26, 27, 18 8 4
Back 25 1, 4, 5, 2 1 1
26 2, 5, 6, 3 2 1
27 4, 7, 8, 5 3 1
28 5, 8, 9, 6 4 1
Front 29 19, 20, 23, 22 5 6
30 20, 21, 24, 23 6 6
31 22, 23, 26, 25 7 6
32 23, 24, 27, 26 8 6

3.4 Multizone Interfaces

Two abutting zones with 1 to 1 grid point matching at the interface

1-to-1 Abutting Interface

Two abutting zones with mismatched grid points at the interface

Mismatched Abutting Interface

Two overlapping zones

Overset Interface

Structured-Grid Multizone Interface Types

The above figure shows three types of multizone interfaces, shown for structured zones. The first type is a 1-to-1 abutting interface, also referred to as matching or C0 continuous. The interface is a plane of vertices that are physically coincident between the adjacent zones. For structured zones, grid-coordinate lines perpendicular to the interface are continuous from one zone to the next. In 3-D, a 1-to-1 abutting interface is usually a logically rectangular region.

The second type of interface is mismatched abutting, where two zones touch but do not overlap (except for vertices and cell faces on the grid plane of the interface). Vertices on the interface may not be physically coincident between the two zones. The figure identifies the vertices and face centers of the left zone that lay on the interface. Even for structured zones in 3-D, the vertices of a zone that constitute an interface patch may not form a logically rectangular region.

The third type of multizone interface is called overset and occurs when two zones overlap; in 3-D, the overlap is a 3-D region. For overset interfaces, one of the two zones takes precedence over the other; this establishes which solution in the overlap region to retain and which to discard. The region in a given zone where the solution is discarded is called an overset hole and the grid points outlining the hole are called fringe points. The figure depicts an overlap region between two zones. The right zone takes precedence over the left zone, and the points identified in the figure are the fringe points and overset-hole points for the left zone. In addition, for the zone taking precedence, any bounding points (i.e., vertices on the bounding faces) of the zone that lay within the overlap region must also be identified.

Overset interfaces may also include multiple layers of fringe points outlining holes and at zone boundaries.

For the mismatched abutting and overset interfaces in the above figure, the left zone plays the role of receiver zone and the right plays the role of donor zone.