Finite element discretisation
The linearised weighted residual Eqs. (9) and (19) form the basis of a finite element discretisation. To this end, a domain \(\Omega _\square \) of a simple shape, typically rectangular, is defined such that it fully contains the reference domain \(\Omega \). The following finite element discretisation is based on a triangulation of \(\Omega _\square \) instead of a geometryconforming mesh of \(\Omega \) itself (see Fig. 3). We use piecewise polynomial basis functions \(\varphi _I(\varvec{x})\) and write for the approximated displacement field
$$\begin{aligned} \varvec{u}^h(\varvec{x}) = \sum _I \varvec{u}_I \varphi _I(\varvec{x})\,. \end{aligned}$$
(20)
There is no constraint on the chosen finite element space, but if the surface \(\Gamma \) overlaps with the boundary of the embedding domain (that is if \(\Gamma _\square = \Gamma \cap \partial \Omega _\square \ne \emptyset \)), it can be more convenient to use an essential treatment of displacement boundary conditions [8] along this boundary. On the other hand, if nonnodal basis functions (like, for instance, higherorder bsplines) are used as the finite element basis, the above presented weak incorporation of the boundary conditions works perfectly well on this boundary part \(\Gamma _\square \) too.
Let the support of the basis function \(\varphi _I\) be denoted by \({{\mathrm{supp}}}(\varphi _I)\). Now all coefficients \(\varvec{u}_I\) from the approximation (20) are discarded a priori if \({{\mathrm{supp}}}(\varphi _I) \cap \Omega = \emptyset \). By \(\mathbb {S}\) we denote the set of the indices of the remaining coefficients and thus \(\{ \varphi _I \}_{I\in \mathbb {S}}\) forms the full basis of the immersed finite element method. This basis is in general not stable [25] and requires further attention, which is given in “Numerical stability” section. Using the approximation (20), we reach the final system of equations
$$\begin{aligned} \varvec{\mathsf {\mathbf {A}}} \varvec{\mathsf {\mathbf {x}}} = \varvec{\mathsf {\mathbf {b}}} \end{aligned}$$
(21)
with the matrix and vector coefficients
$$\begin{aligned} \varvec{\mathsf {\mathbf {A}}}[I\, n_d + a,J\, n_d + b ]= & {} A(\varvec{u}; \varvec{e}_b \varphi _J, \varvec{e}_a \varphi _I) \nonumber \\ \varvec{\mathsf {\mathbf {x}}}[J\, n_d + b]= & {} (\Delta \varvec{u}_J)\cdot \varvec{e}_b \\ \varvec{\mathsf {\mathbf {b}}}[I\, n_d + a]= & {} \ell (\varvec{u}; \varvec{e}_a \varphi _I )\nonumber \end{aligned}$$
(22)
for the zerobased indices \(I,J \in \mathbb {S}\), and using the coordinate directions \(0 \le a,b < n_d\) (\(n_d\) being the spatial dimension of the problem) and Cartesian unit vectors \(\varvec{e}_a\). Although this immersed finite element method seemingly leads to the same type of linear system as a conventional, geometryconforming FEM, there are technical differences which will be discussed in the following: the representation of the boundary or interface \(\Gamma \), the quadrature of elements traversed by this boundary, and the stabilisation of the basis for such elements. The choice of the Nitsche parameters \(\gamma \) and \(\beta \) is analysed in the Appendix A.
Above expressions hold analogously for interface problems. The main difference is that the two fields \(\varvec{u}_1\) and \(\varvec{u}_2\) are approximated in fashion of (20) independently on the same background mesh of \(\Omega _\square \) which encompasses both subdomains \(\Omega _1\) and \(\Omega _2\). Consequently, the elements which are traversed by the material interface approximate both fields since the FE shape functions of the entire element are used even though the fields are only defined up to the interface on their respective side of the domain. Using two sets of shape functions on these elements allows us to represent a discontinuous derivative of the FE solution and can thus be compared to the element enrichment of XFEM [11]. A good illustration of this implementation detail can be found in [2].
Signed distance functions
The weak forms introduced in “Weak enforcement of boundary and interface conditions” section allow us to work with a finite element discretisation which is independent of the geometry, but still the volume and surface integrals, \(\int _\Omega (\cdot ) \mathrm {d}\Omega \) and \(\int _\Gamma (\cdot ) \mathrm {d}\Gamma \), need geometry information. To this end, we classify the elements (for instance the quadrilaterals in the right picture of Fig. 3) by their location with respect to the physical domain \(\Omega \). If \(\tau _I\) denotes any such element, we have the three cases:

