Geometric finite elements (FEEC)#
Basics#
In conforming finite element (FE) methods, the general principle of approximating a function \(u \in V\) in a space \(V\) is
where \(\Lambda_i \in V\) are linearly independent basis functions, \((u_i)_i \in \mathbb R^M\) are called coefficients and \(M \in \mathbb N\) is the dimension of the subspace \(V_h \subset V\) spanned by the basis functions. The thing the differentiates FE methods from spectral methods is the fact that the \(\Lambda_i\) have local support around some grid point \(x_i\). A nice feature of FE methods is that \(u_h \in V\), which leads often to an elegant analysis of the method. The implementation of a FE method consists in writing down a system of equations for the coefficients \((u_i)_i \in \mathbb R^M\), leaving the basis functions fixed.
We denote by “geometric finite elements” the FE method based on finite element exterior calculus (FEEC). In 3D, it consists of a sequence of discrete (=finite dimensional) spaces \(V_h^n,\,0\leq n \leq 3\) that satisfy the 3d Derham diagram:
Fig. 1: 3d Derham diagram.#
The upper row is a sequence of continuous function spaces, where the last space \(L^2(\Omega)\) is the space of square-integrable functions on \(\Omega\). The other spaces are:
\(H^1(\Omega)\): functions \(f \in L^2(\Omega)\) for which \(\nabla f \in (L^2(\Omega))^3\)
\(H(\textnormal{curl}, \Omega)\): functions \(\mathbf u \in (L^2(\Omega))^3\) for which \(\nabla \times \mathbf u \in (L^2(\Omega))^3\)
\(H(\textnormal{div}, \Omega)\): functions \(\mathbf u \in (L^2(\Omega))^3\) for which \(\nabla \cdot \mathbf u \in L^2(\Omega)\)
More information on these spaces can be found in many textbooks on FE methods, for instance in Brezzi, Fortin, “Mixed and Hybrid Finite Element Methods”.
Struphy uses a conforming” FE method,
The operators \(\Pi_n,\,0\leq n \leq 3\) project (\(\Pi_n^2 = \Pi_n\)) into the subspaces :
These spaces and the associated operators of the Derham diagram have been implemented in the open-source package
Psydac.
Struphy interfaces to this library by means of the class struphy.feec.psydac_derham.Derham.
Both the continuous and the discrete spaces form a complex, which means
holds on both levels. Moreover, the above diagram can be viewed as composed of three commuting diagrams, namely
In Struphy the discrete spaces \(V_h^n,\,0\leq n \leq 3\) are spanned by tensor-product B-spline basis functions. Building blocks are the Uni-variate spline spaces of degree \(p\) with basis functions \(N^p(\eta)\) and \(D^{p -1}(\eta)\) defined on the unit interval \(\eta \in [0, 1]\). Hence, in Struphy the simualtion domain is always the unit cube, \((\eta_1,\eta_2,\eta_3) \in \Omega = [0, 1]^3\). The tensor-product basis functions are denoted as follows:
Elements of the discrete spaces are linear combinations of the respective basis functions:
The discrete spline functions are represented by their FE coefficients \(\mathbf p \in \mathbb R^{N_0}\),
\(\mathbf e \in \mathbb R^{N_1}\), \(\mathbf b \in \mathbb R^{N_2}\) and \(\mathbf n \in \mathbb R^{N_3}\).
The class for callable spline functions in Struphy is struphy.feec.derham.SplineFuntion.
In particular, each SplineFuntion object has
the property
vectorholding the FE coefficients, along with a setter method,a
__call__()method for evaluating the spline at (an array of) points \((\eta_{ijk})_{ijk}\).
A splien function can be created via the factory function struphy.feec.derham.Derham.create_spline_function().
The space dimensions are products of the uni-variate dimensions:
The derivatives act as follows on the FE coefficients:
Here, we introduced the discrete linear operators \(\mathbb G: \mathbb R^{N_0} \to \mathbb R^{N_1}\), \(\mathbb C: \mathbb R^{N_1} \to \mathbb R^{N_2}\) and \(\mathbb D: \mathbb R^{N_2} \to \mathbb R^{N_3}\), which satisfy the complex property
Note
A struphy userguide for the operators \(\mathbb G\), \(\mathbb C\) and \(\mathbb D\) and for the projection operators \(\Pi_n\) is given in this Jupyter notebook.
The projectors \(\Pi_n,\, 0\leq n \leq 3\) into the discrete spaces \(V_h^n,\, 0\leq n \leq 3\) are constructed such that the commuting relations (1) hold. They are defined by Degrees of freedom (DOFs) \(\sigma^n,\, 0\leq n \leq 3\) which are functionals that map continuous functions to real numbers. The number of DOFs for each space is equal to its dimension. A common DOF is the evaluation of a function at a certain point in \(\Omega\); if we choose \(N_0\) such distinct points and call the corresponding DOFs \((\sigma^0_{ijk})_{i=1,j=1, k=1}^{n_1,n_2,n_3}\), we can define a projector \(\Pi_0:H^1 \to V_h^0\) by
These are \(N_0\) equations for the coefficients \(\mathbf p \in \mathbb R^{N_0}\) of \(p_h^0 \in V_h^0\). The above formula is nothing else than classical interpolation and is used for the \(\Pi_0\)-projector in Struphy. The other projectors are a mix of interpolation and “histopolation” (integration between two interpolation points), as depicted in Fig. 2. For instance, to project into the space \(V_h^1\) (1-form), the first component is “histopolated” in \(\eta_1\)-direction (orange lines) and interpolated in \((\eta_2, \eta_3)\) (blue points); the second component is “histopolated” in \(\eta_2\)-direction and interpolated in \((\eta_1, \eta_3)\); the third component is “histopolated” in \(\eta_3\)-direction and interpolated in \((\eta_1, \eta_2)\). The DOFs for \(V_h^2\) contain histopolation over surface elements (green) and for \(V_h^3\) one has 3d histopolation over volume elements (violet). This ultimately leads to the commuting property.
Fig. 2: Degrees of freedom (DOFs) of the commuting projectors.#
Uni-variate spline spaces#
Finite element spaces in Struphy are based on uni-variate B-spline spaces on the interval \(\eta \in [0, 1]\), as introduced for instance in Section 2.2 of Hughes, Cottrell, Bazilevs, “Isogeometric analysis: CAD, finite elements, NURBS, exact geometry and mesh refinement”, Comput. Methods Appl. Mech. Engrg. 194 (2005). B-spline basis functions of degree \(p\) are denoted by \(N_i^p(\eta)\) (thus also called N-splines in the following). They are piece-wise polynomials with a regularity of at most \(p-1\) (they are piece-wise constants for \(p=0\)). Linear combinations af these basis functions give a spline function
where the \(\mathbf f = (f_i)_{i=0}^{n-1} \in \mathbb R^n\) are the spline coefficients. The dimension of the spline space is \(n\). In Struphy two different boundary conditions can be chosen: periodic or clamped. For the latter, the first and last basis functions are “interpolatory” at \(\eta=0\) and \(\eta=1\), respectively, meaning that \(f_h(0) = f_0\) and \(f_h(1) = f_{n-1}\). Assuming that the interval \([0, 1]\) is split into \(Nel\) cells (or elements), the dimension of the periodic space is \(n=Nel\), whereas the dimension of the clamped space is \(n=Nel + p\). Spline basis functions of degree \(p=2\) are potted in Fig. 3 for \(Nel=8\) cells.
Fig. 3: Uni-variate spline spaces of degree \(p=2\).#
In Fig. 3 the black crosses are the break points (cell interfaces) and the red dots are the Greville points, which are the interpolation points used to define the DOFs for the projectors in (2). Moreover, we encounter the so-called D-splines which are related to the derivatives of N-splines via
D-splines are rescaled B-splines of degree \(p-1\). In the clamped case the dimension \(d\) of the D-spline space is thus one less than that of N-splines; in this case \(D^{p-1}_{-1} = D^{p-1}_{n-1} = 0\), where \(n\) is the dimension of the N-spline space.
Fig. 4 shows the uni-variate spline spaces for degree \(p=1\). Note that in this case the D-Splines are piece-wise constants and a spline function is therefore generally not continuous.
Fig. 4: Uni-variate spline spaces of degree \(p=1\).#
Higher degree leads to higher smoothness in Struphy, where spline functions have the maximal regularity \(p-1\). Moreover, the support of each basis function is the union of \(p+1\) adjacent cells and thus increases with the degree. This allows for high-order methods in Struphy. See Fig. 5 for an example with \(p=4\).
Fig. 4: Uni-variate spline spaces of degree \(p=4\).#
Polar splines#
Coming soon !