Reference cells

The reference cells are used to i) define grid cells, ii) define shape functions, and iii) define quadrature rules. The numbering of vertices, edges, faces are visualized below. See also FerriteViz.elementinfo.

AbstractRefShape subtypes

Ferrite.RefLineType
RefLine <: AbstractRefShape{1}

Reference line/interval, reference dimension 1.

----------------+--------------------
Vertex numbers: | Vertex coordinates:
  1-------2     | v1: 𝛏 = (-1.0,)
    --> ξ₁      | v2: 𝛏 = ( 1.0,)
----------------+--------------------
Face numbers:   | Face identifiers:
  1-------2     | f1: (v1,)
                | f2: (v2,)
----------------+--------------------
source
Ferrite.RefTriangleType
RefTriangle <: AbstractRefShape{2}

Reference triangle, reference dimension 2.

----------------+--------------------
Vertex numbers: | Vertex coordinates:
    2           |
    | \         | v1: 𝛏 = (1.0, 0.0)
    |   \       | v2: 𝛏 = (0.0, 1.0)
ξ₂^ |     \     | v3: 𝛏 = (0.0, 0.0)
  | 3-------1   |
  +--> ξ₁       |
----------------+--------------------
Face numbers:   | Face identifiers:
    +           |
    | \         | f1: (v1, v2)
    2   1       | f2: (v2, v3)
    |     \     | f3: (v3, v1)
    +---3---+   |
----------------+--------------------
source
Ferrite.RefQuadrilateralType
RefQuadrilateral <: AbstractRefShape{2}

Reference quadrilateral, reference dimension 2.

----------------+---------------------
Vertex numbers: | Vertex coordinates:
    4-------3   |
    |       |   | v1: 𝛏 = (-1.0, -1.0)
    |       |   | v2: 𝛏 = ( 1.0, -1.0)
ξ₂^ |       |   | v3: 𝛏 = ( 1.0,  1.0)
  | 1-------2   | v4: 𝛏 = (-1.0,  1.0)
  +--> ξ₁       |
----------------+---------------------
Face numbers:   | Face identifiers:
    +---3---+   | f1: (v1, v2)
    |       |   | f2: (v2, v3)
    4       2   | f3: (v3, v4)
    |       |   | f4: (v4, v1)
    +---1---+   |
----------------+---------------------
source
Ferrite.RefTetrahedronType
RefTetrahedron <: AbstractRefShape{3}

Reference tetrahedron, reference dimension 3.

---------------------------------------+-------------------------
Vertex numbers:                        | Vertex coordinates:
             4                4        |
  ^ ξ₃      /  \             /| \      |  v1: 𝛏 = (0.0, 0.0, 0.0)
  |        /     \          / |   \    |  v2: 𝛏 = (1.0, 0.0, 0.0)
  +-> ξ₂  /        \       /  1___  \  |  v3: 𝛏 = (0.0, 1.0, 0.0)
 /       /      __--3     / /    __‾-3 |  v4: 𝛏 = (0.0, 0.0, 1.0)
ξ₁      2 __--‾‾         2/__--‾‾      |
---------------------------------------+-------------------------
Edge numbers:                          | Edge identifiers:
             +                +        | e1: (v1, v2)
            /  \             /| \      | e2: (v2, v3)
         5 /     \ 6      5 / |4  \ 6  | e3: (v3, v1)
          /        \       /  +__3  \  | e4: (v1, v4)
         /      __--+     / /1   __‾-+ | e5: (v2, v4)
        + __--‾‾2        +/__--‾‾2     | e6: (v3, v4)
---------------------------------------+-------------------------
Face numbers:                          | Face identifiers:
             +                +        |
            /  \             /| \      | f1: (v1, v3, v2)
           /     \          / | 4 \    | f2: (v1, v2, v4)
          /   3    \       /2 +___  \  | f3: (v2, v3, v4)
         /      __--+     / /  1 __‾-+ | f4: (v1, v4, v3)
        + __--‾‾         +/__--‾‾      |
---------------------------------------+-------------------------
source
Ferrite.RefHexahedronType
RefHexahedron <: AbstractRefShape{3}

Reference hexahedron, reference dimension 3.

-----------------------------------------+----------------------------
Vertex numbers:                          | Vertex coordinates:
            5--------8        5--------8 | v1: 𝛏 = (-1.0, -1.0, -1.0)
           /        /|       /|        | | v2: 𝛏 = ( 1.0, -1.0, -1.0)
          /        / |      / |        | | v3: 𝛏 = ( 1.0,  1.0, -1.0)
  ^ ξ₃   6--------7  |     6  |        | | v4: 𝛏 = (-1.0,  1.0, -1.0)
  |      |        |  4     |  1--------4 | v5: 𝛏 = (-1.0, -1.0,  1.0)
  +-> ξ₂ |        | /      | /        /  | v6: 𝛏 = ( 1.0, -1.0,  1.0)
 /       |        |/       |/        /   | v7: 𝛏 = ( 1.0,  1.0,  1.0)
