Finite elements#
This page follows the same section structure as the defelement “finite elements”
overview, but the content is written for BIEKIT and explicitly covers both
dim = spacedim and the surface case dim = 2, spacedim = 3.
Reference cells#
We start from reference cells with simple coordinates. Common choices are:
Any physical cell K is obtained by a mapping F : \hat{K} \to K.
Cell sub-entities#
A cell has sub-entities of different topological dimensions. For a triangle:
vertices (dimension 0):
v0, v1, v2edges (dimension 1):
e0, e1, e2cell interior (dimension 2): the face itself
Orientation of edges matters for vector elements. BIEKIT uses a consistent orientation to define signs for basis functions on shared edges.
Finite elements#
A finite element is the triple (K, P, N):
K: the cellP: a polynomial (or function) space onKN: a set of linearly independent functionals (degrees of freedom)
Unisolvence means there is a unique basis {phi_i} such that
Example: Lagrange element#
For Lagrange elements, P is a scalar polynomial space and N are point
evaluations. For the triangle, let \lambda_1, \lambda_2, \lambda_3 be the
barycentric coordinates. The P1 basis is:
The interpolation operator satisfies
where \mathbf{x}_i are the nodes. Higher order elements place additional
nodes on edges and in the interior.
Integral moments#
Some finite elements use integral moments instead of point evaluations. A typical moment functional is
where E is an edge or a face and q is a test function. For H(div) on a
surface, a common choice is flux moments:
where n_e is the outward unit normal to the edge within the surface.
Example: Nedelec element#
Nedelec (H(curl)) elements use tangential moments on edges:
where t_e is the edge tangent. On a triangle, one possible basis for the
lowest-order Nedelec element is
with cyclic permutations. BIEKIT does not implement Nedelec elements yet, but the mapping rules are the same as for other H(curl) spaces.
Mapping finite elements#
Let F : \hat{K} \to K be the geometry map with Jacobian
Scalar fields use pullback:
The gradient transforms as
Case 1: dim = spacedim (volume cells). For H(div), the contravariant Piola transform is
This preserves normal fluxes across element boundaries:
Case 2: dim = 2, spacedim = 3 (surface cells).
Here J is a 3x2 matrix. The surface measure is
The surface normal is
where J_1, J_2 are the columns of J. BIEKIT uses the surface contravariant
Piola transform for H(div) fields:
This yields a tangential vector field on the surface and preserves surface fluxes
across edges. Note that Piola maps basis functions, while |J| is the
measure used in integration.
Scalar-valued basis functions#
For scalar bases, mapping is done by composition, and integrals use the Jacobian measure:
Vector-valued basis functions#
Vector bases are mapped with Piola transforms to preserve continuity. For H(div) on surfaces (BIEKIT’s RWG basis), the mapping is:
RWG basis functions on a shared edge e of two triangles T^+ and T^-
are
where l_e is the edge length, A^\pm are triangle areas, and r_\pm are
the opposite vertices.
Matrix-valued basis functions#
Matrix-valued bases can be mapped component-wise. If each row is a vector field,
apply Piola row-by-row. If each column is a vector field, apply Piola column-by-column.
The same Jacobian measure |J| is used in integration.
Variants of finite elements#
Variants specify different node placements or polynomial representations. For example, Lagrange elements may use equispaced nodes or optimized nodes. The function space is the same, but interpolation and conditioning can differ.
The degree of a finite element#
The degree is the highest polynomial order in P. For triangles:
Higher degree improves accuracy but increases the number of degrees of freedom.
Notation#
K: physical cell,\hat{K}: reference cellF: mapping from\hat{K}toKJ: Jacobian ofFdim: reference dimension,spacedim: embedding dimension|J|: measure for surface elements (dim=2, spacedim=3)