1
\(\tau _I \cap \Omega = \emptyset \), the element is completely outside of \(\Omega \) and can be ignored,

2
\(\tau _I \cap \Omega = \tau _I\), the element is completely inside and its treatment is straightforward as in any geometryconforming FEM,

3
\(\tau _I \cap \Gamma \ne \emptyset \), the element is traversed by the domain’s boundary and requires special consideration.
Note that elements adjacent to the boundary of the embedding mesh (for instance the left or bottom boundaries in the right picture of Fig. 3) technically fall into the third category, but do not pose any difficulty apart from the identification of the element faces which lie on that boundary.
For above classification it is sufficient to have an oriented representation of the surface \(\Gamma = \partial \Omega \). Therefore, the surface is either closed or assumed to be extended beyond the boundaries of \(\Omega _\square \). Here, we assume that \(\Gamma \) is either given analytically or is approximated by means of a surface mesh composed of surface elements \(\sigma _J\),
$$\begin{aligned} \Gamma \approx \Gamma ^h = \bigcup _J \sigma _J\,. \end{aligned}$$
(23)
In order to avoid the tedious task of intersecting volume elements \(\tau _I\) with surface elements \(\sigma _J\), an implicit geometry representation is introduced. Therefore, the signed distance function [26] is used which is defined as
$$\begin{aligned} {{\mathrm{dist}}}_{\Gamma }(\varvec{x}) = s(\varvec{x}) \min _{\varvec{y} \in \Gamma } \varvec{x} \varvec{y}\,, \quad \text {with} \quad s(\varvec{x}) = {\left\{ \begin{array}{ll} \phantom {}1 \quad \text {if }\varvec{x}\in \Omega \\ 1 \quad \text {if }\varvec{x}\notin \Omega \,. \end{array}\right. } \end{aligned}$$
(24)
In case of interface problems as introduced in “Material interfaces” section, the above definition of \(s(\varvec{x})\) refers to \(\Omega _1\) and \(\Omega _2\) instead of \(\Omega \) and its complement \(\Omega _\square \setminus \Omega \). If \(\Gamma \) is represented by a mesh \(\Gamma ^h\), the signed distance function \({{\mathrm{dist}}}_{\Gamma ^h}\) with respect to this mesh is used instead. Moreover, only a piecewise polynomial approximation of this function is used
$$\begin{aligned} {{\mathrm{dist}}}^h_{\Gamma }(\varvec{x}) = \sum _K d_K \varphi _K(\varvec{x})\quad \text {with } d_K = {{\mathrm{dist}}}_\Gamma (\varvec{x}_K)\,, \end{aligned}$$
(25)
where \(\varphi _K\) are the nodal finite element shape functions (not necessarily the same as in the approximation (20)) and the coefficients \(d_K\) represent the value of the signed distance at the finite element nodes \(\varvec{x}_K\).
The representation (23) can be of higher polynomial degree, given by NURBS patches [1, 14, 27] or subdivision surfaces [28, 29]. But the computation of the coefficients \(d_K\) in (25) and the quadrature described below are nontrivial tasks if the \(\sigma _J\) have a degree higher than linear simplex elements (straight lines in two or flat triangles in three dimensions). In that case, the computation of the distances \(d_K\) requires the solution of nonlinear equations, see, for instance, [30]. In the rest of this work, the \(\sigma _J\) are always linear \((n_d1)\)simplex elements. Moreover, once only piecewise linear elements are used for the surface representation (23), the optimal convergence rate of any higherorder method is impeded by this geometry approximation error, see [8].
Figure 4 shows a twodimensional example where the boundary is composed of three parts: \(\Gamma _0\) is the part of the boundary of \(\Omega \) that coincides with the box boundary \(\partial \Omega _\square \) and does not require any special attention; \(\Gamma _1\) and \(\Gamma _2\) are separated parts which are immersed in the background grid. For the computation of the distance function \({{\mathrm{dist}}}_\Gamma \), it is convenient to treat \(\Gamma _1\) and \(\Gamma _2\) separately as shown in the figure. The final distance function is then composed as the minimal value of these distances,
$$\begin{aligned} {{\mathrm{dist}}}_{\Gamma } (\varvec{x}) = \min \left( {{\mathrm{dist}}}_{\Gamma _1}(\varvec{x}), {{\mathrm{dist}}}_{\Gamma _2}(\varvec{x}) \right) . \end{aligned}$$
(26)
See also [31] for arithmetic with distance functions. Figure 4 shows the isocurves of the individual distance functions \({{\mathrm{dist}}}_{\Gamma _i}\) as well as of the composite function \({{\mathrm{dist}}}_{\Gamma }\). The extension of this approach to a larger number of immersed surfaces is straightforward.
Once the function \({{\mathrm{dist}}}_\Gamma \) has been determined, the above classification of volume elements \(\tau _I\) is carried out by means of the nodal values \(d_K\) of the distance function: if all \(d_K\) of the element \(\tau _I\) are strictly positive (negative), the element is inside (outside) of the domain. If a change in sign of the \(d_K\) occurs, \(\tau _I\) is traversed by the immersed boundary \(\Gamma \).
It remains to outline how the coefficients \(d_K\) for a given surface are computed. In case of an analytic surface representation by an implicit function, these coefficients are calculated directly. In case of an immersed surface mesh, one needs to find the surface element \(\sigma _K^*\) which contains the point \(\varvec{x}_K^*\) closest to \(\varvec{x}_K\), see for instance [32] for such basic primitive tests as the closest point on a triangle to a point. With the knowledge of the closest element \(\sigma _K^*\), it can be decided if \(\varvec{x}_K\) lies on the positive or the negative side of this element in order to determine the sign \(s(\varvec{x}_K)\) as defined in (24). This decision is based on the premise that the surface mesh is well oriented. Note that, when the closest point falls on an edge or a vertex, ambiguities can arise for the decision if a point is inside or outside the surface mesh [26], see the case shown in Fig. 5.
At the acute corner in the figure, the region of points whose closest point is the vertex B, is delimited by the outer cone. For all points in this cone, \(\sigma _1\) and \(\sigma _2\) are possible choices as closest surface element. The cone contains the region ‘a’ in which the points are all outside with respect to both elements. The points in region ’b’ are outside with respect to one of the possible closest surface elements and inside with respect to the other. Hence, for this region the mentioned ambiguity can occur. One solution to this problem is to introduce angleweighted vertex normal vectors [26], but this requires extra data structures. Here we choose the simpler approach shown in Fig. 5: the point \(\varvec{x}_K\) has a larger distance to the extension plane of \(\sigma _2\) than to the extension plane of \(\sigma _1\). This distance is given by the inner product of the element normal vector and the distance vector between the considered grid point and the closest surface point (here, B). Choosing the element with a larger value of this distance resolves the ambiguity. The method is also used in three dimensions with the only difference being a larger set of candidates as closest elements.
Finally, we consider the numerical complexity of the distance function computation. If there are \(N_\Gamma \) elements in the surface mesh and \(N_\Omega \) nodes in the volume mesh, a bruteforce approach requires \(N_\Gamma \times N_\Omega \) closest point computations. In many cases, this number can be substantially reduced by precomputing a bounding box [32] of the surface \(\Gamma ^h\) and assigning a default value for the \(d_K\) of nodes outside of this box, but the essential complexity remains of order \(\mathcal {O}(N_\Gamma \times N_\Omega )\). Complexity reduction is possible by generation of a hierarchy of bounding boxes [32] or using socalled marching methods, see e.g. [33].
Constructive solid geometry modelling
Now, we consider a different approach for integrating finite element analysis with geometric design, similar to the ideas presented in [34]. Specifically, we consider the construction of a threedimensional geometry by means of CSG, see, for instance, [35, 36]. An example of such a modelling process is given in Fig. 6, where one begins with a cube as a workpiece and performs set operations with other geometric primitives until the desired geometry is obtained. These operations are commonly union \(\cup \), intersection \(\cap \), subtraction\(\setminus \)and the set complement \(()^\complement \). Based on De Morgan’s laws [36], it suffices to work with the canonical operations intersection and complement, and represent the other two as compositions thereof, more precisely \(\mathbb {A} \cup \mathbb {B} = (\mathbb {A}^\complement \cap \mathbb {B}^\complement )^\complement \) and \(\mathbb {A}{\setminus }\mathbb {B} = \mathbb {A} \cap \mathbb {B}^\complement \).
The conventional finite element approach is to work through such a CSG pipeline, export a geometry representation and use a mesh generation software to create a bodyfitted volume mesh for the numerical analysis. The direct modification for an immersed finite element method is to export a surface representation of the geometry and embed this into the mesh by the methods described in “Immersed finite element method” section. Here, a third way is suggested in which the set operations are directly applied to the embedding (nonconforming) volume mesh. As outlined above, it suffice to provide the complement and intersection operations only. The former is trivially achieved: the use of a signed distance function generates an in and an outside partition of the mesh, reversing these partitions gives the complement. For this reason, all that need be explained is the intersection operation.
A simple twodimensional example in Fig. 7 demonstrates the intersection operation: first the intermediate domain \(\Omega _1\) is given via the distance function of a straight line \(\Gamma _1\), afterwards a second distance function to the line \(\Gamma _2\) yields the final domain \(\Omega = \{\varvec{x}\in \Omega _\square :{{\mathrm{dist}}}_{\Gamma _1} (\varvec{x})> 0 \text { and } {{\mathrm{dist}}}_{\Gamma _2}(\varvec{x}) > 0 \}\). For sake of clarity, let us discuss the individual steps in this picture. First the line \(\Gamma _1\) is embedded into the shown \(3\times 3\)grid which fills out the square domain \(\Omega _\square \). The elements \(\tau _{i0}\) are strictly inside the intermediate domain \(\Omega _1 = \{\varvec{x}\in \Omega _\square :{{\mathrm{dist}}}_{\Gamma _1} (\varvec{x}) > 0 \}\) and form the set \(\mathbb {I}_1\). The elements \(\tau _{i2}\) are strictly outside and form the set \(\mathbb {O}_1\). Now, the remaining elements form the set \(\mathbb {C}_1\) and are triangulated such that the embedded boundary is approximated by triangle edges. The squares are first subdivided into two triangles each and then every such triangle is intersected by means of the nodal values of the signed distance function \({{\mathrm{dist}}}_{\Gamma _1}\) [37]. The resulting outcome is the left picture in Fig. 7 where the red squareshaped marks indicate the location of the intersection points.
In the second embedding step, the distance function \({{\mathrm{dist}}}_{\Gamma _2}\) is used which gives rise to the element sets \(\mathbb {I}_2\), \(\mathbb {O}_2\) and \(\mathbb {C}_2\). All elements which belong to the outside are directly assigned to the complementary domain \(\Omega _\square {\setminus }\Omega \), that is \(\mathbb {O} = \mathbb {O}_1 \cup \mathbb {O}_2\). On the other hand, all elements of \(\mathbb {I}_1\), which also belong to \(\mathbb {I}_2\), are inside the final domain \(\Omega \), hence \(\mathbb {I} = \mathbb {I}_1 \cap \mathbb {I}_2 = \{\tau _{20}\}\). Finally, there are the intersection cases. Elements belonging to \(\mathbb {C}_1\) and \(\mathbb {I}_2\) (\(\tau _{21}\)) keep their status and subdivision. Elements from \(\mathbb {I}_1\) and \(\mathbb {C}_2\) (\(\tau _{10}\)) are subject to the same decomposition methods as \(\mathbb {C}_1\). It remains to discuss the situation of the elements which belong to \(\mathbb {C}_1 \cap \mathbb {C}_2\); the ones which are intersected by both boundaries, and in our example of Fig. 7 this is the element \(\tau _{11}\). In this case, simply the composing triangles are intersected with \(\Gamma _2\) as if they were elements of their own. Proper categorisation of these simplex shapes defines the final domain \(\Omega \) and its complement \(\Omega _\square {\setminus }\Omega \), see the middle picture of Fig. 7.
The advantage of this approach becomes clear when looking at the right picture of Fig. 7. Shown is the result for the same target domain \(\Omega \), but first the composition of the individual distance functions \({{\mathrm{dist}}}_{\Gamma _i}\) is computed according to expression (26) and then the element intersections are constructed. Clearly, in the right picture the corner is chamfered whereas in the above outlined approach this geometric feature is preserved. This is the distinctive characteristic of the presented idea: by successively embedding the geometry primitives into the mesh, the sharp features at the primitive intersections are preserved. It is important to remark that the boundaries \(\Gamma _i\) have been represented exactly in this example, but this is solely owed to the fact that they are straight lines. In the more general situation of curved boundaries, they are again represented on the finite element mesh by piecewise linear simplex elements. But, even though these surrogate boundaries do not exactly reproduce the given geometry, the here presented approach still allows to represent corners or edges at the intersection locations of the original primitives which lie inside of the finite elements.
The presented method for CSG modelling based on finite element meshes is straightforward to extent to three dimensions. In the plane case outlined so far, the rectangular elements are subdivided into two triangles which themselves are triangulated in order to recover the implicit surface in the form of triangle edges. This approach is akin to a twodimensional version of marching cubes and in three dimensions we make use of a similar technique. The used threedimensional element shapes are either tetrahedrons or hexahedrons. Figure 8 shows how a hexahedron is decomposed into six tetrahedrons such that it remains to consider this shape only. Given a tetrahedron with values of the signed distance function at its vertices we can classify the cases shown in the right part of the figure. Based on linear interpolation along the edges the zeros of the distance function are recovered and give rise to two volume tessellations \(\tau _I^\) and \(\tau _I^+\) whose common faces form the triangulated surface \(\sigma _I\). Using these decompositions, the above outlined intersection operations of two geometry primitives can be carried out analogously in three dimensions.
Alternative approaches for increasing the quality of implicit geometry representations in the vicinity of sharp features (such as edges and corners) exist. In [38] the operations of surface reconstruction by means of marching cubes and the distance function computation are combined in order to generate a socalled directed distance field allowing for a better resolution of surface features. On the other hand, enriched distance functions are presented in [39] where additional edge and vertex descriptors augment the distance geometry representation. Although both approaches are promising concepts in the context of immersed finite element methods, they are not further considered in this work.
We conclude this paragraph by noting that the here used tessellation techniques also help to construct numerical integration schemes for the elements that are traversed by the boundary or interface. The cut elements are general polytopes for which quadrature rules are not easily obtained. There are many techniques that address this problem, such as momentfitting [40], surfaceonly integration [41], and adaptive decomposition of the integration region [14, 42]. But since we have a tessellation in simplex shapes already available, we use composite Gauß type quadrature rules, see e.g., [11].
Numerical stability
Up to now, it has been shown how to derive an immersed finite element method for boundary value and interface problems, see (9) and (19), and how to compute the matrix coefficients of the linear system of equations. But the stable solution of this final system of Eq. (21) remains to be discussed, especially in view of the method’s parameters \(\gamma \) (for boundary value and interface problems) and \(\beta \) (for interface problems only).
Sources of instability
As an illustrative example, consider a onedimensional problem
$$\begin{aligned}  \alpha u^{\prime \prime }= & {} f \qquad x \in (0,x_\varepsilon )\nonumber \\ u= & {} 0 \qquad x = 0 \\ \alpha u^\prime = 0 \quad \text {or} \quad u= & {} 0 \qquad x = x_\varepsilon \nonumber \end{aligned}$$
(27)
for the domain \(\Omega = (0,x_\varepsilon )\) and a constant material parameter \(\alpha \). The boundary conditions are a prescribed value of \(u=0\) at the left end and either a zero derivative (homogeneous Neumann) or a zero function value (homogeneous Dirichlet) at the right end. Let \(\Omega _\square = (0,2h)\) be the embedding domain and two linear finite elements of size h are used for the discretisation, see Fig. 9. First, we consider the case with a homogeneous Neumann boundary condition at the right end. The leftside boundary condition is going to be incorporated essentially and the system matrix becomes
$$\begin{aligned} \varvec{\mathsf {K}}_N = \frac{\alpha }{h} \begin{pmatrix} 1+\varepsilon \quad \varepsilon \\ \varepsilon \qquad \varepsilon \end{pmatrix}\,. \end{aligned}$$
(28)
Obviously, for \(\varepsilon \rightarrow 1\) this matrix recovers the standard finite element matrix for this problem with its known properties. The eigenvalues of this matrix have the values
$$\begin{aligned} \lambda _{1,2} = \frac{\alpha }{2h} \left[ 1 + 2\varepsilon \pm \sqrt{4 \varepsilon ^2 + 1} \right] \,. \end{aligned}$$
(29)
Clearly, the smaller eigevalue goes to zero for the limit \(\varepsilon \rightarrow 0\), that is the case of a vanishing cut element. As expected, the matrix \(\varvec{\mathsf {K}}_N\) is illconditioned for this limit.
We now turn to the Dirichlet case and evaluate the lefthandside of expression (7) for this simple test problem. The resulting stiffness matrix has the form (replacing the surface integrals by point evaluation at \(x_\varepsilon \))
$$\begin{aligned} \frac{h}{\alpha } \varvec{\mathsf {K}}_D = \begin{pmatrix} 1+\varepsilon \quad \varepsilon \\ \varepsilon \qquad \varepsilon \end{pmatrix}  \begin{pmatrix} \varepsilon 1 \quad 1\varepsilon \\ \varepsilon \qquad \varepsilon \end{pmatrix}  \begin{pmatrix} \varepsilon 1 \quad \varepsilon \\ 1\varepsilon \qquad \varepsilon \end{pmatrix} \nonumber \\ \;\,+\, \gamma \frac{h}{\alpha } \begin{pmatrix} (1\varepsilon )^2 \quad \varepsilon (1\varepsilon ) \\ \varepsilon (1\varepsilon ) \qquad \varepsilon ^2 \end{pmatrix}\,. \end{aligned}$$
(30)
Note that the expression for the system matrix has been multiplied by the factor \(\frac{h}{\alpha }\). The expressions of the eigenvalues of \(\varvec{\mathsf {K}}_D\) are not easily determined, but the condition \(\det (\varvec{\mathsf {K}}_D) > 0\) is more workable. Note that since the trace of the matrix is positive and equals \(\lambda _1 + \lambda _2\), the condition of a positive determinant (recall \(\det (\varvec{\mathsf {K}}_D) = \lambda _1 \lambda _2\)) is sufficient for positive definiteness. One gets
$$\begin{aligned} \det (\varvec{\mathsf {K}}_D) = \frac{1}{h^2} \left( \frac{\varepsilon \gamma h}{\alpha } 1 \right) (1 + \varepsilon )> 0 \quad \Rightarrow \quad \gamma > \frac{\alpha }{h \varepsilon }\,. \end{aligned}$$
(31)
Fulfilment of this condition guarantees that the matrix is positive definite for a fixed mesh size h, but unfortunately it implies \(\gamma \rightarrow \infty \) for \(\varepsilon \rightarrow 0\). The use of a very large value for \(\gamma \) can lead to undesired numerical problems.
In the case of the interface problems and formulation (19), the situation is slightly better. The extra parameter \(\beta \) can be adjusted in a smart way such that a finite value of \(\gamma \) is always achievable. Such a choice is proposed in [43] where \(\beta \) depends on the material parameters of the subdomains and the sizes of the cut elements, \(\tau _I \cap \Omega _i\). Using this approach, the system matrix has always positive eigenvalues (for the considered problem class) with a finite value of \(\gamma \). Nevertheless, the minimal eigenvalue goes to zero for vanishing sizes of the cut elements. Even though the parameter choices by [43] show a good performance in terms of the quality of the numerical results, the matrix condition number still cannot be bounded for a fixed mesh and arbitrary interface locations.
Stabilisation
The above indicated sources of numerical instability all stem from the same situation that for some degrees of freedom, the intersection of the support of their associated shape functions with the physical domain becomes very small,
$$\begin{aligned} s_I =  {{\mathrm{supp}}}(\varphi _I) \cap \Omega  \ll h\,, \end{aligned}$$
(32)
where \({{\mathrm{supp}}}(\varphi _I)\) denotes the support of shape function \(\varphi _I\) and h is a measure of the mesh size on \(\Omega _\square \). In all above cases, Neumann, Dirichlet, or interface problem, this leads to severe illconditioning of the final system matrix. To solve this problem, the following approaches have been proposed, among others,

S1
Discarding all degrees of freedom with support intersection below a certain threshold, \(s_I < \varepsilon h\);

S2
Adding a facebased stabilisation term [16];

S3
Constraining degenerate degrees of freedom [6, 12].
As reported, among others, in [12], the approach S1 leads to a loss of approximation order. Although appealing due to its simplicity, this drawback can be prohibitive in some applications. An adhoc approach to remedy the stability problem is to locally adapt the finite element mesh in order to avoid the problem of too small values of \(s_I\). Even though simple at first sight, a robust realisation of this idea in three dimensions is not straightforward and mesh entanglement needs to be avoided. The support size \(s_I\) is increased if specific nodes are moved away from the surface \(\Gamma \), but there is an interesting alternative in which the points are snapped to the surface thereby generating a conforming mesh, see [44] for twodimensional analysis of this idea.
Another approach, S2, is proposed in [16] where the jump of the function gradients across certain element faces is added to the weak form in order to guarantee stability of the method. Other than the result (31), the system matrix stays wellconditioned for small values of \(\gamma \) in the limit \(\varepsilon \rightarrow 0\). This approach requires to evaluate surface integrals over interior mesh faces, a technicality which requires additional data structures in many codes, but does not add much to the overall difficulty of implementing an immersed finite element method. Nevertheless there is a drawback with this approach, since it introduces another weighting factor whose adjustment is not straightforward: for too small values of this factor the stabilisation effect disappears and for too large values the method’s accuracy is affected [16].
Finally, we consider S3 which relies on the concept of coupling degrees of freedom with too small supports to other degrees of freedom from the interior of the domain. In order to outline this approach, the degrees of freedom shall first be classified according to the size \(s_I\) of the intersection of their support with the domain, as defined in (32). In “Finite element discretisation” section, the set \(\mathbb {S}\) has been introduced which contains all indices of shape functions for which \(s_I\) is larger than zero. Introducing a threshold \(\hat{s}\), the set \(\mathbb {S}\) is now decomposed into the disjoint index sets, \(\mathbb {A}\) and \(\mathbb {B}\) with definition
$$\begin{aligned} \mathbb {A} = \{ I \in \mathbb {S} :s_I \ge \hat{s} \} \quad \text {and} \quad \mathbb {B} = \{ I \in \mathbb {S} :s_I < \hat{s} \}\,. \end{aligned}$$
(33)
The threshold \(\hat{s}\) used in this classification has to depend on the mesh size h and should not be larger than one typical element size. The basic idea of Höllig et al. [12] is to constrain degrees of freedom from the set \(\mathbb {B}\) to suitably chosen degrees of freedom from \(\mathbb {A}(J)\), a subset of \(\mathbb {A}\),
$$\begin{aligned} \forall J \in \mathbb {B}:\quad \varvec{u}_J = \sum _{I \in \mathbb {A}(J) \subset \mathbb {A}} c_{IJ} \varvec{u}_I \end{aligned}$$
(34)
where the coefficients \(c_{IJ}\) will be discussed further below. These constraints give rise to the modified shape function basis
$$\begin{aligned} \varvec{u}^h(\varvec{x})= & {} \sum _{I\in \mathbb {A}} \varvec{u}_I \varphi _I(\varvec{x}) + \sum _{J\in \mathbb {B}} \varvec{u}_J \varphi _J(\varvec{x}) \nonumber \\= & {} \sum _{I\in \mathbb {A}} \varvec{u}_I \varphi _I(\varvec{x}) + \sum _{J\in \mathbb {B}} \left( \sum _{K \in \mathbb {A}(J)} c_{KJ} \varvec{u}_K \right) \varphi _J(\varvec{x}) \nonumber \\= & {} \sum _{I \in \mathbb {A}} \varvec{u}_I \left( \varphi _I(\varvec{x}) + \sum _{J \in \mathbb {B}(I)} c_{IJ} \varphi _J(\varvec{x}) \right) = \sum _{I \in \mathbb {A}} \varvec{u}_I \tilde{\varphi }_I(\varvec{x})\,. \end{aligned}$$
(35)
In this reordering of the finite element approximation (20) a new set \(\mathbb {B}(I)\) is used which contains all indices J from \(\mathbb {B}\), such that \(I \in \mathbb {A}(J)\). For the implementation of this stabilisation method, it is sufficient to work with expression (34), but the result of (35) demonstrates that effectively a modified shape function basis \(\{ \tilde{\varphi }_I\}_{I\in \mathbb {A}}\) is generated and illustrates the notion of extended splines as given in [12]. Note also that \(\mathbb {B}(I) = \emptyset \) for all degrees of freedom that are not in the vicinity of the boundary and in that case \(\tilde{\varphi }_I = \varphi _I\), so that most shape functions are not affected. Since the support size of the basis functions \(\tilde{\varphi }_I\) is larger, the bandwidth increases for these degrees of freedom. Therefore, it has to be remarked that only degrees of freedom in the vicinity of the boundary are affected. Moreover, the storage requirement of the final system matrix is of course not larger than it would be for the original (unstable) basis functions \(\varphi _I\).
There are two open questions when using this approach: (i) the choice of the index set \(\mathbb {A}(J)\) associated to J and (ii) the values of the constraint weights \(c_{IJ}\). The origin of this approach, as introduced in [12], is to stabilise bspline discretisations. In this particular situation, the underlying mesh is logically Cartesian and an explicit expression of the coefficients \(c_{IJ}\) can be given as a function of the multiindices used to label that grid. See also [6] for a more intuitive interpretation of the arising extrapolation of Lagrange polynomials and its efficient implementation. The aim of this stabilisation procedure is to maintain the convergence order of the method and therefore to not lose the polynomial approximation quality of the approximation (20) due to the constraints (34). In other words, the modified basis functions \(\tilde{\varphi }_I\) introduced in (35) have to represent the same polynomials as the \(\varphi _I\) themselves.
In order to outline the procedure for obtaining \(\mathbb {A}(J)\) and the corresponding coefficients \(c_{IJ}\), consider the situation depicted in Fig. 10. The degree of freedom \(\varvec{u}_J\), \(J \in \mathbb {B}\), resides at node \(\varvec{x}_J\) and the size of the intersection of the support (hatched in the picture) with the domain \(\Omega \) is below the threshold \(\hat{s}\). Searching through the elements in the vicinity of \(\varvec{x}_J\), one finds the element \(\tau _{K(J)}\) whose connected degrees of freedom all belong to \(\mathbb {A}\). Any element entirely inside the domain \(\Omega \) fulfils this condition. Normally, many such elements can be found and the closest is selected, where the distance between the element middle point and \(\varvec{x}_J\) is a possible way to measure the proximity. The selected element \(\tau _{K(J)}\) gives rise to the index set \(\mathbb {A}(J) \subset \mathbb {A}\) associated with \(\varvec{u}_J\). Formally, we can write
$$\begin{aligned} \mathbb {A}(J) = \{ I \in \mathbb {A} :{{\mathrm{supp}}}(\varphi _I) \cap \tau _{K(J)} \ne \emptyset \}\,. \end{aligned}$$
(36)
Once this set is defined, the weights \(c_{IJ}\) are calculated by evaluation of the basis of \(\tau _{K(J)}\) at the node \(\varvec{x}_I\),
$$\begin{aligned} \forall I \in \mathbb {A}(J):c_{IJ} = \varphi _I(\varvec{x}_J). \end{aligned}$$
(37)
This choice of weights is an extension of the idea given in [15] where the weights are defined for nonuniform bsplines as dual functionals applied to the polynomials in a chosen grid element. Here the point evaluation of (37) is the corresponding dual functional of Lagrange polynomials [8]. Note that \(\varvec{x}_J \notin \tau _{K(J)}\) and thus \(c_{IJ}\) represents an extrapolation of the polynomial basis spanned in \(\tau _{K(J)}\) to the outside point \(\varvec{x}_J\), see also Fig. 10. The stabilisation procedure can be summarised as follows

1
categorise \(\mathbb {A}\) and \(\mathbb {B}\) using a threshold \(\hat{s}\), see (32) and (33)

2
for all \(J \in \mathbb {B}\)

find \(\tau _{K(J)}\) with all degrees of freedom from \(\mathbb {A}\) that is close to \(\varvec{x}_J\),

define the constraint coefficients as \(c_{IJ} = \varphi _I(\varvec{x}_J)\) for all \(I \in \mathbb {A}(J)\)

3
assemble the final system of equations using the constraint equations (34) applied to test and trial spaces

4
after solving the global system, calculate the constrained degree of freedom \(\varvec{u}_J\) with \(J \in \mathbb {B}\) according to (34).
With respect to the implementation a few remarks have to be made. The code has to be able to search the elements in the neighbourhood of a given node. For instance, the element \(\tau _{K(J)}\) in Fig. 10 does not lie in the support of \(\varphi _J\) but in the ring of elements around that support. Theoretically, for very extreme shapes of \(\Gamma \) the nearest \(\tau _{K(J)}\) to \(\varvec{x}_J\) could lie far away, but here we assume that the mesh is fine enough such that there is always an element nearby. Cuspshaped domains are excluded from the onset. In addition, one has to evaluate the shape functions of \(\tau _{K(J)}\) at \(\varvec{x}_J\) and this requires to find first the reference coordinate \(\varvec{\xi }_J\) (outside of the reference element) such that the geometry representation of the chosen element represents \(\varvec{x}_J\) when evaluated at this coordinate, that is \(\varvec{x}_{K(J)} (\varvec{\xi }_J) = \varvec{x}_J\). Here we restrict ourselves to meshes in which all elements are an affine transformation of the reference element. Higherorder geometry representations of the volume mesh are excluded, but they are also not necessary since the mesh, by design of the immersed method, need not conform to the geometry of \(\Omega \).