ξ₁       2--------3        2--------3    | v8: 𝛏 = (-1.0,  1.0,  1.0)
-----------------------------------------+-----------------------------
Edge numbers:                            | Edge identifiers:
            +----8---+        +----8---+ |
          5/        /|      5/|        | |  e1: (v1, v2),  e2: (v2, v3)
          /       7/ |12    / |9     12| |  e3: (v3, v4),  e4: (v4, v1)
         +----6---+  |     +  |        | |  e5: (v5, v6),  e6: (v6, v7)
         |        |  +     |  +---4----+ |  e7: (v7, v8),  e8: (v8, v5)
       10|      11| /    10| /1       /  |  e9: (v1, v5), e10: (v2, v6)
         |        |/3      |/        /3  | e11: (v3, v7), e12: (v4, v8)
         +---2----+        +---2----+    |
-----------------------------------------+-----------------------------
Face numbers:                            | Face identifiers:
            +--------+        +--------+ |
           /   6    /|       /|        | |  f1: (v1, v4, v3, v2)
          /        / |      / |   5    | |  f2: (v1, v2, v6, v5)
         +--------+ 4|     +  |        | |  f3: (v2, v3, v7, v6)
         |        |  +     |2 +--------+ |  f4: (v3, v4, v8, v7)
         |    3   | /      | /        /  |  f5: (v1, v5, v8, v4)
         |        |/       |/    1   /   |  f6: (v5, v6, v7, v8)
         +--------+        +--------+    |
-----------------------------------------+-----------------------------
source
Ferrite.RefPrismType
RefPrism <: AbstractRefShape{3}

Reference prism, reference dimension 3.

-----------------------------------------+----------------------------
Vertex numbers:                          | Vertex coordinates:
            4-------/6       4--------6  |
           /     /   |      /|        |  |  v1: 𝛏 = (0.0, 0.0, 0.0)
          /   /      |     / |        |  |  v2: 𝛏 = (1.0, 0.0, 0.0)
  ^ ξ₃   5 /         |    5  |        |  |  v3: 𝛏 = (0.0, 1.0, 0.0)
  |      |          /3    |  1-------/3  |  v4: 𝛏 = (0.0, 0.0, 1.0)
  +-> ξ₂ |       /        | /     /      |  v5: 𝛏 = (1.0, 0.0, 1.0)
 /       |    /           |/   /         |  v6: 𝛏 = (0.0, 1.0, 1.0)
ξ₁       2 /              2 /            |
-----------------------------------------+----------------------------
Edge numbers:                            | Edge identifiers:
            +---8---/+       +---8----+  |
          7/     /   |     7/|        |  | e1: (v2, v1),  e2: (v1, v3)
          /   / 9    |6    / |3       |6 | e3: (v1, v4),  e4: (v3, v2)
         + /         |    +  |        |  | e5: (v2, v5),  e6: (v3, v6)
         |          /+    |  +--2----/+  | e7: (v4, v5),  e8: (v4, v6)
        5|       /       5| /1    /      | e9: (v6, v5)
         |    / 4         |/   / 4       |
         + /              + /            |
-----------------------------------------+----------------------------
Face numbers:                            | Face identifiers:
            +-------/+       +--------+  |
           /  5  /   |      /|        |  | f1: (v1, v3, v2)
          /   /      |     / |    3   |  | f2: (v1, v2, v5, v4)
         + /         |    +  |        |  | f3: (v3, v1, v4, v6)
         |     4    /+    |2 +-------/+  | f4: (v2, v3, v6, v5)
         |       /        | /  1  /      | f5: (v4, v5, v6)
         |    /           |/   /         |
         + /              + /            |
-----------------------------------------+----------------------------
source

Required methods to implement for all subtypes of AbstractRefShape to define a new reference shape

Ferrite.reference_verticesMethod
reference_vertices(::Type{<:AbstractRefShape})
reference_vertices(::AbstractCell)

Returns a tuple of integers containing the local node indices corresponding to the vertices (i.e. corners or endpoints) of the cell.

source
Ferrite.reference_edgesMethod
reference_edges(::Type{<:AbstractRefShape})
reference_edges(::AbstractCell)

Returns a tuple of 2-tuples containing the ordered local node indices (corresponding to the vertices) that define an edge.

source
Ferrite.reference_facesMethod
reference_faces(::Type{<:AbstractRefShape})
reference_faces(::AbstractCell)

Returns a tuple of n-tuples containing the ordered local node indices (corresponding to the vertices) that define a face.

source

which automatically defines

Applicable methods to AbstractRefShapes

Ferrite.getrefdimMethod
Ferrite.getrefdim(RefShape::Type{<:AbstractRefShape})

Get the dimension of the reference shape

source