Over the past years, many well-developed, well-documented, and user-friendly open source codes have become available that aid the application of immersed finite element methods, a comprehensive list of which is beyond the scope of this work. These toolboxes support all facets of immersed finite element computations, such as pre-processing steps (in particular integration and the application of boundary conditions), the solution process itself, and also post-processing, where often a subtriangulation is employed like this is also done for higher-order boundary-fitted finite elements. Something that is not yet available is a graphical user interface that makes immersed finite element methods accessible also to non-expert users. Besides the developments in open source codes, also commercial software has adopted (aspects of) immersed methods. To provide some examples:
in Ansys Fluent the Immersed Boundary Method (IBM) is available [1]}, [2]};
Ansys LS-DYNA facilitates the application of trimmed isogeometric analysis in both shell and solid models for static and dynamic analyses [3]}, [4]};
in Abaqus it is possible to (partially) include and exclude elements from a computation with element progressive activation [5]}, [6]}, which is mainly intended for the simulation of additive manufacturing;
and the platform Hyperganic [7]} employs immersed finite element techniques to perform simulations. The implementation of the stabilization methods discussed in this work can require tools that are not generally available in existing software and codes. For instance, face-based ghost-penalty stabilization requires the computation of jumps in normal gradients up to the order of approximation. For quadratic and higher-order discretizations, this functionality is generally not available, even for software frameworks that include the possibility to perform face loops and compute jumps for standard Discontinuous Galerkin (DG) formulations. The implementation of patch-based ghost-penalty stabilization or aggregation require the implementation of an aggregation routine and the computation of aggregate-wise terms. These terms can be implemented using standard element-wise terms if the finite element software provides functionality to enforce linear constraints. Many codes already provide this functionality as this is essential for local grid refinements and periodic boundary conditions (e.g., deal.ii [8]}, fenics [9]}, gridap [10]}, fempar [11]}, netgen [12]}, or dune [13]}). While (geometric) multigrid routines are intrusive to the finite element software, the implementation of tailored Schwarz preconditioners is exceptionally non-intrusive and only requires the matrix itself and the basis function connectivity. Furthermore, as additive Schwarz preconditioning is a well-established concept also in boundary-fitted finite element methods, these preconditioners are available in many codes. The construction of the index blocks is not generally the same in existing software, however, and it should be noted that the effectivity for immersed methods relies on the specific construction of these blocks. Additionally, advanced procedures in which e.g., index blocks are only devised for basis functions with support on cut elements, require the availability of this information or a routine to extract it.
