Skip to main content

ReferenceElement in easifemBase

easifemBase defines ReferenceElement data type for implementing reference elements.

Structure

ReferenceElement type is designed for handling the reference domains of finite elements.

TYPE :: ReferenceElement_
REAL(DFP), ALLOCATABLE :: xiJ(:, :)
!! Node coord
INTEGER(I4B) :: entityCounts(4) = 0
!! Number of 0D, 1D, 2D, 3D entities
INTEGER(I4B) :: xiDimension = 0
!! Xidimension
INTEGER(I4B) :: name = 0
!! name of the element
INTEGER(I4B) :: order = 0
!! Order of element
INTEGER(I4B) :: nsd = 0
!! Number of spatial dimensions
INTEGER(I4B) :: interpolationPointType = Equidistance
!! Interpolation point
!! Equidistance, GaussLegendre, GaussLobatto, Chebyshev
TYPE(ReferenceTopology_), ALLOCATABLE :: topology(:)
!! Topology information of 0D, 1, 2, 3D entities
PROCEDURE(highorder_refelem), POINTER, PASS(obj) :: highOrderElement => NULL()
!! Routine to generate hgher order LagrangeElement
END TYPE ReferenceElement_
xiJ
  • Nodal coordinates of the ReferenceElement.
  • Rows of xij denotes the spatial coordinates, for example, xij(2, :) denotes y coordinates.
  • Columns of xiJ denote the number of nodes in the element
entityCounts

entityCounts(xidim) denotes the total number of entity of codimension, xidim=0,1,2,3.

xidimension

Codimension of element.

xidim
0point
1curve (or line)
2surface
3volume
name

name of the reference element. Name is hardcoded in GlobalData by using 4-byte integers.

Click here to see the name
INTEGER(I4B), PARAMETER :: Line = 1
INTEGER(I4B), PARAMETER :: Line2 = 1
INTEGER(I4B), PARAMETER :: Line3 = 8
INTEGER(I4B), PARAMETER :: Line4 = 26
INTEGER(I4B), PARAMETER :: Line5 = 27
INTEGER(I4B), PARAMETER :: Line6 = 28
INTEGER(I4B), PARAMETER :: Triangle = 2
INTEGER(I4B), PARAMETER :: Triangle3 = 2
INTEGER(I4B), PARAMETER :: Triangle6 = 9
INTEGER(I4B), PARAMETER :: Triangle9 = 20
INTEGER(I4B), PARAMETER :: Triangle10 = 21
INTEGER(I4B), PARAMETER :: Triangle12 = 22
INTEGER(I4B), PARAMETER :: Triangle15a = 23
INTEGER(I4B), PARAMETER :: Triangle15b = 24
INTEGER(I4B), PARAMETER :: Triangle15 = 24
INTEGER(I4B), PARAMETER :: Triangle21 = 25
INTEGER(I4B), PARAMETER :: Quadrangle = 3
INTEGER(I4B), PARAMETER :: Quadrangle4 = 3
INTEGER(I4B), PARAMETER :: Quadrangle9 = 10
INTEGER(I4B), PARAMETER :: Quadrangle8 = 16
INTEGER(I4B), PARAMETER :: Quadrangle16 = 160
INTEGER(I4B), PARAMETER :: Tetrahedron = 4
INTEGER(I4B), PARAMETER :: Tetrahedron4 = 4
INTEGER(I4B), PARAMETER :: Tetrahedron10 = 11
INTEGER(I4B), PARAMETER :: Tetrahedron20 = 29
INTEGER(I4B), PARAMETER :: Tetrahedron35 = 30
INTEGER(I4B), PARAMETER :: Tetrahedron56 = 31
INTEGER(I4B), PARAMETER :: Hexahedron = 5
INTEGER(I4B), PARAMETER :: Hexahedron8 = 5
INTEGER(I4B), PARAMETER :: Hexahedron27 = 12
INTEGER(I4B), PARAMETER :: Hexahedron20 = 17
INTEGER(I4B), PARAMETER :: Hexahedron64 = 92
INTEGER(I4B), PARAMETER :: Hexahedron125 = 93
INTEGER(I4B), PARAMETER :: Prism = 6
INTEGER(I4B), PARAMETER :: Prism6 = 6
INTEGER(I4B), PARAMETER :: Prism18 = 13
INTEGER(I4B), PARAMETER :: Prism15 = 18
INTEGER(I4B), PARAMETER :: Pyramid = 7
INTEGER(I4B), PARAMETER :: Pyramid5 = 7
INTEGER(I4B), PARAMETER :: Pyramid14 = 14
INTEGER(I4B), PARAMETER :: Pyramid13 = 19
INTEGER(I4B), PARAMETER :: Point = 15
INTEGER(I4B), PARAMETER :: Point1 = 15
order

order of element

nsd

number of spatial dimension of element.

topology
  • It is a vector of ReferenceTopology, which represents the topology of entities present in the reference elements.
  • For example, a triangle is made from three points, three lines, and a surface. The points, lines, and surfaces are called entities of triangle.
  • Point topology ranges from 1 to entityCounts(1)
  • Curve topology ranges from entityCounts(1)+1 to entityCounts(1)+entityCounts(2)
  • Surface topology ranges from entityCounts(1)+entityCounts(2)+1 to entityCounts(1)+entityCounts(2)+entityCounts(3)
  • Volume topology ranges from entityCounts(1)+entityCounts(2)+entityCounts(3)+1 to entityCounts(1)+entityCounts(2)+entityCounts(3)+entityCounts(4)

In this way, the size of topology is equal to the sum of all the entities of entityCounts.

lagrangeElement

This is a procedure pointer, which returns the lagrange element of higher order.