Fractured meshes

Martin Averseng, Xavier Claeys, Ralf Hiptmair

► To cite this version:

Martin Averseng, Xavier Claeys, Ralf Hiptmair. Fractured meshes. Finite Elements in Analysis and Design, 2023, 220, pp.103907. 10.1016/j.finel.2022.103907. hal-05412334

HAL Id: hal-05412334

https://hal.science/hal-05412334v1

Submitted on 11 Dec 2025

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_1.png" /></figure>

Distributed under a Creative Commons Attribution 4.0 International License
<figure><img src="image_2.png" /></figure>

# Fractured meshes

Martin Averseng<sup>a,*</sup>, Xavier Claeys<sup>b</sup>, Ralf Hiptmair<sup>a</sup>

<figure><img src="image_3.png" /></figure>

## ARTICLE INFO

### Keywords:

Combinatorial geometry

Simplicial meshes

Fractures

Finite element method

## ABSTRACT

This work introduces "generalized meshes", a type of meshes suited for the discretization of partial differential equations in non-regular geometries. Generalized meshes extend regular simplicial meshes by allowing for overlapping elements and more flexible adjacency relations. They can have several distinct "generalized" vertices (or edges, faces) that occupy the same geometric position. These generalized facets are the natural degrees of freedom for classical conforming spaces of discrete differential forms appearing in finite and boundary element applications. Special attention is devoted to the representation of fractured domains and their boundaries. An algorithm is proposed to construct the so-called *virtually inflated mesh*, which correspond to a "two-sided" mesh of a fracture. Discrete *d*-differential forms on the virtually inflated mesh are characterized as the trace space of discrete *d*-differential forms in the surrounding volume.

## 0. Introduction

In an *n*-dimensional domain $\Omega \subset \mathbb{R}^n$, a fracture $\Gamma$ may be modeled by an embedded (*n* − 1)-dimensional structure. For the finite element numerical simulation of partial differential equations (PDEs) in such domains, there are two approaches:

(i) In the first one, the physical equations are approximated in the domain $\Omega$ surrounding the fracture, with boundary conditions on $\partial\Omega$ and $\Gamma$. A key example is the so-called *mixed-dimensional modeling* of flow in fractured porous media. References on this topic include [1, Section 5], [2, Section 3.5], [3–8] but the list is far from being exhaustive.

(ii) In the second one, equivalent *boundary integral equations* are formulated directly and only on the surface of $\Gamma$. This is the approach followed for example in wave scattering problems, where the obstacle $\Gamma$ is a *complex screen* embedded in the space $\mathbb{R}^3$. A lot of attention has been devoted to the analysis and numerical resolution of this type of problem in recent years. References include [9–16].

We introduce a class of mathematical objects able to represent in a unified way the singular geometries appearing in both approaches. Those objects, that we call *generalized meshes*, are a simple generalization of *regular meshes* (meshes that represent regular manifolds). An *n*-dimensional generalized mesh is defined by a set of *n*-simplices, and an adjacency graph between them. The simplices are allowed to overlap arbitrarily, and their mutual adjacency is not dictated by shared vertices.

Compared to other classical non-manifold geometric representations [17–20], the generalized meshes defined here, while allowing to cover many practical cases, do not deal with the most general class of mixed-dimensional non-manifold geometries. For instance, they do not allow "dangling edges". In counterpart, because of their simplicity, their storage is cheap and most operations – e.g., assembly of a finite element matrix – are performed in linear complexity.

Generalized meshes are adapted not only to describe singular geometries, but also to represent the classical discrete subspaces of the infinite dimensional spaces on which the PDEs act (with, for instance, conforming Galerkin discretization in mind). For those discrete subspaces, the degrees of freedom are directly related to specific geometric features of the mesh that we call *generalized subfacets*. The relation between generalized facets and the corresponding discrete subspaces is similar to how, in a regular mesh, continuous piecewise linear functions are related to vertices, Nédélec elements to edges, and so on. Importantly, a generalized mesh can have several distinct generalized vertices (or edges, or faces) located at the same geometric position. This allows, for instance, to discretize the two "sides" of a surface independently.

This work is purely concerned with the combinatorial properties of generalized meshes. Our focus is on mathematical formalization rather than computational performance. This point of view seems valuable to us, as it paves the way for the rigorous discussion of the discretization of PDEs in non-regular geometries. In fact, one of the main motivation for this work originated in the need for a formal description of a boundary element method for scattering by a multi-screen [12,13,21].

<footnote><sup>a</sup> Seminar for Applied Mathematics, ETH Zurich, Switzerland</footnote>

<footnote><sup>b</sup> Laboratoire Jacques-Louis Lions, Sorbonne Université, France</footnote>

<footnote>* Corresponding author at: 3 Walcot Parade, BA15NF, Bath, UK.
E-mail address: martin.averseng@sam.math.ethz.ch (M. Averseng).</footnote>
List of notations

<table><tr><td>σ<sub>d</sub>(S)</td><td>d-subsimplices of the simplex S</td></tr><tr><td>F(S)</td><td>Facets of the simplex S</td></tr><tr><td>σ(S)</td><td>Subsimplices of the simplex S, including S</td></tr><tr><td>|S|</td><td>Convex hull of the simplex S (Eq. (1))</td></tr><tr><td>[V<sub>1</sub>, ..., V<sub>n+1</sub>]</td><td>n-simplex oriented by the ordering (V<sub>1</sub>, ..., V<sub>n+1</sub>)</td></tr><tr><td>−[S]</td><td>Simplex S with the orientation opposite to [S]</td></tr><tr><td>[F]<sub>|[S]</sub></td><td>Facet F of S with the orientation induced by [S] (Eq. (2))</td></tr><tr><td>σ<sub>d</sub>(M)</td><td>d-subsimplices of the triangulation M (Eq. (5))</td></tr><tr><td>σ(M)</td><td>Subsimplices of the triangulation M (Eq. (5))</td></tr><tr><td>F(M)</td><td>Facets of the triangulation M (Eq. (5))</td></tr><tr><td>↔<sub>M</sub></td><td>Adjacency in the triangulation M</td></tr><tr><td>st(S, M)</td><td>Star of the subsimplex S of M (Eq. (6))</td></tr><tr><td>∂M</td><td>Boundary of the triangulation M (Eq. (7))</td></tr><tr><td>|M|</td><td>Geometry of the mesh M (Eq. (10))</td></tr><tr><td>V<sub>M*</sub>, V</td><td>Vertex set of M* (Definition 2.1)</td></tr><tr><td>K<sub>M*</sub>, K</td><td>Set of elements of M* (Definition 2.1)</td></tr><tr><td>K<sub>M*</sub>, K</td><td>Realization function of M* (Definition 2.1)</td></tr><tr><td>G<sub>M*</sub>, G</td><td>Adjacency graph of M* (Definition 2.1)</td></tr><tr><td>F(M*)</td><td>Split facets of M* (Eq. (11))</td></tr><tr><td>F<sub>M*</sub>, F</td><td>Adjacency through F in M* (Eq. (12))</td></tr><tr><td>N<sub>M*</sub>, N</td><td>Neighbor function of M* (Eq. (13))</td></tr><tr><td>σ<sub>d</sub>(M*)</td><td>Subsimplices of M* (Definition 2.5)</td></tr><tr><td>[k]<sub>M*</sub></td><td>Orientation of the simplex attached to k assigned by the orientation of M* (Definition 2.8)</td></tr><tr><td>st(S, M*)</td><td>Generalized star of S in M* (Eq. (16))</td></tr><tr><td>G<sub>M*</sub>(S), G(S)</td><td>Graph between elements of st(S, M*) (Fig. 5)</td></tr><tr><td>S<sub>d</sub>(M*)</td><td>Set of generalized d-subfacets of M* (Definition 2.11)</td></tr><tr><td>F(M*)</td><td>Generalized facets of M* (Eq. (18))</td></tr><tr><td>F<sub>b</sub>(M*)</td><td>Boundary split facets of M* (Eq. (19))</td></tr><tr><td>∂M*</td><td>Boundary of M*, temporarily denoted by ∂*M* (Definition 3.3)</td></tr><tr><td>M<sup>*</sup><sub>Ω\Γ</sub></td><td>Fractured mesh (Section 4.1)</td></tr><tr><td>M<sup>*</sup><sub>Γ(Ω)</sub></td><td>Extrinsic inflation of M<sub>Γ</sub> via M<sub>Ω</sub> (Definition 4.2)</td></tr><tr><td>Θ(T<sub>1</sub>, T<sub>2</sub>)</td><td>Geometric angle between T<sub>1</sub> and T<sub>2</sub> (Eq. (22))</td></tr><tr><td>∠([T<sub>1</sub>], T<sub>2</sub>)</td><td>Oriented angle between [T<sub>1</sub>] and T<sub>2</sub> (Eq. (23))</td></tr><tr><td>F<sub>Γ</sub></td><td>Set of all orientations of the facets of M<sub>Γ</sub> (Eq. (25))</td></tr><tr><td>M<sup>*</sup><sub>Γ</sub></td><td>Intrinsic inflation of M<sub>Γ</sub> (Definition 4.5)</td></tr><tr><td>λ<sup>K</sup><sub>V</sub></td><td>Barycentric coordinate (Eq. (29))</td></tr></table>

Main results

Our contributions are the following<fnref n="1" />:

$\omega_s$ Whitney form associated to the generalized d-subfacet s (Definition 5.1)

$\Lambda^d(M^*)$ Space of discrete d-differential forms on $M^*$

Tr Trace operator for Whitney forms (Definition 5.2)

(i) We define generalized meshes, which contain regular simplicial meshes as a particular case.

(ii) We define the boundary $\partial M^*$ of a generalized mesh $M^*$, and prove that it coincides with the usual notion of boundary for a regular simplicial mesh.

(iii) We describe an algorithm, called virtual inflation (see also [12]), to convert a usual simplicial mesh $M_Γ$ of a complex surface $Γ$ into a generalized mesh $M_Γ^*$, which, loosely speaking, represents the orientable two-sheeted covering of $Γ$ [22, p. 234]. The key property of this algorithm is that $M_Γ^*$ is the boundary (in the sense of (ii)) of the 3-dimensional region surrounding $Γ$.

(iv) We define finite dimensional spaces $\Lambda^d(M^*)$ of discrete d-differential forms on a generalized mesh $M^*$, generalizing the usual finite and boundary elements spaces on a simplicial mesh. Their Whitney basis functions are in bijection with the set of generalized d-facets of $M^*$. The finite (or boundary) element matrices, corresponding to variational problems set in $\Lambda^d(M^*)$, can be assembled with a simple and transparent algorithm.

(v) Finally, we generalize the restriction operator Tr : $\Lambda^d(M^*) \to \Lambda^d(\partial M^*)$, which maps a discrete d-differential form on a generalized mesh $M^*$, to its restriction (or trace) on the boundary $\partial M^*$. For a 3-dimensional fractured domain, we prove that Tr is subjective (provided that the fracture satisfies a simple connectivity condition when $d=0$).

## Outline

The paper is organized as follows: in Section 1, we review some combinatorial geometry background. We then define generalized meshes in Section 2, and their boundary in Section 3. In Section 4, we focus on fractured meshes and their boundaries and describe the intrinsic virtual inflation. In Section 5, we define spaces of discrete differential forms and study the surjectivity of the trace operator. A model Finite Element application is presented in Section 6.

# 1. Preliminaries

## 1.1. Simplices and orientation

An $n$-simplex $S$ is a subset of cardinality $(n+1)$ of some vertex set $V$ (e.g. $V = \mathbb{R}^3$). The elements of $S$ are called its *vertices*. For $d \in \{0, \dots, n\}$, let $\sigma_d(S)$ be the set of $(d+1)$-subsets of $S$, also called $d$-simplices of $S$. The $(n-1)$-simplices are called facets; we write $F(S) := \sigma_{n-1}(S)$. The set of all subsimplices of $S$, including $S$, is denoted by $\sigma(S)$. An $n$-simplex is called a vertex, an edge, a triangle and a tetrahedron for $n=0, 1, 2$ and $3$.

When the vertices of an $n$-simplex $S$ are points in $\mathbb{R}^m$ with $n \le m$, we systematically assume that they are affinely independent. In this case, we denote by $|S|$ the closed convex hull of $S^2$:

$$ |S| = \text{Hull}(\{V_1, \dots, V_{n+1}\}) \\ := \left\{ \sum_{i=1}^{n+1} \lambda_i V_i \mid \forall i \in \{1, \dots, n+1\}, \lambda_i \ge 0, \sum_{i=1}^{n+1} \lambda_i = 1 \right\}. \quad (1) $$

<footnote n="1">¹ For notation, refer to later sections.</footnote>

<footnote n="2">² In most references, a simplex is defined as the convex hull of its vertices, but the definition that we adopt here, (i.e. a simplex is defined as a finite set of vertices) is more convenient for our needs.</footnote>
For $n \ge 1$, an *orientation* of a simplex $S$ is an ordering $V_1, \dots, V_{n+1}$ of its vertices, with the rule that two orderings define the same orientation if they differ by an even permutation. If $n = 0$, i.e. when $S$ is a vertex, an orientation of $S$ is simply an element of $\{+, -\}$.

An *oriented simplex* $[S]$ is a simplex $S$ together with a choice of orientation. As in [23, Chap. 5], the simplex $\{V_1, \dots, V_{n+1}\}$ oriented by the ordering $(V_1, \dots, V_{n+1})$ is denoted by $[V_1, \dots, V_n]$. If $[S]$ is an oriented simplex, then $-[S]$ refers to the same simplex with the opposite orientation. Hence for example

$$[A, B, C, D] = -[A, C, B, D] = [C, A, B, D].$$

When $n \ge 2$, an oriented $n$-simplex $[S] = [V_1, \dots, V_{n+1}]$ induces an orientation on its facets: for the facet $F_i = \{V_1, \dots, \hat{V}_i, \dots, V_{n+1}\}$, where the hat denotes an omission, the induced orientation is

$$[F_i]_{|[S]} := (-1)^{i+1} [V_1, \dots, \hat{V}_i, \dots, V_{n+1}]. \quad (2)$$

For $n = 1$, given an oriented edge $E = [V_1, V_2]$, we adopt the convention

$$[V_1]_{|[E]} := [V_1, -], \quad [V_2]_{|[E]} := [V_2, +].$$

Let $n \ge 1$, and $S_1, S_2$ be two $n$-simplices sharing a facet $F$. Then we say that $[S_1]$ and $[S_2]$ are consistently oriented if

$$[F]_{|[S_1]} = -[F]_{|[S_2]} \quad (3)$$

i.e. they induce **opposite** orientations on their common facet. If $V \subset \mathbb{R}^n$, then the $n$-simplices have a natural orientation: $[V_1, \dots, V_{n+1}]$ is naturally oriented if

$$\det [V_2 - V_1, \dots, V_{n+1} - V_1] > 0.$$

We record the following two elementary results for later use.

**Lemma 1.1.** If $[K]$ is an oriented $n$-simplex with $n \ge 2$, and $F$ and $F'$ are two distinct facets of $K$, then $[F]_{|[K]}$ and $[F']_{|[K]}$ are consistently oriented.

**Lemma 1.2** (See e.g. [23, Prop. 5.16]). Let $[K]$ and $[K']$ be two naturally oriented $n$-simplices in $\mathbb{R}^n$ that share a facet, but have disjoint interiors. Then $[K]$ and $[K']$ are consistently oriented.

**Remark 1.3.** Choosing an orientation of a triangle $T$ in $\mathbb{R}^3$ is equivalent to deciding on a unit normal vector $n$ on $T$: the orientation $[A, B, C]$ corresponds to the vector

$$n = \frac{\overline{AB} \times \overline{AC}}{\| \overline{AB} \times \overline{AC} \|} \quad (4)$$

## 1.2. Triangulations

An $n$-dimensional triangulation $\mathcal{M}$ is a finite set of $n$-simplices that we call the *elements* of $\mathcal{M}$. The $d$-subsimplices of $\mathcal{M}$ are defined as

$$\sigma_d(\mathcal{M}) := \bigcup_{K \in \mathcal{M}} \sigma_d(K), \quad \mathcal{F}(\mathcal{M}) := \sigma_{n-1}(\mathcal{M}), \quad \sigma(\mathcal{M}) := \bigcup_{d \le n} \sigma_d(\mathcal{M}). \quad (5)$$

Thus for a triangulation $\mathcal{M}$, $\sigma(\mathcal{M})$ is a *pure* abstract simplicial complex [24, Chap. 7]. In an abstract triangulation $\mathcal{M}$, two subsimplices $S \in \sigma_d(\mathcal{M})$ and $S' \in \sigma_{d'}(\mathcal{M})$ are *incident* if

$$|d - d'| = 1 \text{ and } S \subset S' \text{ or } S' \subset S.$$

Two $d$-subsimplices $S$ and $S'$ are *adjacent* if they are incident to a common $(d-1)$-subsimplex. In this case, we write $S \stackrel{M}{\leftrightarrow} S'$. We say that a triangulation $\mathcal{M}$ is *branching* if at least one facet of $\mathcal{M}$ is incident to more than two elements of $\mathcal{M}$, and *non-branching* otherwise.

The *star* [25] of a subsimplex $S \in \sigma(\mathcal{M})$ is the triangulations defined by

$$\mathrm{st}(S, \mathcal{M}) := \{ K \in \mathcal{M} \mid S \subset K \}, \quad (6)$$

If $n \ge 1$, the boundary $\partial \mathcal{M}$ of an $n$-dimensional triangulation $\mathcal{M}$ is the $(n-1)$-dimensional triangulation defined by

$$\partial \mathcal{M} := \{ F \in \mathcal{F}(\mathcal{M}) \mid F \text{ is incident to exactly one element of } \mathcal{M} \}. \quad (7)$$

When $n = 0$, $\partial \mathcal{M}$ is the empty set. One can check that if $\mathcal{M}$ is non-branching, then $\partial \partial \mathcal{M} = \emptyset$. The boundary of a non-branching triangulation can be branching.

**Example 1.4.** Let $\mathcal{V} = \{A, B, C, D, E\}$ and

$$\mathcal{M} = \{\{A, B, C\}, \{A, B, D\}, \{A, C, D\}, \{B, C, D\}, \{C, D, E\}\},$$

then $\partial \mathcal{M} = \{\{C, E\}, \{D, E\}\}$, $\partial \partial \mathcal{M} = \{\{C\}, \{D\}\}$ and $\partial \partial \partial \mathcal{M} = \emptyset$. The triangulation

$$\mathcal{M} = \{\{A, B, C\}, \{C, D, E\}\} \quad (8)$$

is non-branching, while its boundary is branching. $\Delta$

An *orientation* of a triangulation $\mathcal{M}$ is a choice of an orientation of each of its simplices. An *oriented triangulation* is a triangulation equipped with an orientation. If $\mathcal{M}$ is oriented, the oriented simplex corresponding to the element $K \in \mathcal{M}$ is denoted by $[K]_\mathcal{M}$.

The orientation of $\mathcal{M}$ is called *compatible* if for any two adjacent elements $K$ and $K'$, $[K]_\mathcal{M}$ and $[K']_\mathcal{M}$ are consistently oriented. An abstract triangulation which admits a compatible orientation is called *orientable*. It is easy to see that an orientable triangulation must be non-branching. Therefore, the triangulation (8) of Example 1.4 shows that the boundary of an orientable triangulation may be non-orientable boundary.

## 1.3. Meshes

An $n$-dimensional triangulation $\mathcal{M}$ is called a *mesh* if its vertex set $\mathcal{V}$ is a subset of $\mathbb{R}^m$ with $n \le m$, and if

$$\forall (K, K') \in \mathcal{M} \times \mathcal{M}, \quad |K| \cap |K'| = |K \cap K'|. \quad (9)$$

In other words, the intersection of the convex hulls of two elements is either empty or equal to the convex hull of a common subsimplex. We write

$$|\mathcal{M}| := \bigcup_{K \in \mathcal{M}} |K|, \quad (10)$$

and say that $\mathcal{M}$ is *regular* if $|\mathcal{M}|$ is an $n$-manifold with or without boundary, meaning that each point $x \in |\mathcal{M}|$ has a neighborhood in $|\mathcal{M}|$ that is homeomorphic to either $\mathbb{R}^n$ or $\mathbb{R}_+^n := \mathbb{R}^{n-1} \times \mathbb{R}^+$. An example of a non-regular mesh is given by Fig. 1, while Fig. 2 shows the star of a vertex in a regular mesh.

Every facet of a regular mesh is incident to at most two elements (see e.g. [26, Lemma 11.1.2]). Hence, when $n = 3$, this notion of regular mesh corresponds to that of Ciarlet [27, Chap. 2], which is well-established in finite element literature. In particular, regular meshes are non-branching. Moreover, when $\mathcal{M}$ is regular, then so is its boundary $\partial \mathcal{M}$, and $|\partial \mathcal{M}|$ is the manifold boundary of $|\mathcal{M}|$ (cf. [25, p. 4]).

We also record the following classical property of regular meshes for later use.

**Lemma 1.5.** If $\mathcal{M}$ is a regular mesh and $S \in \sigma(\mathcal{M})$, then the *star* of $S$ is face-connected, in the sense that for any two elements $K$ and $K'$ in $\mathrm{st}(S, \mathcal{M})$, there are elements $K_1, \dots, K_Q$ of $\mathrm{st}(S, \mathcal{M})$ such that

(i) $K_1 = K$

(ii) $K_Q = K'$

(iii) $\forall i \in \{1, \dots, Q-1\}, K_i \stackrel{M}{\leftrightarrow} K_{i+1}$.

**Proof.** Following the comment below Theorem 2.2 in [25], the mesh $\mathrm{st}(S, \mathcal{M})$ is piecewise linearly homeomorphic to $[0, 1]^n$. In particular, it is a connected regular mesh, so the result follows from [26, Lemma 11.1.3]. $\square$
<figure><img src="image_4.png" /><figcaption>Fig. 1. A non-regular triangular mesh.</figcaption></figure>

<figure><img src="image_5.png" /><figcaption>Fig. 2. A regular triangular mesh. The star of the vertex A, is represented in blue.</figcaption></figure>

## 1.4. Data structures

In our Matlab implementation [28], meshes over $V \subset \mathbb{R}^3$ are manipulated via the toolbox openMsh from [29]. The mesh class declaration reads

```matlab
classdef msh
    properties
        vtx;      % Nvtx x 3 array of real coordinates
        elt;      % Nelt x (n+1) array with entries in {1,...,Nvtx}
    end
```

The points of $V$ are stored in the array vtx. Each line of vtx corresponds to a vertex $V \in V$, the three column giving the x, y and z coordinates. The lines of the array elt are mutually distinct and encode the simplices of $M$, referring to the vertices by their index in vtx. This is essentially the same data structure as in the widely used meshing tool Gmsh [30]. Many alternative choices of data structure exist to represent more general simplicial complexes, see [31] for a review.

## 2. Generalized meshes

We now introduce generalized meshes. Roughly speaking, they are defined by a set of elements – each of which is assigned a realization as an n-simplex – and a specified adjacency between those elements.

The adjacency relation must respect the following conditions: (i) each element has at most one neighbor per facet, and (ii) two elements can only be adjacent if their realizations have a common facet. A more precise definition is given below, and is illustrated by several examples afterwards. We then define generalized subfacets, and briefly describe an algorithm to compute them.

### 2.1. Definitions and examples

**Definition 2.1 (Generalized Mesh, or “Gen-mesh” ).** For $n \ge 0$, an n-dimensional generalized mesh $M^*$ is a quadruple $(V_{M^*}, K_{M^*}, \mathcal{K}_{M^*}, G_{M^*})$ where

* $V_{M^*}$ is a set called the vertex set of $M^*$.

* $K_{M^*}$ is a finite set. Its elements are called elements of $M^*$; we write $k \in M^*$ as short for $k \in K_{M^*}$.

* $\mathcal{K}_{M^*}$ is a realization function, mapping each element $k \in M^*$ to a simplex $\mathcal{K}_{M^*}(k)$ over $V_{M^*}$. The simplex $\mathcal{K}_{M^*}(k)$ is called the simplex attached to $k$. If $V_{M^*} \subset \mathbb{R}^m$ for some $m \ge n$, then the simplices attached to the elements of $M^*$ must be non-degenerate. The realization function need not be injective: the same simplex may be attached to several distinct elements.

* $G_{M^*}$ is a graph between the split facets of $M^*$, by which we mean the pairs of the form

$$ (F, k), \text{ with } k \in M^* \text{ and } F \text{ a facet of } K = \mathcal{K}_{M^*}(k). \quad (11) $$

We write $\mathbb{F}(M^*)$ for the set of split facets. The graph $G_{M^*}$ is called the adjacency graph of $M^*$, and is assumed to satisfy the following axioms:

(i) the nodes of $G_{M^*}$ have degree 0 or 1, and

(ii) if two split facets $(F, k)$ and $(F', k')$ are connected by an edge in $G_{M^*}$, then

$$ F = F' \text{ and } k \neq k'. $$

**Remark 2.2.** The split facets introduced above correspond exactly to facet uses in classical non-manifold mesh structures [17, p. 175]. We shall not require other entity uses. Instead, the important concept is that of generalized subfacets, introduced in Section 2.3.

**Example 2.3 (Domain with a Crack).** Let $M_1^*$ be the generalized triangular mesh (see Fig. 3) defined by

$$ \begin{gathered} V_{M_1^*} = \{A, \dots, J\}, \quad K_{M_1^*} = \{1, \dots, 10\}, \\ \mathcal{K}(1) = \text{ABC}, \quad \mathcal{K}(2) = \text{BCD}, \quad \mathcal{K}(3) = \text{BDE}, \quad \mathcal{K}(4) = \text{BEF}, \quad \mathcal{K}(5) = \text{BFG} \end{gathered} $$

$$ \mathcal{K}(6) = \text{ABG}, \quad \mathcal{K}(7) = \text{AGH}, \quad \mathcal{K}(8) = \text{AHI}, \quad \mathcal{K}(9) = \text{AIJ}, \quad \mathcal{K}(10) = \text{ACJ}. $$

There are $3 \times 10 = 30$ split facets (green dots in Fig. 3), the first few are given by

$$ \mathbb{F}(M_1^*) = \{(\text{AB}, 1), (\text{BC}, 1), (\text{AC}, 1), (\text{BC}, 2), (\text{CD}, 2), (\text{BD}, 2), \dots\}. $$

The adjacency graph is represented by green segments in Fig. 3. The two split facets (AB, 1) and (AB, 6) are not connected: this creates the “fracture”, highlighted in red. $\Delta$

**Example 2.4 (Two-Sided Segment).** One can consider the generalized edge mesh $M_2^*$ (see Fig. 4) with

$$ V_{M_2^*} = \{A, B\}, \quad K_{M_2^*} = \{1, 2\}, $$

and with the realization $\mathcal{K}_{M_2^*}(1) = \mathcal{K}_{M_2^*}(2) = \text{AB}$. There are 4 split facets:

$$ \mathbb{F}(M_2^*) = \{(\text{A}, 1), (\text{B}, 1), (\text{A}, 2), (\text{B}, 2)\} $$

and the adjacency graph is represented in green in Fig. 4.
<figure><img src="image_6.png" /><figcaption>Fig. 3. Graphical representation of the generalized mesh $M_2^*$ of Example 2.3. The adjacency graph $G_{M_2^*}$ is shown in green. The dot in an element i and near an edge E is associated to the split facet $(E,i) \in F(M_2^*)$. Even though the elements 1 and 6 have the edge AB (highlighted in red) in common, they are not adjacent.</figcaption></figure>

The two elements of $M_2^*$ can be thought of as the upper and lower sides of the segment AB. We shall see that this generalized mesh is one of the components of the boundary of the generalized mesh $M_1^*$ from the previous example. Δ

When two split facets $(F, k)$ and $(F', k')$ of generalized mesh $M^*$ are connected in the graph $G_{M^*}$, we write

$$k \underset{M^*}{\stackrel{F}{\rightleftharpoons}} k', \qquad (12)$$

and say that $k$ and $k'$ are adjacent through $F$. With this notation, the adjacency graph of $M_1^*$ from Example 2.3 can be summarized by

$$1 \underset{M_1^*}{\overset{BC}{\rightleftharpoons}} 2 \underset{M_1^*}{\overset{BD}{\rightleftharpoons}} 3 \underset{M_1^*}{\overset{BE}{\rightleftharpoons}} 4 \underset{M_1^*}{\overset{BF}{\rightleftharpoons}} 5 \underset{M_1^*}{\overset{BG}{\rightleftharpoons}} 6 \underset{M_1^*}{\overset{AG}{\rightleftharpoons}} 7 \underset{M_1^*}{\overset{AH}{\rightleftharpoons}} 8 \underset{M_1^*}{\overset{AI}{\rightleftharpoons}} 9 \underset{M_1^*}{\overset{AH}{\rightleftharpoons}} 10 \underset{M_1^*}{\overset{AC}{\rightleftharpoons}} 1,$

and that of $M_2^*$ in Example 2.4 by

$$1 \underset{M_2^*}{\overset{A}{\rightleftharpoons}} 2 \underset{M_2^*}{\overset{B}{\rightleftharpoons}} 1.$$

If $k \underset{M^*}{\stackrel{F}{\rightleftharpoons}} k'$ and $S \in \sigma(F)$, then we also say that $k$ and $k'$ are adjacent through $S$ and extend the notation $k \underset{M^*}{\overset{S}{\rightleftharpoons}} k'$ to this case. For each split facet $(F, k) \in F(M^*)$, by requirement (i), there is at most one element $k'$ such that $k \underset{M^*}{\stackrel{F}{\rightleftharpoons}} k'$. If such an element exist, it is called the neighbor of $k$ through $F$. Otherwise, we write $k \underset{M^*}{\stackrel{F}{\rightleftharpoons}} \bot$. This way, for each element $k \in M^*$, we can define a neighbor function

$$\mathcal{N}_{M^*}(k, \cdot) : \mathcal{F}(K) \to \mathbf{K}_{M^*} \cup \{\bot\},$$

mapping each facet $F$ of the simplex $K = \mathcal{K}_{M^*}(k)$ to the neighbor of $k$ through $F$:

$$\forall F \in \mathcal{F}(K), \quad \mathcal{N}_{M^*}(k, F) := \begin{cases} k' & \text{if } k \underset{M^*}{\overset{F}{\rightleftharpoons}} k', \\ \bot & \text{if } k \underset{M^*}{\overset{F}{\rightleftharpoons}} \bot. \end{cases} \qquad (13)$$

For example, in the gen-mesh $M_1^*$ from Example 2.3, the neighbors of the element 1 are given by

$$\mathcal{N}_{M_1^*}(1, BC) = 2, \quad \mathcal{N}_{M_1^*}(1, AC) = 10, \quad \mathcal{N}_{M_1^*}(1, AB) = \bot.$$

When the generalized mesh under consideration is sufficiently clear from the context, we drop the subscript $M^*$ from the notation, i.e. write $V, K, K, G, G \stackrel{F}{\rightleftharpoons}$, instead of $V_{M^*}, K_{M^*}, \mathcal{K}_{M^*}, G_{M^*}, \stackrel{F}{\rightleftharpoons}$, and so on.

**Definition 2.5 (Subsimplices of a Generalized Mesh).** Let $M^*$ be an $n$-dimensional gen-mesh, $k \in M^*$ and $K$ the simplex attached to $k$. The subsimplices and facets of an element $k$ are defined by

$$\forall d \in \{0, \dots, n\}, \quad \sigma_d(k) := \sigma_d(K), \quad \sigma(k) := \sigma(K), \quad \mathcal{F}(k) := \mathcal{F}(K),$$

If $K$ is a non-degenerate simplex of $\mathbb{R}^m$, we also write $|k| := |K|$. Similarly, the subsimplices and facets of a generalized mesh $M^*$

<figure><img src="image_7.png" /><figcaption>Fig. 4. Graphical representation of the generalized mesh $M_2^*$ of Example 2.4, where the two red curves, supposed to be two instances of the segment AB, should be on top of each other. They have been torn apart to visualize the adjacency graph, represented in green.</figcaption></figure>

are

$$\sigma_d(M^*) := \bigcup_{k \in \mathbf{K}_{M^*}} \sigma_d(k), \quad \sigma(M^*) := \bigcup_{0 \le d \le n} \sigma_d(M^*), \qquad (14)$$

$$\mathcal{F}(M^*) := \sigma_{n-1}(M^*).$$

**Definition 2.6 (Relabeling of Generalized Meshes).** The gen-mesh $M_2^*$ is a relabeling of the gen-mesh $M_1^*$ if

* there is a bijection $\varphi : \mathbf{K}_{M_1^*} \to \mathbf{K}_{M_2^*}$,

* the realizations functions $\mathcal{K}_{M_1^*}$ and $\mathcal{K}_{M_2^*}$ satisfy

$$\mathcal{K}_{M_1^*} = \mathcal{K}_{M_2^*} \circ \varphi,$$

* there holds

$$k \underset{M_1^*}{\stackrel{F}{\rightleftharpoons}} k' \iff \varphi(k) \underset{M_2^*}{\stackrel{F}{\rightleftharpoons}} \varphi(k').$$

Every non-branching triangulation can also be regarded as a generalized mesh, in the following sense:

**Definition 2.7 (Generalized Mesh Representing a Non-branching Triangulation).** The generalized mesh $M^*$ representing the non-branching triangulation $M$ is defined as follows:

* the vertex set is the same as that of $M$, i.e. $V_{M^*} := \sigma_0(M)$,

* the elements of $M^*$ are the elements of $M$, i.e. $K_{M^*} := M$,

* the realization of $M^*$ is the identity map, i.e. $\mathcal{K}_{M^*}(K) = K, \forall K \in M$,

* the adjacency graph is defined by

$$K \underset{M^*}{\stackrel{F}{\rightleftharpoons}} K' \iff K \underset{M}{\stackrel{F}{\rightleftharpoons}} K' \iff F = K \cap K'.$$

It is necessary for $M$ to be non-branching for the last point in the definition above to be consistent with the requirement (i) of Definition 2.1.

Finally, one can define a notion of orientability for generalized meshes as for usual meshes:

**Definition 2.8 (Orientable Generalized Mesh).** An oriented gen-mesh is a gen-mesh endowed with an orientation, i.e. a choice of orientation for each of its elements. For an element $k \in M^*$, an orientation of $k$ is an orientation of its realization $\mathcal{K}_{M^*}(k)$. We denote the corresponding oriented simplex by $[k]_{M^*}$.

The orientation of $M^*$ is called compatible if, whenever $k \underset{M^*}{\stackrel{F}{\rightleftharpoons}} k'$, the simplices $[k]_{M^*}$ and $[k']_{M^*}$ are consistently oriented. A generalized mesh that admits a compatible orientation is called orientable.

## 2.2. Example of implementation

We represent generalized meshes (in Matlab) using the following data structure:

```matlab
classdef GeneralizedMesh
```

<table><tr><td>properties</td><td></td></tr><tr><td>vtx;</td><td>% List of vertices of size Nvtx</td></tr><tr><td>elt;</td><td>% Nelt x (n+1) array with entries in {1,...,Nvtx}</td></tr><tr><td>nei_elt;</td><td>% Nelt x (n+1) array with entries in {0,...,Nelt}</td></tr><tr><td>nei_fct;</td><td>% Nelt x (n+1) array with entries in {0,...,n+1}</td></tr></table>

end
The attribute elt is used as in the msh class, except this time, the rows of elt are not necessarily mutually distinct. An instance of GeneralizedMesh represents a generalized mesh with elements {1,..., N<sub>elt</sub>}. The ith line of elt encodes the simplex attached to the element i. The adjacency graph is encoded by the attributes nei_elt, nei_fct with the following conventions:

$$
\begin{align*}
i \leftrightarrow j &\Leftrightarrow \begin{cases} (\mathrm{nei\_elt}[i, \alpha], \mathrm{nei\_fct}[i, \alpha]) = (j, \beta), \\ F_a(i) = F_{\beta}(j) = F, \end{cases} \\
i \leftrightarrow \perp &\Leftrightarrow \begin{cases} (\mathrm{nei\_elt}[i, \alpha], \mathrm{nei\_fct}[i, \alpha]) = (0, 0), \\ F_a(i) = F. \end{cases}
\end{align*}
$$

for all i, j ∈ {1, ..., N<sub>elt</sub>}.

Here, for α ∈ {1, ..., n + 1), F<sub>α</sub>(i) denotes the facet of the simplex attached to the element i, obtained by removing the vertex in position α in the ith line of elt.

**Example 2.9.** For the mesh M\* of Example 2.3, this gives the following arrays:

$$
\text{vtx} = \begin{pmatrix} \text{A} \\ \text{B} \\ \text{C} \\ \text{D} \\ \text{E} \\ \text{F} \\ \text{G} \\ \text{H} \\ \text{I} \\ \text{J} \end{pmatrix}, \quad \text{elt} = \begin{pmatrix} 1 & 2 & 3 \\ 2 & 3 & 4 \\ 2 & 4 & 5 \\ 2 & 5 & 6 \\ 2 & 6 & 7 \\ 2 & 7 & 1 \\ 1 & 7 & 8 \\ 1 & 8 & 9 \\ 1 & 9 & 10 \\ 1 & 10 & 3 \end{pmatrix},
$$

$$
\text{nei\_elt} = \begin{pmatrix} 2 & 10 & 0 \\ 0 & 3 & 1 \\ 0 & 4 & 2 \\ 0 & 5 & 3 \\ 0 & 6 & 4 \\ 7 & 0 & 5 \\ 0 & 8 & 6 \\ 0 & 9 & 7 \\ 0 & 10 & 8 \\ 0 & 1 & 9 \end{pmatrix}, \text{nei\_fct} = \begin{pmatrix} 3 & 2 & 0 \\ 0 & 1 & 1 \\ 0 & 3 & 2 \\ 0 & 3 & 2 \\ 0 & 3 & 2 \\ 3 & 0 & 2 \\ 0 & 3 & 1 \\ 0 & 3 & 2 \\ 0 & 3 & 2 \\ 0 & 2 & 2 \end{pmatrix}
$$

with the conventions above. △

The *d*-subsimplices of a generalized mesh $\mathcal{M}^*$ can be computed by removing duplicate entries in the list of all subsimplices of all elements. This is done by first sorting the list of subsimplices lexicographically (according to the vertex indices), and then removing duplicates in a second, linear pass. Hence, the number of operations required is proportional to $N_1 \log N_1$, where

$$
N_1 := \binom{n}{d} \mathrm{Card}(\mathbf{K}_{\mathcal{M}^*}). \qquad (15)
$$

One of the class constructors for GeneralizedMesh is an imple-
mentation of Definition 2.7. Called on an instance of msh representing
a non-branching mesh M, it outputs a generalized mesh M* represent-
ing M. This involves the computation of the adjacency graph of M,
which requires a number of operations proportional to Card(M), the
proportionality constant depending polynomially on n.

For more details, we refer to our Matlab implementation [28].

**Remark 2.10.** One can see that a *GeneralizedMesh* instance representing a non-branching mesh uses up about three times as much memory as the corresponding *msh* instance. For meshes that do not differ much from a regular mesh, this cost can easily be reduced by only storing those pairs of elements which are not adjacent although they share a facet. Furthermore, the field *nei_fct* need not be stored, as it can easily be deduced from *nei_elt*. With those simple changes, storing a normal mesh as a *GeneralizedMesh* incurs no extra memory cost compared to an *msh*.

<figure><img src="image_8.png" /><figcaption>Fig. 5. Possible configuration of the generalized star of a vertex S, with the same conventions as in Fig. 3 (left), and corresponding graph G(S) (right). In this example, there are three generalized vertices attached to S: (S, {1}), (S, {2, 3, 4}) and (S, {5, 6}).</figcaption></figure>

2.3. Generalized subfacets

The generalized *d*-subfacets defined in this section play an impor-
tant role in the remainder of this work.

Given $S \in \sigma(\mathcal{M}^*)$, the generalized star of $S$ is defined by

$$
\mathrm{st}(S, \mathcal{M}^*) := \left\{ \mathbf{k} \in \mathcal{M}^* \mid S \in \sigma(\mathbf{k}) \right\}. \qquad (16)
$$

Let G(S) be the graph between the elements of st(S, M*), with an edge between **k** and **k'** if **k** S**k'** (see Fig. 5, for an example where S is a vertex). The connected components of G(S) define a partition γ₁, ..., γQ of st(S, M*), and we write

$$
C(S) := \{\gamma_1, \dots, \gamma_Q\}.
$$

**Definition 2.11 (Generalized Subfacets).** For 0 ≤ *d* ≤ *n*, a generalized *d*-subfacet is a *d*-simplex *S* ∈ σ<sub>*d*</sub>(*M*<sup>*</sup>) labeled by a component γ ∈ C(*S*). The set of generalized *d*-subfacets, denoted by S<sub>*d*</sub>(*M*<sup>*</sup>), is thus

$$
\mathbf{S}_d(\mathcal{M}^*) := \left\{ \mathbf{s} = (S, \gamma) \mid S \in \sigma_d(\mathcal{M}^*), \gamma \in C(S) \right\}. \quad (17)
$$

We say that a generalized *d*-subfacet *s* = (*S*, *γ*) is attached to the
subsimplex *S*, and we extend the meaning of the realization *K* so that
*K*(*s*) := *S*. Also, let us write

$$
\sigma_d(s) := \sigma_d(S), \quad \mathrm{st}(s, \mathcal{M}^*) := \gamma.
$$

A generalized *d*-subfacet is called a generalized vertex and a generalized
facet for *d* = 0 and *d* = *n* − 1, respectively. We again adopt a special
notation for the set of generalized facets:

$$
F(\mathcal{M}^*) := S_{n-1}(\mathcal{M}^*). \tag{18}
$$

For an *n*-dimensional gen-mesh $\mathcal{M}^*$, when $K \in \sigma_n(\mathcal{M}^*)$, the graph $\mathcal{G}(K)$ has no edges. Indeed, the elements in $\text{st}(K, \mathcal{M}^*)$ can only be adjacent through simplices of dimension $d \le n-1$, hence, not through $K$. Therefore,

$$
S_n(\mathcal{M}^*) \cong \sigma_n(\mathcal{M}^*) = \mathbf{K}_{\mathcal{M}^*},
$$

and we identify generalized *n*-subfacets with elements. When $\mathcal{M}^*$ represents a regular mesh, then $S_d(\mathcal{M}^*) \cong \sigma_d(\mathcal{M}^*)$ for all $0 \le d \le n$ because of Lemma 1.5.

From the *d*-subsimplices $\sigma_d(\mathcal{M}^*)$, one can compute all the generalized *d*-subfacets of $\mathcal{M}^*$ in a number of operations proportional to $N_2 N_3$ where

$$
N_2 = \mathrm{Card}(\sigma_d(\mathcal{M}^*)) , \quad N_3 = \max_{S \in \sigma_d(\mathcal{M}^*)} \mathrm{Card}(\mathrm{st}(S, \mathcal{M}^*)) .
$$

This is achieved by a simple graph connected component search, sum-
marized in Algorithms 1 and 2 below:

**Definition 2.12 (Incidence and Adjacency of Generalized Subfacets).**
Given s, s' ∈ S<sub>d'</sub>(M<sup>*</sup>), with 0 ≤ d < d' ≤ n, we write s ⊂ s' if

$$
\mathcal{K}(s) \subset \mathcal{K}(s') \text{ and } \text{st}(s, \mathcal{M}^*) \supset \text{st}(s', \mathcal{M}^*),
$$
**Algorithm 1 GeneralizedSubfacets($\mathcal{M}^*$, $d$)**

**INPUTS:** Generalized mesh $\mathcal{M}^*$, subfacet dimension $d$.

**RETURNS:** The set of generalized $d$-subfacets of $\mathcal{M}^*$, $S_d(\mathcal{M}^*)$.

S_d ← {} % Initialization

FOR $S \in \sigma_d(\mathcal{M}^*)$ % Loop over the $d$-subsimplices of $\mathcal{M}^*$

l ← st(S, $\mathcal{M}^*$); % Generalized star of S

WHILE (l ≠ {})

Choose $k \in l$; % Pick element of the star of S not already visited

$\gamma \leftarrow \{\}$;

$(\gamma, l) \leftarrow \text{AUX}(\mathcal{M}^*, S, \gamma, l, k)$; % Visit component of $k$ and store it in $\gamma$.

$s \leftarrow (S, \gamma)$; % Create the corresponding new generalized facet

$\mathcal{S}_d \leftarrow \mathcal{S}_d \cup \{s\}$; % Append it to the list $\mathcal{S}_d$

END WHILE

RETURN $\mathcal{S}_d$

**Algorithm 2 AUX($\mathcal{M}^*$, $S, \gamma, l, k$)**

**INPUTS:** A generalized mesh $\mathcal{M}^*$, a simplex $S \in \sigma(\mathcal{M}^*)$, two disjoint subsets $\gamma$ and $l$ of st(S, $\mathcal{M}^*$), an element $k \in l$.

**RETURNS:** The set $\gamma$ augmented with all elements in the same component as $k$ in $G(S)$, and the set $l$ from which those elements have been removed.

$\gamma \leftarrow \gamma \cup \{k\}$; % Append element $k$ to $\gamma$

$l \leftarrow l \setminus \{k\}$; % Remove element $k$ from $l$

FOR $F \in \mathcal{F}(k)$ such that $S \in \sigma(F)$ % Loop over the facets of $k$ incident to $S$

$k' \leftarrow \mathcal{N}(k, F)$; % Neighbor of $k$ through $F$

IF $k' \in l$

$(\gamma, l) \leftarrow \text{AUX}(\mathcal{M}^*, S, \gamma, l, k')$; % Recursively visit neighbors of $k'$ through $S$

END IF

END FOR

RETURN $(\gamma, l)$

in which case we say that $s$ is contained in $s'$. When $|d - d'| = 1$, we say that $s$ and $s'$ are incident. Two generalized $d$-subfacets are adjacent if they are incident to a common generalized $(d-1)$-subfacet.

One can check that a generalized $d$-facet $s$ is uniquely determined by the set of $(d+1)$ generalized vertices belonging to $s$, and that for $d=n$, this new notion of adjacency is consistent with the previous one.

**Example 2.13.** We consider the generalized mesh $\mathcal{M}_3^*$ represented in Fig. 6. It represents a rectangular domain $\Omega$ containing a fracture $\Gamma$ (red edges in the figure). There are 4 generalized vertices attached to the vertex $O$,

$$v_1 = (O, \{11, 12\}), v_2 = (O, \{14\}), v_3 = (O, \{19\}), \text{ and}$$

$$v_4 = (O, \{21, 22\}),$$

and two generalized edges attached to the edge OA,

$$e_1 = (OA, \{11\}), e_2 = (OA, \{14\}).$$

In the sense of Definition 2.12, one has $v_1 \subset e_1$ and $v_2 \subset e_2$. $\Delta$

**Lemma 2.14.** Let $\mathcal{M}^*$ be an $n$-dimensional gen-mesh and suppose $k, k' \in \mathcal{M}^*$ are adjacent. Then there are $n$ distinct generalized vertices belonging to both $k$ and $k'$. The converse is not true, that is, even if two elements share $n$ generalized vertices, they are not necessarily adjacent.

**Proof.** Let $F \in \mathcal{F}(\mathcal{M}^*)$ be such that $k \stackrel{F}{\leftrightarrow} k'$. Write $F = \{v_1, v_2, \dots, v_n\}$. For each $k \in \{1, \dots, n\}$, since $v_k \in \sigma(F)$ one has

$$k \stackrel{v_k}{\leftrightarrow} k'$$

Hence, there is a component $\gamma_k \in C(V_k)$ containing both $k$ and $k'$. Set $v_k := (v_k, \gamma_k) \in S_0(\mathcal{M}^*)$. Then, the generalized vertices $v_1, \dots, v_n$ all belong to both $k$ and $k'$.

<figure><img src="image_9.png" /><figcaption>Fig. 6. A generalized mesh representing a domain with a cross-shaped fracture, with the same conventions as in Fig. 3.</figcaption></figure>

For the converse statement, a counter-example is provided by the generalized mesh $\mathcal{M}_1^*$ of Example 2.3. The elements 1 and 6 share two generalized vertices (attached to A and B, respectively), but they are not adjacent. $\square$

**Remark 2.15.** There is a natural concept of a mesh refinement for generalized meshes (implemented in [28]). In many cases, it seems that given generalized mesh $\mathcal{M}^*$, there exists a refinement $\mathcal{M}_{\text{ref}}^*$ of $\mathcal{M}^*$ in which two elements are adjacent if and only if they share $n$ distinct generalized vertices. When this happens, the mesh $\mathcal{M}_{\text{ref}}^*$, and therefore the geometry represented by $\mathcal{M}^*$, can be equivalently described by a non-branching triangulation $\mathcal{M}_{\text{eq}}$, defined by

$$\mathcal{V} := S_0(\mathcal{M}_{\text{ref}}^*)$$

$$\mathcal{V}^{n+1} \ni \{v_1, \dots, v_{n+1}\} \in \mathcal{M}_{\text{eq}} \iff \exists k \in \mathcal{M}_{\text{ref}}^* \text{ such that } v_1, \dots, v_{n+1}$$
<figure><img src="image_10.png" /><figcaption>Fig. 8. Generalized mesh $M_3^*$ (from Example 2.13) and its generalized boundary $\partial^* M_3^*$.</figcaption></figure>

If $M^*$ is a 0-dimensional generalized mesh, we set $\partial^* M^* := \emptyset$.

This definition respects the axioms of generalized meshes by Corollary 3.2. Moreover, it is clear that for any gen-mesh $M^*$, the gen-mesh $\partial\partial M^*$ is empty.

**Example 3.4.** Consider again the generalized mesh $M_3^*$ represented in Fig. 6. Its generalized boundary is represented in Fig. 8, where the inner component of the boundary (in red) has been “inflated” to help visualizing the adjacency structure. △

Now, we prove that the previous definition suitably generalizes the notion of boundary for regular meshes.<fnref n="3" /> For the terminology used in the next lemma, recall Definitions 2.6 and 2.7:

**Lemma 3.5.** Let $M$ be a regular mesh, and let $M^*$ (resp. $(\partial M)^*)$ be the generalized mesh representing $M$ (resp. $\partial M$). Then, the meshes $\partial^* M^*$ and $(\partial M)^*$ are equal, up to a relabeling.

**Proof.** Given $F \in \partial M$, there exists a unique element $K \in M$ incident to $F$, and it satisfies

$$K \underset{M}{\overset{F}{\rightleftarrows}} \perp.$$

Hence, $(F, K) \in F_b(M^*)$, and we write $(F, K) := \varphi(F)$. Since $K_{(\partial M)^*} = \partial M$ and $K_{\partial^* M^*} = F_b(M^*)$, this gives a bijection

$$\varphi: K_{(\partial M)^*} \to K_{\partial^* M^*}.$$

Obviously, there holds $\mathcal{K}_{(\partial M)^*} = \mathcal{K}_{\partial^* M^*} \circ \varphi$. Moreover, given $F, F' \in K_{(\partial M)^*}$, assume that

$$F \underset{(\partial M)^*}{\overset{S}{\rightleftarrows}} F'.$$

Let $K$ and $K'$ be such that $\varphi(F) = (F, K)$ and $\varphi(F') = (F', K')$. Both $K$ and $K'$ are in the star of $S$. Therefore, by Lemma 1.5, there exists $K_1, \dots, K_Q$ in the star of $S$, with $K_1 = K, K_Q = K'$, such that

$$K_1 \underset{M}{\overset{F_1}{\rightleftarrows}} K_2 \underset{M}{\overset{F_2}{\rightleftarrows}} K_2 \underset{M}{\overset{F_3}{\rightleftarrows}} \dots \underset{M}{\overset{F_{Q-2}}{\rightleftarrows}} K_{Q-1} \underset{M}{\overset{F_{Q-1}}{\rightleftarrows}} K_Q.$$

with $F_i := K_i \cap K_{i+1}, 1 \le i \le Q-1$. Furthermore, we have

$$\perp \underset{M}{\overset{F}{\rightleftarrows}} K, \quad K' \underset{M}{\overset{F'}{\rightleftarrows}} \perp.$$

By definition of $M^*$, it follows that

$$\perp \underset{M^*}{\overset{F}{\rightleftarrows}} K \underset{M^*}{\overset{F_1}{\rightleftarrows}} K_2 \underset{M^*}{\overset{F_3}{\rightleftarrows}} \dots \underset{M^*}{\overset{F_{Q-2}}{\rightleftarrows}} K_{Q-1} \underset{M^*}{\overset{F_{Q-1}}{\rightleftarrows}} K' \underset{M^*}{\overset{F'}{\rightleftarrows}} \perp.$$

that is to say

$$(F', K') = \mathcal{N}_b((F, K), S).$$

We have thus shown

$$F \underset{(\partial M)^*}{\overset{S}{\rightleftarrows}} F' \Rightarrow \varphi(F) \underset{\partial^* M^*}{\overset{S}{\rightleftarrows}} \varphi(F').$$

The reverse implication is immediate. Hence $\partial^* M^*$ is a relabeling of $(\partial M)^*$. □

From now on, we drop the star from $\partial^*$.

**Definition 3.6 (Induced Orientation on the Boundary of a Generalized Mesh).** Let $M^*$ be an $n$-dimensional generalized mesh, with $n \ge 1$, equipped with some (possibly non-compatible) orientation. We define an orientation of $\partial M^*$ as follows: for each element $f = (F, k) \in F_b(M^*)$ of $M^*$, we choose

$$[f]_{\partial M^*} := [F]_{|[K]}$$

where $K$ is the simplex attached to $k$, $[K] = [k]_{M^*}$ is fixed by the orientation of $M^*$, and $[F]_{|[K]}$ is defined by Eq. (2). This orientation of $\partial M^*$ is called the orientation induced by $M^*$.

**Lemma 3.7.** If the orientation of $M^*$ is compatible, then the induced orientation of $\partial M^*$ is compatible.

**Proof.** Let $M^*$ be a generalized mesh equipped with a compatible orientation. Consider two elements $f = (F, k)$ and $f' = (F', k')$ such that

$$f \underset{\partial M^*}{\overset{S}{\rightleftarrows}} f'$$

We may introduce the chain

$$\perp \underset{M^*}{\overset{F_0}{\rightleftarrows}} k_1 \underset{M^*}{\overset{F_1}{\rightleftarrows}} k_2 \underset{M^*}{\overset{F_2}{\rightleftarrows}} \dots \underset{M^*}{\overset{F_{Q-2}}{\rightleftarrows}} k_{Q-1} \underset{M^*}{\overset{F_{Q-1}}{\rightleftarrows}} k_Q \underset{M^*}{\overset{F_Q}{\rightleftarrows}} \perp, \quad (21)$$

where $F_0 = F, k_1 = k, F_Q = F'$ and $k_Q = k'$. We define

$$[F_q]_{\text{left}} := \text{orientation of } F_q \text{ induced by } [k_q]_{M^*}, \quad q \in \{1, \dots, Q\},$$

$$[F_q]_{\text{right}} := \text{orientation of } F_q \text{ induced by } [k_{q+1}]_{M^*}, \quad q \in \{0, \dots, Q-1\}.$$

On the one hand, by Lemma 1.1, it holds that

$$\forall q \in \{1, \dots, Q\}, \quad [F_{q-1}]_{\text{right}} \text{ and } [F_q]_{\text{left}} \text{ induce opposite orientations on } S.$$

On the other hand, by the property that $[k_q]_{M^*}$ and $[k_{q+1}]_{M^*}$ are consistently oriented (since the orientation of $M^*$ is compatible), it holds that

$$\forall q \in \{1, \dots, Q-1\}, \quad [F_q]_{\text{right}} = -[F_q]_{\text{left}},$$

Consequently, $[F_q]_{\text{left}}$ and $[F_q]_{\text{right}}$ also induce opposite orientations on $S$.

<footnote n="3">³ We cannot formulate Lemma 3.5 in general for non-branching triangulations, since they can have branching boundaries — for which there is no corresponding generalized mesh, see the remark below Definition 2.7.</footnote>
It results from those two facts that $[F_0]_{\text{right}}$ and $[F_Q]_{\text{left}}$ induce opposite orientations on $S$, so they are consistently oriented. The conclusion of the lemma follows once we notice that $[F_0]_{\text{left}}$ and $[F_Q]_{\text{left}}$ are nothing else than the orientations of $F$ and $F'$ fixed by the orientation induced by $M^*$ on $\partial M^*$ according to Definition 3.6. $\square$

## 4. Fractured meshes and virtual inflation

In this section, we focus on one particular kind of generalized mesh: those obtained, starting from a regular mesh $M_\Omega$ of a domain $\Omega$, by “marking” a subset $M_\Gamma$ (called the fracture) of the facets of $M_\Omega$, and, for each marked facet $F$, dropping the adjacency between the two elements of $M_\Omega$ incident to $F$. The resulting mesh $M_{\Omega\setminus\Gamma}^*$ is called a fractured mesh of $\Omega \setminus \Gamma$ (see below for a more precise definition). Particular examples of such meshes have already been encountered in Examples 2.3 and 2.13. In what follows, we write $\Gamma := |M_\Gamma|$; our main concern is when $\Gamma$ is not a manifold.

Using the boundary of $M_{\Omega\setminus\Gamma}^*$, in the sense of the previous section, one can naturally associate to $M_\Gamma$ a generalized mesh $M_\Gamma^*(\Omega)$, which is a “two-sided” version of $M_\Gamma$. In the particular case where $M_\Gamma$ is a manifold, $M_\Gamma^*$ corresponds to the orientation covering of $M_\Gamma$ [22].

The gen-mesh $M_\Gamma^*(\Omega)$ is perfectly suited for the implementation of a boundary element method on the fracture. The main reason for this will become apparent in the next section. There, we show that the generalized $d$-facets of $M_\Gamma^*$ provide a convenient representation of the space of (multi-valued) restrictions to $\Gamma$ of discrete differential forms in a neighborhood of $\Gamma$ which are allowed to jump across $\Gamma$.

Requiring a mesh of the exterior of the fracture would squander a crucial advantage of boundary element methods. Fortunately, it turns out that the gen-mesh $M_\Gamma^*(\Omega)$ is independent of $\Omega$, and there exists an efficient intrinsic algorithm to construct it. The main idea was already outlined in [12]. The purpose of this section is to describe this algorithm formally and prove that it is correct, i.e. that it returns the same generalized mesh as $M_\Gamma^*(\Omega)$, up to a relabeling.

### 4.1. Fractured meshes

Consider a regular mesh $M_\Omega$ of dimension $n \ge 2$ and let $\Omega := |M|$. Let $M_\Gamma \subset \Gamma(M_\Omega)$ be a (not necessarily regular) mesh of dimension $n-1$, called the fracture, and let $\Gamma := |M_\Gamma|$. For example, if $n=3$, $M_\Gamma$ may be the mesh represented in Fig. 1.

**Definition 4.1 (Fractured Mesh).** Given $M_\Omega$ and $M_\Gamma$ fulfilling the conditions above, the fractured mesh $M_{\Omega\setminus\Gamma}^*$ is the generalized mesh with

* the vertex set $\mathcal{V}_{M_{\Omega\setminus\Gamma}^*} := \sigma_0(M_\Omega)$,

* the elements $\mathbf{K}_{M_{\Omega\setminus\Gamma}^*} := M_\Omega$,

* the identity realization $\mathcal{K}_{M_{\Omega\setminus\Gamma}^*}$ i.e. $\forall K \in M_\Omega$, $\mathcal{K}_{M_{\Omega\setminus\Gamma}^*}(K) = K$,

* the adjacency graph defined by

$$K \underset{M_{\Omega\setminus\Gamma}^*}{\overset{F}{\rightleftharpoons}} K' \iff (K \underset{M_\Omega}{\rightleftharpoons} K' \text{ and } F = K \cap K' \notin M_\Gamma).$$

In words, two elements of $M_{\Omega\setminus\Gamma}^*$ are adjacent if they share a facet $F$ which is not in the fracture.

### 4.2. Extrinsic virtual inflation

We introduce the following definition, which is illustrated in Fig. 9.

**Definition 4.2 (Extrinsic Inflation).** Given an $n$-dimensional regular mesh $M_\Omega$ and a mesh

$$M_\Gamma \subset \Gamma(M_\Omega) \setminus \partial M_\Omega,$$

the extrinsic inflation of $M_\Gamma$ via $M_\Omega$ is the $(n-1)$-dimensional generalized mesh $M_\Gamma^*(\Omega)$ with

* the vertex set $\mathcal{V}_{M_\Gamma^*(\Omega)} := \sigma_0(M_\Gamma)$,

* the elements $\mathbf{K}_{M_\Gamma^*(\Omega)} := \{(F, K) \in M_\Gamma \times M_\Omega \mid F \in \Gamma(K)\}$,

* the realization $\mathcal{K}_{M_\Gamma^*(\Omega)}$ defined by

$$\mathcal{K}_{M_\Gamma^*(\Omega)}((F, K)) := F$$

* the adjacency graph defined by

$$\forall \mathbf{f}, \mathbf{f}' \in \mathbf{K}_{M_\Gamma^*(\Omega)}, \quad \mathbf{f} \underset{M_\Gamma^*(\Omega)}{\overset{S}{\rightleftharpoons}} \mathbf{f}' \iff \mathbf{f} \underset{\partial M_\Gamma^*(\Omega\setminus\Gamma)}{\overset{S}{\rightleftharpoons}} \mathbf{f}',$$

where $M_{\Omega\setminus\Gamma}^*$ is the fractured mesh defined in Definition 4.1.

The gen-mesh $M_\Gamma^*(\Omega)$ is essentially a “submesh” of $\partial M_{\Omega\setminus\Gamma}^*$; it is obtained by discarding the component of $M_{\Omega\setminus\Gamma}^*$ corresponding to $\partial\Omega$. The assumption that $M_\Gamma \cap \partial\Omega = \emptyset$ ensures that this separation can be done properly, i.e. that the definition above respects the axioms of Definition 2.1. For example, if $M_{\Omega\setminus\Gamma}^*$ is equal to the generalized mesh $M_\Gamma^*$ of Example 2.3, then $M_\Gamma^*(\Omega)$ is equal to the generalized mesh $M_\Gamma^2$ of Example 2.4. The idea is also represented schematically in Fig. 9. Compared to $M_\Gamma$, the gen-mesh $M_\Gamma^*(\Omega)$ has twice as many elements. The vertices at which $M_\Gamma$ is locally a manifold give rise to two distinct generalized vertices of $M_\Gamma^*(\Omega)$, one for each side of $M_\Gamma$.

**Definition 4.2** suggests a simple, purely combinatorial procedure to compute $M_\Gamma^*(\Omega)$, which exploits the external mesh $M_\Omega$. As mentioned above, there is an alternative, intrinsic algorithm. To present it, we need to review some properties of oriented angles in $\mathbb{R}^3$.

### 4.3. Oriented angles in $\mathbb{R}^3$

Let $T_1$ and $T_2$ be two triangles in $\mathbb{R}^3$, sharing an edge. Let us denote their vertices by $\{A, B, C\}$ and $\{B, C, D\}$, respectively. We define the geometric angle $\Theta(T_1, T_2) \in [0, \pi)$ by

$$\cos \Theta(T_1, T_2) = \frac{\overline{OA'} \cdot \overline{OD'}}{\|\overline{OA'}\| \|\overline{OD'}\|}, \qquad (22)$$

$C'$ (resp. $D'$) is the orthogonal projections of $C$ (resp. $D$) on the plane perpendicular to $\overline{BC}$, through the origin $O$, i.e.

$$\overline{OA'} = \overline{OA} - (\overline{OA} \cdot \mathbf{u})\mathbf{u}, \quad \overline{OD'} = \overline{OD} - (\overline{OD} \cdot \mathbf{u})\mathbf{u}, \quad \mathbf{u} := \frac{\overline{BC}}{\|\overline{BC}\|}.$$

Given an orientation $[T_1]$ of $T_1$, we define the oriented angle $\angle([T_1], T_2) \in (0, 2\pi)$ by

$$\angle([T_1], T_2) = \begin{cases} \Theta(T_1, T_2) & \text{if } \overline{AD} \cdot n_{T_1} > 0, \\ 2\pi - \Theta(T_1, T_2) & \text{otherwise,} \end{cases} \qquad (23)$$

where $n_{T_1}$ is the unit normal vector to $T_1$ fixed by its orientation according to Eq. (4) (see Fig. 10). One has

$$\angle([T_1], T_2) = 2\pi - \angle(-[T_1], T_2). \qquad (24)$$

In addition, every oriented triangle $[T]$ satisfies $\angle([T], T) = 2\pi$.

Let $E_1, E_2$ be two edges in $\mathbb{R}^2$ sharing exactly one vertex. Let $[E_1] = [A, B]$ be an orientation of $E_1$ and let $C$ be the vertex of $E_2$ not shared by $E_1$. We define $\angle([E_1], E_2)$ as the counter-clockwise measure in $(0, 2\pi)$ of the angle from $\overline{AB}$ to $\overline{AC}$ around $A$. We furthermore define $\angle([E_1], E_1) := 2\pi$. With this definition, Eq. (24) also holds for oriented angles between edges in $\mathbb{R}^2$.

**Lemma 4.3.** If $[T_1]$ and $[T_2]$ are consistently oriented triangles in $\mathbb{R}^3$, then $\angle([T_1], T_2) = \angle([T_2], T_1)$.

The same result holds for consistently oriented edges in $\mathbb{R}^2$.

**Proof.** Using the rule (24) above, we can assume without loss of generality that $T_1 = [A, B, C]$ and $T_2 = [C, B, D]$. The corresponding
<figure><img src="image_11.png" /><figcaption>Fig. 9. Schematic representation of the extrinsic inflation procedure. Starting from a possibly non-regular mesh $M_F$ (left panel), form the fractured mesh $M_{\Omega\setminus F}^*$ using the exterior regular mesh $M_{\Omega}$ (middle), compute its generalized boundary and return the “submesh” obtained by only keeping components corresponding to $M_F$ (right). The blue dots on the left (resp. right) figure represent the vertices (resp. generalized vertices) of $M_F$ (resp. of $M_F^*(\Omega)$). As in Fig. 8, a gap has been introduced in the center of the cross shape only for visualization purposes. In reality, the four central blue dots share a common location. In the middle figure, only a subset of the elements of $M_{\Omega}$ is represented (gray triangles), the exterior boundary $\partial\Omega$ is not displayed.</figcaption></figure>

<figure><img src="image_12.png" /><figcaption>Fig. 10. The triangles $[T] = [A, B, C]$ and $[T'] = [B, D, C]$ are consistently oriented. The oriented angle $\angle([T], T')$ is drawn in red.</figcaption></figure>

normal vector are given by

$$n_1 = \frac{\overrightarrow{AB} \times \overrightarrow{AC}}{\|\overrightarrow{AB} \times \overrightarrow{AC}\|}, \quad n_2 = \frac{\overrightarrow{BD} \times \overrightarrow{BC}}{\|\overrightarrow{BD} \times \overrightarrow{BC}\|}.$$

By the properties of cross product, one has

$$\overrightarrow{AD} \cdot (\overrightarrow{AB} \times \overrightarrow{AC}) = \overrightarrow{DA} \cdot (\overrightarrow{BD} \times \overrightarrow{BC}).$$

We deduce that $\overrightarrow{AD} \cdot n_1$ and $\overrightarrow{DA} \cdot n_2$ have the same sign, and thus $\angle([T_1], T_2) = \angle([T_2], T_1)$. $\square$

We conclude our discussion of oriented angles by stating the following elementary property. The proof is omitted for the sake of conciseness.

**Lemma 4.4.** Let $\mathcal{M}$ be a regular tetrahedral mesh, and let $[K]$ be a naturally oriented element of $\mathcal{M}$. Suppose that $T_1, T_2$ are distinct triangular faces of $K$, sharing an edge $E$, and write $[T_1]$ for the orientation of $T_1$ induced by $[K]$. Then it holds that

$$\forall T' \in \mathcal{F}(\mathcal{M}) \text{ s.t. } E \in \mathcal{F}(T'), \angle([T_1], T') \le \angle([T_1], T_2) \Rightarrow T' = T_2.$$

In words, $T_2$ is the unique minimizer of $\angle([T_1], \cdot)$ among triangles $T'$ in $\mathcal{F}(\mathcal{M})$ incident to $E$.

### 4.4. Intrinsic mesh inflation

In what follows, we consider an $(n-1)$-dimensional mesh $M_F$ with vertices in $\mathbb{R}^n$, where $n = 2$ or 3. Let

$$\mathcal{F}_F := \{\text{oriented simplex of the form } [F] \text{ with } F \in \mathcal{M}_F\}. \quad (25)$$

Every element $F$ of $M_F$ appears twice in $\mathcal{F}_F$, once with each of the two opposite orientations of $F$.

Given $[F] \in \mathcal{F}_F$, and $S \in \mathcal{F}(F)$, let $F'$ be the minimizer, among elements $F' \in \mathcal{M}_F$ incident to $S$ (including $F$ itself), of the quantity $\angle([F], F')$. Then define

$$\tilde{\mathcal{N}}_b([F], S) := [F']$$

where $[F']$ is the orientation of $F'$ consistent with $[F]$.

**Definition 4.5 (Intrinsic Virtual Inflation).** The intrinsic virtual inflation of $M_F$ is the generalized mesh $M_F^*$ defined by

* the vertex set $\mathcal{V}_{M_F^*} := \sigma_0(\mathcal{M}_F)$

* the elements $\mathbf{K}_{M_F^*} := \mathcal{F}_F$,

* the realization $\mathcal{K}_{M_F^*}$ defined by

$$\forall [F] \in \mathcal{F}_F, \quad \mathcal{K}_{M_F^*}([F]) := F,$$

* the adjacency graph defined by

$$[F] \stackrel{S}{\rightleftharpoons} [F'] \iff [F'] = \tilde{\mathcal{N}}_b([F], S)$$

By Lemma 4.3, and since an oriented triangle is never consistently oriented with itself, this is a well-defined generalized mesh.

**Remark 4.6.** Definition 4.5 can be converted straightforwardly into an algorithm. On the input of a (standard) mesh $M_F$, it returns an instance of generalized mesh representing $M_F^*$. We refer to our implementation [28] for details.

**Theorem 4.7.** Let $M_{\Omega}$ be a regular $n$-dimensional mesh in $\mathbb{R}^n$, with $n = 2$ or 3, and let

$$M_F \subset \mathcal{F}(M_{\Omega}) \setminus \partial M_{\Omega}.$$

Let $M_F^*(\Omega)$ be the extrinsic inflation of $M_F$ via $M_{\Omega}$ and $M_F^*$ the intrinsic inflation of $M_F$, cf. Definitions 4.2 and 4.5 respectively. Then, $M_F^*(\Omega)$ and $M_F^*$ are equal up to a relabeling.

**Proof.** To fix ideas, we write the proof for the case $n = 3$ (the case $n = 2$ is analogous). Recall that the elements of $M_F^*(\Omega)$ are the pairs $(F, K)$ with $K \in \mathcal{M}_{\Omega}$ and $F \in \mathcal{M}_F \cap \mathcal{F}(K)$. Given such a pair, we define

$$\varphi((F, K)) := [F]_{|[K]}$$

where $[K]$ is the natural orientation of $K$ (recall the notation from Eq. (2)). Since $M_F$ is disjoint from the boundary of $M_{\Omega}$, by Lemma 1.2 this defines a bijection

$$\varphi : \mathbf{K}_{M_F^*(\Omega)} \to \mathbf{K}_{M_F^*},$$

with, obviously, $\mathcal{K}_1 \circ \varphi = \mathcal{K}_2$, where $\mathcal{K}_1$ and $\mathcal{K}_2$ are the realizations of $M_F^*$ and $M_F^*(\Omega)$, respectively.
It remains to show that the adjacency graphs of $M_r^*$ and $M_r^*(\Omega)$ are compatible with this bijection. This amounts to proving that, for $(F, K) \in K_{M_r^*}(\Omega)$ and $S \in \mathcal{F}(F)$, there holds

$$ \varphi(\mathcal{N}_b((F, K), S)) = \tilde{\mathcal{N}}_b(\varphi((F, K)), S). \qquad (26) $$

Hence, pick a pair $(F, K) \in \mathcal{M}_{\Omega} \times \mathcal{M}_{\Gamma}$, with $F \in \mathcal{F}(K)$, let $[F] = \varphi((F, K))$ and let $S \in \mathcal{F}(F)$. Let $M_{\Omega\setminus\Gamma}^*$ be the fractured mesh defined by $\mathcal{M}_{\Omega}$ and $\mathcal{M}_{\Gamma}$ (cf Definition 4.1). By definition of $M_{\Omega\setminus\Gamma}^*$, we have

$$ \perp \xrightarrow{F} \mathcal{M}_{\Omega\setminus\Gamma}^* \xrightarrow{K}. $$

According to Lemma 3.1, we can introduce the chain

$$ \perp \xrightarrow{F} K \xrightarrow{F_1} K_2 \xrightarrow{F_2} \dots \xrightarrow{F_{Q-2}} K_{Q-1} \xrightarrow{F_{Q-1}} K_Q \xrightarrow{F_Q} \perp. \qquad (27) $$

Note that since $S \in \mathcal{F}(F_Q)$, $S \in \sigma(\mathcal{M}_\Gamma)$ and $\mathcal{M}_\Gamma \cap \partial\mathcal{M}_\Omega = \emptyset$, it must be true that $F_Q \in \mathcal{M}_\Gamma$. We rewrite $K' := K_Q$, $F' := F_Q$ so that

$$ (F', K') = \mathcal{N}_b((F, K), S). $$

From Lemma 4.4, we deduce that for each $i \in \{1, \dots, Q\}$,

$$ F_i = \arg \min \left\{ \angle([F], \tilde{F}) \tilde{F} \in \mathcal{F}(\mathcal{M}_{\Omega}) \setminus \{F_j\}_{1 \le j \le i-1} \mid \cdot \right\} $$

By definition of $M_{\Omega\setminus\Gamma}^*$, for $i \in \{1, \dots, Q-1\}$, the facet $F_i$ is not in $\mathcal{M}_\Gamma$. Hence

$$ F_Q = F' = \arg \min \left\{ \angle([F], \tilde{F}) \mid \tilde{F} \in \mathcal{M}_\Gamma \right\}. \qquad (28) $$

Finally, let

$$ [F'] := \varphi((F', K')). $$

Reasoning as in the proof of Lemma 3.7, we see that $[F]$ and $[F']$ are consistently oriented. From this property, Eq. (28) and Definition 4.5, it follows that

$$ \tilde{\mathcal{N}}_b([F], S) = [F'], $$

which proves the claim (26) and concludes the proof of the theorem. □

The following result is immediate, by the very definition of $\tilde{\mathcal{N}}_b$:

**Lemma 4.8.** Let $\mathcal{M}_\Gamma$ be a $(n-1)$-dimensional generalized mesh in $\mathbb{R}^n$, with $n=2$ or 3. Then $M_r^*$ is orientable, with a compatible orientation given by

$$ \forall [F] \in \mathcal{M}_\Gamma^*, \quad [F]_{\mathcal{M}_\Gamma^*} := [F]. $$

# 5. Finite element exterior calculus on generalized meshes

## 5.1. Whitney forms

We now fix the Euclidean space $\mathbb{R}^m$ as the ambient space. Every generalized mesh discussed below has its vertices in $\mathbb{R}^m$ and its elements are non-degenerate $n$-simplices, with $n \le m$. Recall that for an element $k$ of $\mathcal{M}^*$ attached to the simplex $K$, we write $|k| := |K|$.

In this setting, we discuss the construction of lowest-order discrete differential forms on generalized meshes, which are the simplest specimen of trial and test spaces required for Finite-Element Exterior Calculus (FEEC, see [32], see also [33] for a related work on differential forms on mixed-dimensional geometries). Those spaces of discrete differential forms are spanned by locally supported basis functions, known as Whitney forms [34].

To define Whitney forms we need some additional structure. We have to choose an orientation for every subsimplex $S \in \sigma(\mathcal{M}^*)$. One standard way to do this is to choose an arbitrary order on the finite set $\sigma_0(\mathcal{M}^*)$ and equip each $d$-simplex with the orientation corresponding to this order. Typically, this does not incur any additional cost in

the implementation, as simplices are stored using arrays, which are naturally ordered.

We also need barycentric coordinate functions on a non-degenerate $n$-simplex $K$. Given a vertex $V$ of $K$, the barycentric coordinate $\lambda_V^K : \mathbb{R}^n \to \mathbb{R}$ is the affine function defined by the equations

$$ \forall V' \in \sigma_0(K), \quad \lambda_V^K(V') = \begin{cases} 1 & \text{if } V = V', \\ 0 & \text{otherwise.} \end{cases} \qquad (29) $$

**Definition 5.1 (Whitney Form Associated to a Generalized Facet).** Consider a generalized $d$-subfacet $s \in S_d(\mathcal{M}^*)$, $s = (S, \gamma)$ with the orientation of $S$ given by the ordering $(V_1, \dots, V_{d+1})$. The associated Whitney $d$-form $\omega_s$ is a tuple of differential forms

$$ \omega_s = (\omega_s^k)_{k \in \mathcal{M}^*}. $$

For each $k \in \mathcal{M}^*$, $\omega_s^k$ is the $d$-differential form on $|k|$ defined by

$$ \omega_s^k := \begin{cases} \sum_{j=1}^{d+1} (-1)^{j+1} \lambda_{V_j}^K \wedge d\lambda_{V_1}^K \wedge \dots \wedge \widehat{d\lambda_{V_j}^K} \wedge \dots \wedge d\lambda_{V_{d+1}}^K, & \text{for } k \in \gamma, \\ 0, & \text{for } k \notin \gamma, \end{cases} \qquad (30) $$

where $K$ is the simplex attached to $k$, $d$ designates the exterior derivative, and the hat notation is used to denote a suppressed term.

It is a standard fact that this definition is correct, i.e. that the formula (30) is invariant with respect to even permutations of the chosen ordering $(V_1, \dots, V_{d+1})$. Note that for $d=0$, when $S$ is a vertex, say, $V_1$ of $k \in \gamma$, then $\omega_s^k$ agrees with the barycentric coordinate function of $|k|$ associated to the vertex $V_1$ for $k$.

Using the vector space structure of tuples of differential forms, we can consider linear combinations of the Whitney forms defined above, and we define $\Lambda^d(\mathcal{M}^*)$ as the vector space spanned by $\{\omega_s\}_{s \in S_d(\mathcal{M}^*)}$. We call its elements the Whitney $d$-forms on $\mathcal{M}^*$.

**Definition 5.2 (Trace).** Given a Whitney $d$-form $\omega = (\omega^k)_{k \in \mathcal{M}^*} \in \Lambda^d(\mathcal{M}^*)$, the trace $\text{Tr}\omega$ is the Whitney $d$-form $\nu = (\nu^f)_{f \in \partial\mathcal{M}^*} \in \Lambda^d(\partial\mathcal{M}^*)$ where, for each element $f = (F, k)$ of $\partial\mathcal{M}^*$, $\nu^f$ is given on $|F|$ by

$$ \nu^f := \text{Tr}_{|k|,|F|} \omega^k. $$

Here, $\text{Tr}_{\Omega, \Omega'} \mu$ is the trace of the differential form $\mu$ from the manifold $\Omega$ to the submanifold $\Omega' \subset \Omega$ [32, p. 16]. It is defined as the pullback

$$ \text{Tr}_{\Omega, \Omega'} \mu := i^* \mu $$

where $i$ is the inclusion $\Omega' \hookrightarrow \Omega$.

**Lemma 5.3.** The Whitney $d$-forms satisfy the following patch condition: if $k \xrightarrow{M^*} k'$, then

$$ \forall \omega \in \Lambda^d(\mathcal{M}^*), \quad \text{Tr}_{|k|,|F|} \omega^k = \text{Tr}_{|k'|,|F|} \omega^{k'}. $$

**Proof.** By linearity, it suffices to check that the patch condition is satisfied by $\omega_s$ for each $s \in S_d(\mathcal{M}^*)$. Hence let $s = (S, \gamma)$, with the orientation defined by the ordering $(V_1, \dots, V_{d+1})$. We first remark that if $K$ is the simplex attached to $k$, and if $S \in \sigma(K)$ does not contain $V_j$, the function $\lambda_{V_j}^K$ is identically 0 on $|S|$. Hence, if $F$ is a facet of $k$ not containing $S$, then $\omega_s^k$ vanishes on $|F|$. Consequently, if $k$ and $k'$ are adjacent through such a facet $F$, the patch condition is immediately verified. On the other hand, if $F$ does contain $S$, then it follows that $k$ and $k'$ are adjacent through $S$, so there are two cases: either $k \notin \gamma$ and $k' \notin \gamma$, either $k \in \gamma$ and $k' \in \gamma$. The patch condition is obvious in the former case since $\omega_s$ then vanishes on both $k$ and $k'$. Finally the patch condition in the latter case follows from
<figure><img src="image_13.png" /><figcaption>Fig. 11. Example of a point contact.</figcaption></figure>

1. the property that if $K$ is an $n$-simplex and $F$ one of its facets, then

$$ \forall V \in \sigma_0(F), \quad \lambda_V^F = \mathrm{Tr}_{|K|,|F|} \lambda_V^K, \qquad (31) $$

2. the commutation of pullbacks with wedge products and exterior derivative. $\square$

**Remark 5.4.** In particular, if $M_{\Omega\setminus\Gamma}^*$ is a fractured mesh of $\Omega \setminus \Gamma$, in the notation of Section 4, then one can deduce from Lemma 5.3 that

$$ \Lambda^0(M_{\Omega\setminus\Gamma}^*) \cong \{u \in W^1(\Omega \setminus \Gamma) \mid u|_K \text{ is affine for every } K \in \mathcal{M}_{\Omega}\}, $$

where the ≈ sign denotes an explicit, natural bijection and $W^1(U)$ is the Sobolev space of square-integrable functions in the open set $U$ with a square-integrable weak derivative, see e.g. [35, p. 73].

## 5.2. Surjectivity of the trace operator

In this section, we investigate the surjectivity of $\mathrm{Tr} : \Lambda^d(M^*) \to \Lambda^d(\partial M^*)$. As mentioned previously, this is a key property needed for the boundary element applications [21].

A triangular mesh $\mathcal{M}$ is edge-connected if for any $T, T' \in \mathcal{M}$, one can link $T$ and $T'$ by a chain of triangles in $\mathcal{M}$, such that two consecutive triangles have a common edge. A triangular mesh $\mathcal{M}$ has a point contact if there exists a vertex $S \in \mathcal{M}_\Gamma$ such that $\mathrm{st}(S, \mathcal{M})$ is not edge-connected. An example of point-contact is shown in Fig. 11. The main result of this section is the following.

**Theorem 5.5 (Surjectivity of the Trace Operator).** Let $\mathcal{M}_\Omega$ be a regular tetrahedral mesh in $\mathbb{R}^3$, and let

$$ \mathcal{M}_\Gamma \subset F(\mathcal{M}_\Omega) \setminus \partial \mathcal{M}_\Omega. $$

Let $M_{\Omega\setminus\Gamma}^*$ be the fractured mesh defined in Definition 4.1. Then, for $d \in \{1, 2\}$,

$$ \mathrm{Tr} (\Lambda^d(M_{\Omega\setminus\Gamma}^*)) = \Lambda^d(\partial M_{\Omega\setminus\Gamma}^*). $$

For $d = 0$, the previous equality holds if and only if $\mathcal{M}_\Gamma$ has no point contacts.

**Remark 5.6.** In dimension 2, i.e. if $\mathcal{M}_\Omega$ is a regular triangular mesh in $\mathbb{R}^2$, then the results below show that the surjectivity holds without any conditions on $\mathcal{M}_\Gamma$.

To prove Theorem 5.5, we start by deriving a local criterion. In what follows, $\mathcal{M}^*$ is a $n$-dimensional gen-mesh and $d \in \{0, ..., n-1\}$. We consider a generalized facet $s = (S, \gamma)$ attached to a boundary subsimplex $S \in \sigma_d(\partial \mathcal{M}^*)$. The projected star of $s$ is defined by

$$ \mathrm{st}_\partial s := \{ \mathbf{f} = (F, \mathbf{k}) \in \partial \mathcal{M}^* \mid S \in \sigma(F) \text{ and } \mathbf{k} \in \gamma \}. $$

We say that $\mathrm{st}_\partial s$ is connected through $S$ if, for any two elements $\mathbf{f}, \mathbf{f}' \in \mathrm{st}_\partial s$, there exists a chain

$$ \begin{gathered} \mathbf{f} = \mathbf{f}_1 \stackrel{S}{\underset{\partial \mathcal{M}^*}{\rightleftharpoons}} \mathbf{f}_2 \stackrel{S}{\underset{\partial \mathcal{M}^*}{\rightleftharpoons}} \dots \stackrel{S}{\underset{\partial \mathcal{M}^*}{\rightleftharpoons}} \mathbf{f}_{Q-1} \stackrel{S}{\underset{\partial \mathcal{M}^*}{\rightleftharpoons}} \mathbf{f}_Q = \mathbf{f}'. \\ \text{with } \mathbf{f}_1, \dots, \mathbf{f}_Q \in \mathrm{st}_\partial s. \end{gathered} $$

**Lemma 5.7 (Local Criterion).** Suppose that the projected star of $s$ is connected through $S$. Then, there exists a generalized $d$-subfacet $t \in S_d(\partial \mathcal{M}^*)$ given by

$$ t = (S, \mathrm{st}_\partial s). $$

Moreover, the Whitney forms $\omega_s \in \Lambda^d(M^*)$ and $\omega_t \in \Lambda^d(\partial M^*)$ are related by

$$ \omega_t = \pm \mathrm{Tr} \omega_s. $$

A positive sign occurs if and only if the orientations of the $d$-subsimplex $S$ in $\mathcal{M}^*$ and $\partial \mathcal{M}^*$ agree.

**Proof.** Pick an element $\mathbf{f}_0 = (F_0, \mathbf{k}_0) \in \mathrm{st}_\partial s$, and let $t = (S, \eta) \in S_d(\partial \mathcal{M}^*)$ be the unique generalized $d$-subfacet attached to $S$ such that $\mathbf{f}_0 \in \eta$. We claim that

$$ \eta = \mathrm{st}_\partial s. \qquad (32) $$

Indeed, if $\mathbf{f}'$ is another element of $\mathrm{st}_\partial s$, then by the assumption of the lemma, $\mathbf{f}_0$ and $\mathbf{f}'$ are in the same component of the graph $G_{\partial \mathcal{M}^*}(S)$, so $\mathbf{f}' \in \eta$. Hence $\mathrm{st}_\partial s \subset \eta$.

Conversely, if $\mathbf{f}' = (F', \mathbf{k}') \in \eta$, then $\mathbf{f}'$ is in the same connected component as $\mathbf{f}$ in the graph $G_{\partial \mathcal{M}^*}(S)$, which by definition of adjacency of the boundary, implies that $\mathbf{k}'$ is in the same component as $\mathbf{k}_0$ in the graph $G_{\mathcal{M}^*}(S)$. Hence $\mathbf{k}' \in \gamma$, so $\mathbf{f}' \in \mathrm{st}_\partial s$. Therefore, $\eta \subset \mathrm{st}_\partial s$, which proves (32).

Let $\mu = \mathrm{Tr} \omega_s$. For each $\mathbf{f} = (F, \mathbf{k}) \in \partial \mathcal{M}^*$, we compare the expressions of $\mu^t$ and $\omega_t^t$. On the one hand, if $\mathbf{f} \in \mathrm{st}_\partial s$, then, writing $S = (V_1, ..., V_{d+1})$ (with an order defining the orientation of $S$ in $\mathcal{M}^*$), and denoting by $K$ the simplex attached to $\mathbf{k}$,

$$ \begin{aligned} \mu^t &= \mathrm{Tr}_{|K|,|F|} \left( \sum_{j=1}^{d+1} (-1)^{j+1} \lambda_{V_j}^K \wedge d\lambda_{V_1}^K \wedge \dots \wedge d\widehat{\lambda_{V_j}^K} \wedge \dots \wedge d\lambda_{V_{d+1}}^K \right) \\ &= \sum_{j=1}^{d+1} (-1)^{j+1} \lambda_{V_j}^F \wedge d\lambda_{V_1}^F \wedge \dots \wedge d\widehat{\lambda_{V_j}^F} \wedge \dots \wedge d\lambda_{V_{d+1}}^F \end{aligned} $$

again by property (31). Clearly, this is equal to $\omega_t^t$ on $|F|$, up to a sign (the same sign will occur if the orientation of $S$ in $\mathcal{M}^*$ agrees with the one in $\partial \mathcal{M}^*$).

On the other hand, if $\mathbf{f} \notin \mathrm{st}_\partial s$, then $\omega_t^t$ vanishes on $|F|$, so it remains to check that the same holds for $\mu^t$. By definition of $\mathrm{st}_\partial s$, either $\mathbf{k} \notin \gamma$, or $S \notin \sigma(F)$. In the former case, we have $\mu^t = 0$ since $\omega_s^k = 0$. In the latter, there is a vertex $V$ of $S$ not in $F$, so $\lambda_V^K = 0$ identically on $|F|$. This confirms that $\mu^t$ vanishes on $|F|$, and concludes the proof of the lemma. $\square$

**Corollary 5.8.** Suppose that for each $d$-subsimplex $S \in \sigma_d(\partial \mathcal{M}^*)$ and for each generalized $d$-subfacet $s \in S_d(\mathcal{M}^*)$ attached to $S$, $\mathrm{st}_\partial s$ is connected through $S$. Then, there holds

$$ \mathrm{Tr} (\Lambda^d(\mathcal{M}^*)) = \Lambda^d(\partial \mathcal{M}^*). $$

**Proof.** Let $t = (S, \eta) \in S_d(\partial \mathcal{M}^*)$, pick $\mathbf{f}_0 = (F_0, \mathbf{k}_0) \in \eta$, and let $s = (S, \gamma) \in S_d(\mathcal{M}^*)$ be the generalized $d$-subfacet of $\mathcal{M}^*$ defined by the condition that $\mathbf{k}_0 \in \gamma$. We have $\mathbf{f}_0 \in \mathrm{st}_\partial s$, so, following the beginning of the proof of Lemma 5.7, in fact $t = (S, \mathrm{st}_\partial s)$. Hence, by Lemma 5.7, there holds

$$ \omega_t = \pm \mathrm{Tr} \omega_s. $$
Since this holds for any $t \in S_d(\partial M^*)$, the conclusion follows immediately. □

It is not difficult to check that the condition of Lemma 5.7 is always satisfied for $d \ge n - 2$, therefore:

**Corollary 5.9.** Let $M^*$ be a $n$-dimensional gen-mesh with $n \ge 2$. Then there holds

$$ \mathrm{Tr}(\Lambda^{n-1}(M^*)) = \Lambda^{n-1}(\partial M^*), \quad \mathrm{Tr}(\Lambda^{n-2}(M^*)) = \Lambda^{n-2}(\partial M^*). $$

Let $M_\Omega$ be a regular tetrahedral mesh in $\mathbb{R}^3$. As in Section 4, let $M_\Gamma \subset \mathcal{F}(M_\Omega) \setminus \partial M_\Omega$ and let $M_{\Omega \setminus \Gamma}^*$ be the fractured mesh defined in Definition 4.1. By Corollary 5.9, $\mathrm{Tr} : \Lambda^d(M_{\Omega \setminus \Gamma}^*) \to \Lambda^d(\partial M_{\Omega \setminus \Gamma}^*)$ is surjective for $d = 1, 2$. To establish Theorem 5.5, it remains to show the following result. The proof is deferred to Appendix.

**Lemma 5.10.** The following conditions are equivalent:

(i) For each vertex $S$ of $M_\Gamma$, $\mathrm{st}(S, M_\Gamma)$ is edge-connected.

(ii) $\mathrm{Tr}(\Lambda^0(M_{\Omega \setminus \Gamma}^*)) = \Lambda^0(\partial M_{\Omega \setminus \Gamma}^*)$.

**Remark 5.11.** The issue, when there is a point contact at $S$, is that the star of $S$ has several distinct edge-connected components. The Whitney 0-forms on the boundary can be defined independently on each of those components, while the Whitney forms in the volume must satisfy a compatibility condition at $S$. This is why the surjectivity fails in this case.

### 5.3. Finite element assembly

Given an $n$-dimensional generalized mesh $M^*$ and $0 \le d \le n$, we discuss the computation of the Galerkin matrix associated to a bilinear form

$$ a : \Lambda^d(M^*) \times \Lambda^d(M^*) \to \mathbb{R}. $$

We assume that $a$ has the form

$$ a(\omega, \omega') = \sum_{k \in M^*} a_k(\omega_k, \omega_k'), $$

where for each $k \in M^*$, $a_k$ is a bilinear form on the space of $d$-differential forms on $|k|$. The Galerkin matrix $A$ of $a$ is defined by

$$ A_{s,t} = a(\omega_s, \omega_t), \quad s, t \in S_d(M^*), $$

where $\{\omega_s\}_{s \in S_d(M^*)}$ is the Whitney basis functions defined in the previous section. We use indexing by generalized $d$-subfacets to avoid the heavier notation that would result from introducing orderings.

As in standard finite element computations, one first needs a method to compute so-called *local matrices*, involving the local Whitney forms defined on each element. For each $d$-subsimplex $S$ of an element $k \in M^*$, there is a unique generalized $d$-subfacet $s$ of the form

$$ s = (S, \gamma) \text{ with } k \in \gamma. $$

We write $s =: J(k, S)$. In the implementation, $J$ corresponds to a “local-to-global” index mapping. One can then form the local $\binom{n}{d} \times \binom{n}{d}$ matrices $A_{loc}(k)$, defined by

$$ [A_{loc}(k)]_{S,S'} := a(\omega_s^k, \omega_s^k) \quad S, S' \in \sigma_d(k), s = J(k, S), s' = J(k, S'). $$

To assemble the global matrix $A$ from the local matrices $A_{loc}$, one can then use Algorithm 3. In the context of boundary elements, the bilinear form $a$ rather takes the form

$$ a(\omega, \omega') = \sum_{k \in K_{M^*}} \sum_{k' \in K_{M^*}} a_{k,k'}(\omega_k, \omega_{k'}'). $$

This case can be tackled very similarly, using two nested loops over elements, instead of just one, in Algorithm 3.

<figure><img src="image_14.png" /><figcaption>Fig. 12. Generalized mesh representing a disk with cut radius. The adjacency graph is represented in green, with the same conventions as in Figs. 3 and 6.</figcaption></figure>

## 6. Model application: Laplace eigenvalue problem in a disk with cut radius

To conclude this paper, we present an application of generalized meshes to the resolution of the Laplace equation in a disk with cut radius, i.e. the domain

$$ \Omega = B(0, 1) \setminus ([0, 1) \times \{0\}) \subset \mathbb{R}^2. $$

Generalized meshes are perfectly suited to represent such a geometry, see e.g. Fig. 12. To create meshes like this one, we have implemented a function

$$ M_{\Omega \setminus \Gamma}^* = \mathrm{fracturedMesh}(M_\Omega, M_\Gamma) $$

which takes as an input a regular $n$-dimensional mesh $M_\Omega$, a $(n-1)$-dimensional mesh $M_\Gamma$ such that $M_\Gamma \subset \mathcal{F}(M_\Gamma)$, and returns the fractured mesh $M_{\Omega \setminus \Gamma}^*$ as defined in Section 4. Then, the Galerkin matrices in the basis $\{\omega_v\}_{v \in S_0(M_{\Omega \setminus \Gamma}^*)}$ of the operators needed, (i.e. the mass matrix, for the identity operator, and the stiffness matrix, for the Laplace operator) can be assembled by using Algorithm 3.<fnref n="4" />

If initially, the mesh $M_\Omega$ does not resolve the fracture, in the sense that the condition $M_\Gamma \subset \mathcal{F}(M_\Gamma)$ is not fulfilled, then one may remesh the domain $M_\Omega$ using constrained meshing algorithms, see e.g. [36].

We consider the following eigenvalue problem:

$$ \begin{cases} \Delta u = \lambda u & \text{in } \Omega, \\ \partial_n u = 0 & \text{on } \partial \Omega, \end{cases} \quad (33) $$

whose solutions can be found analytically by separation of variables; they take the form

$$ u_{n,p}(r, \theta) = f_p(r)g_n(\theta) $$

with

$$ g_n(\theta) = \cos(n\theta/2), \quad n \in \mathbb{N}, \quad (34) $$

$$ f_p(r) = J_{\frac{n}{2}}(\rho_{n,p} r), \quad p \in \mathbb{N}, \quad (35) $$

<footnote n="4">⁴ For our Matlab implementation, we have rather adopted a global assembly algorithm as in [29], in which the nested loops can be avoided to increase the performance.</footnote>
**Algorithm 3 Assembly($M^*$, $d$, $A_{loc}$)**

**INPUTS:** Generalized mesh $M^*$, subsimplex dimension $d$, local matrices $A_{loc}$

**RETURNS:** The (sparse) matrix A.

$N_d \leftarrow \text{Card}(S_d(M^*))$ % Number of generalized d-subfacets

A $\leftarrow \text{zeros}(N_d, N_d)$ % Initialize matrix

FOR $k \in K_{M^*}$

A $\leftarrow A_{loc}(k)$ % Compute local matrix

FOR $S, S' \in \sigma_d(k)$

s $\leftarrow J(k, S)$ % find indices in global matrix

t $\leftarrow J(k, S')$

A$_{s,t}$ $\leftarrow$ A$_{s,t}$ + A(S, S') % add local contribution to the global matrix

END FOR

END FOR

RETURN A

<caption>**Table 1**</caption>

Numerical approximations of the first eigenvalues of the Neumann eigenvalue problem on the disk with cut radius as computed by the finite element method, compared to theoretical value. We report the relative error $|\lambda_{i,h} - \lambda_i| / \lambda_i$ where $\lambda_{i,h}$ is the numerical approximation returned by the finite element method and $\lambda_i$ is the corresponding reference value. The parameter $h$ is the diameter of the largest element in the mesh. The first eigenvalue, $\lambda_0 = 0$, is ignored.

<table><thead><tr><th></th><th>$h \approx 0.7$</th><th>$h \approx 0.35$</th><th>$h \approx 0.18$</th><th>$h \approx 0.09$</th></tr></thead><tbody><tr><td>$|\lambda_{1,h} - \lambda_1| / \lambda_1$</td><td>0.15152</td><td>0.062438</td><td>0.028606</td><td>0.014625</td></tr><tr><td>$|\lambda_{2,h} - \lambda_2| / \lambda_2$</td><td>0.046833</td><td>0.01163</td><td>0.0028283</td><td>0.00083173</td></tr><tr><td>$|\lambda_{3,h} - \lambda_3| / \lambda_3$</td><td>0.054236</td><td>0.015154</td><td>0.0039806</td><td>0.0011769</td></tr><tr><td>$|\lambda_{4,h} - \lambda_4| / \lambda_4$</td><td>0.076291</td><td>0.021513</td><td>0.0057585</td><td>0.0016574</td></tr><tr><td>$|\lambda_{5,h} - \lambda_5| / \lambda_5$</td><td>0.094939</td><td>0.028421</td><td>0.007837</td><td>0.002246</td></tr></tbody></table>

where $\rho_{n,p}$ is the $p$th zero of $J'_{n/2}$, and $J_\alpha$ is the Bessel function of the first kind and order $\alpha$. The associated eigenvalue is $\lambda_{n,p} = \rho_{n,p}^2$.

To test our implementation, we compute numerical approximations of those eigenvalues using a variational formulation and the finite element method on a generalized mesh like the one of Fig. 12. We do not dwell on the details of the method, but refer to our Matlab implementation [28]. The numerical values of the first $\lambda_{n,p}$ that we obtain for various mesh sizes are compared against high-precision reference values derived from Eqs. (34)–(35). The numerical values indeed approach the reference values, see Table 1. The fact that the first non-constant eigenfunction,

$$u_{1,1}(r, \theta) = J_{1/2}(\sqrt{\lambda_{1,1}r}) \cos(\theta/2)$$

behaves like $O(\sqrt{r})$ near the origin, explains the slow rate of convergence for the corresponding eigenvalue, and is a manifestation of a well-known feature in the field of fracture physics (see e.g. [37, Chap.3]), the so-called “crack-tip singularity”.

One can of course tackle more complex geometries and PDEs, use vectorial elements and work in three dimensions. Here we have restricted our attention to the simplest model problem for the sake of clarity.

**Declaration of competing interest**

The authors declare that they have no known competing financial interests or personal relationships that could have appeared to influence the work reported in this paper.

**Data availability**

No data was used for the research described in the article.

**Acknowledgments**

MA gratefully acknowledges that the key idea in the above proof, namely, to introduce the graph G shown in Fig. A.13, was found by

Maxence Novel. He also thanks Nikolas Stott for their help throughout the redaction of this article.

**Appendix. Proof of Lemma 5.10**

Following Remark 5.11, the implication (i) ⇒ (ii) is not difficult, so we only prove (ii) ⇒ (i). Let $S$ be a vertex of $\sigma_0(\partial M^*_{\Omega\setminus\Gamma})$. One has either $S \in \sigma_0(M_\Gamma)$ or $S \in \sigma_0(\partial M_\Omega)$. We restrict our attention to the first case, but the second case is similar. We shall prove that for each generalized vertex $s \in S_0(M^*)$ attached to $S$, the projected star of $s$ is connected (in the sense defined above Lemma 5.7). The conclusion then follows from Corollary 5.8.

The key idea of the proof is to consider the faces of a plane graph G (for the notion of plane graph, refer to [38, Chap. 9]) drawn on the link of $S$. More precisely, define

$$\mathcal{S} = \text{lk}(S, M_{\Omega}) := \partial(\text{st}(S, M_{\Omega})),$$

Since $M_\Omega$ is regular and $S \notin \partial M_\Omega$, $|\mathcal{S}|$ is homeomorphic to a sphere [39, Corollary 1.16]. Some edges of $\mathcal{S}$ are incident to a triangle of $M_\Gamma$: those edges define a graph G drawn on $|\mathcal{S}|$, as represented in Fig. A.13. Crucially, this graph is connected since $\text{st}(S, M_\Gamma)$ is edge-connected.

One can define a one-to-one correspondence between $\text{st}(S, \partial M^*_{\Omega\setminus\Gamma})$ – the generalized star of $S$ defined in Eq. (16) – and the set of directed edges of $G$. For this, we consider an element $f \in \text{st}(S, \partial M^*_{\Omega\setminus\Gamma})$. Let $K$ be the tetrahedron attached to $k$, $T = K \setminus S$ and $E = T \cap F$. Then $E$ is an edge of $G$, and the directed edge $e$ corresponding to $f$ is defined as the direction of $E$ such that $T$ lies on the right side of $e$. We will write $e = \psi(f)$.

To each generalized vertex $s = (S, \gamma) \in S_0(M^*_{\Omega\setminus\Gamma})$ attached to $S$, corresponds a unique face $f$ of $G$.<fnref n="5" /> Namely, if $k \in \gamma$, $K$ is the simplex attached to $K$, and $F$ is the facet of $K$ not containing $S$, then $f$ is

<footnote n="5">⁵ A face of $G$ is a connected component of $|\mathcal{S}| \setminus G$, where $G$ is considered as the union of its points and edges.</footnote>
<figure><img src="image_15.png" /><figcaption>**Fig. A.13.** Illustration of the idea of the proof of Theorem 5.5. The link of the vertex S is represented in gray, the mesh $M_r$ in orange and the graph G drawn on $lk(S, M_Ω)$ in red.</figcaption></figure>

the face of G containing the interior of $|F|$. If $f \in st_θ s$, then the edge $e = ψ(f)$ is on the boundary of $f$, and the face of G to the right of $e$ is $f$. From now on, we fix a generalized vertex $s$ attached to $S$ and let $f$ be the corresponding face of $G$.

Starting from $\mathbf{f}_0 = (\mathbf{F}_0, \mathbf{k}_0) \in st_θ s$, we define a periodic chain of elements of $st_θ s$ as follows. Let $e_0 = ψ(\mathbf{f}_0)$, and write $e_0 = (V_0, V_1)$. Next, let $\mathbf{f}_1 = \mathcal{N}_{\partial M_r^*} (\mathbf{f}_0, SV_1)$ be the neighbor of $\mathbf{f}_0$ through the edge $SV_1$. Similarly, let $e_1 = ψ(\mathbf{f}_1)$, write $e_1 = (V_1, V_2)$ and put $\mathbf{f}_2 = \mathcal{N}_{\partial M_r^*} (\mathbf{f}_1, SV_2)$. Using the fact that $\partial M_r^* \subset \Omega \setminus \Gamma$ has no boundary, this process can be repeated indefinitely and generates a periodic sequence $(\mathbf{f}_n)_{n \in \mathbb{N}}$ of elements of $st_θ s$.

Clearly, it suffices to show that every element of $st_θ s$ is visited by this sequence. Hence, we pick an arbitrary element $\mathbf{f}^* = (F^*, k^*) \in st_θ s$, and let $e^* \in \text{int} \, \partial \mathbf{f}^*$ be the directed edge corresponding to $\mathbf{f}^*$, i.e. $e^* = ψ(\mathbf{f})$.

The edges $e_n$ are in the boundary of $f$, so they define a periodic boundary walk of $f$. By the Jordan curve theorem, it holds that $e^* \in \text{int} \, \partial \mathbf{f}^*$ (the same edge as $e^*$ but with the opposite direction) must be visited by this walk.<fnref n="6" />

We claim that in fact, $e^*$ is visited. Indeed, if $\overline{e^*}$ is visited, then there exist $\mathbf{f}, \mathbf{f}' \in st_θ s$ such that $ψ(\mathbf{f}) = e^*$, $ψ(\mathbf{f}') = \overline{e^*}$. Denoting the common undirected edge by $E$, we deduce that the face $f$ lies on both sides of $E$. This means that $E$ is an acyclic edge of $G$, and in this case, the boundary walk visits $E$ exactly twice, once in each direction. Therefore, $e^*$ is also visited.

This proves that $\mathbf{f}^* = \mathbf{f}_n$ for some $n \in \mathbb{N}$, which concludes the proof. □

## References

[1] P.M. Adler, J.-F. Thovert, V.V. Mourzenenko, Fractured porous media, Oxford University Press, Oxford, 2013, p. viii+175.

[2] I. Berre, F. Doster, E. Keilegavlen, Flow in fractured porous media: a review of conceptual models and discretization approaches, Transp. Porous Media 130 (1) (2019) 215-236.

[3] E. Ahmed, J. Jaffré, J.E. Roberts, A reduced fracture model for two-phase flow with different rock types, Math. Comput. Simulation 137 (2017) 49-70.

[4] C. Alboin, J. Jaffré, J.E. Roberts, C. Serres, Modeling fractures as interfaces for flow and transport in porous media, in: Fluid Flow and Transport in Porous Media: Mathematical and Numerical Treatment (South Hadley, MA, 2001), in: Contemp. Math., vol. 295, pp. 13-24.

[5] I. Berre, W.M. Boon, B. Flemisch, A. Fumagalli, D. Gläser, E. Keilegavlen, A. Scotti, I. Stefansson, A. Tatomir, K. Brenner, et al., Verification benchmarks for single-phase flow in three-dimensional fractured porous media, Adv. Water Resour. 147 (2021) 103759.

[6] W. Celes, G.H. Paulino, R. Espinha, A compact adjacency-based topological data structure for finite element mesh representation, Internat. J. Numer. Methods Engrg. 64 (11) (2005) 1529-1556.

[7] E. Keilegavlen, B. Runar, A. Fumagalli, M. Starnoni, I. Stefansson, J. Varela, I. Berre, Porepy: an open-source software for simulation of multiphysics processes in fractured porous media, Comput. Geosci. 25 (1) (2021) 243-265.

[8] V. Martin, J. Jaffré, J.E. Roberts, Modeling fractures and barriers as interfaces for flow in porous media, SIAM J. Sci. Comput. 26 (5) (2005) 1667-1691.

[9] J. Bannister, A. Gibbs, D.P. Hewett, Acoustic scattering by impedance screens/cracks with fractal boundary: Well-posedness analysis and boundary element approximation, Math. Models Methods Appl. Sci. 32 (2) (2022) 291-319.

[10] A. Buffa, S.H. Christiansen, The electric field integral equation on Lipschitz screens: definitions and numerical approximation, Numer. Math. 94 (2) (2003) 229-267.

[11] S.N. Chandler-Wilde, D.P. Hewett, A. Moiola, J. Besson, Boundary element methods for acoustic scattering by fractal screens, Numer. Math. 147 (4) (2021) 785-837.

[12] X. Claeys, L. Giacomel, R. Hiptmair, C. Urzúa-Torres, Quotient-space boundary element methods for scattering at complex screens, BIT 61 (2021).

[13] X. Claeys, R. Hiptmair, Integral equations on multi-screens, Integral Equations Operator Theory 77 (2) (2013) 167-197.

[14] K. Cools, C. Urzúa-Torres, Preconditioners for multi-screen scattering, in: 2022 International Conference on Electromagnetics in Advanced Applications, ICEAA, IEEE, 2022, pp. 172-173.

[15] R. Hiptmair, C. Urzúa-Torres, Preconditioning the EFIE on screens, Math. Models Methods Appl. Sci. 30 (9) (2020) 1705-1726.

[16] P. Ylä-Oijala, M. Taskinen, J. Sarvas, Surface integral equation method for general composite metallic and dielectric structures with junctions, Prog. Electromagn. Res. 52 (2005) 81-108.

[17] K.J. Weiler, Topological Structures for Geometric Modeling, Rensselaer Polytechnic Institute, 1986.

[18] Y. Choi, Vertex-Based Boundary Representation of Nonmanifold Geometric Models, Carnegie Mellon University, 1989.

[19] S.H. Lee, K. Lee, Partial entity structure: a compact boundary representation for non-manifold geometric modeling, J. Comput. Inf. Sci. Eng. 1 (4) (2001) 356-365.

[20] J.R. Rossignac, M.A. O'Connor, SGC: A Dimension-Independent Model for Pointsets with Internal Structures and Incomplete Boundaries, IBM TJ Watson Research Center Yorktown Heights, 1989.

[21] M. Averseng, X. Claeys, R. Hiptmair, A domain decomposition method for the resolution of the hypersingular integral equation on a multi-screen, 2022, in preparation.

[22] A. Hatcher, Algebraic Topology, Cambridge University Press, Cambridge, 2002.

[23] J.M. Lee, Introduction to Topological Manifolds, second ed., in: Graduate Texts in Mathematics, vol. 202, Springer, New York, 2011.

[24] E. Moise, Geometric Topology in Dimensions 2 and 3, in: Graduate Texts in Mathematics, vol. 47, Springer-Verlag, New York-Heidelberg, 1977.

[25] J.L. Bryant, Piecewise linear topology, in: Handbook of Geometric Topology, North-Holland, Amsterdam, 2002, pp. 219-259.

[26] J.-D. Boissonnat, M. Yvinec, Algorithmic Geometry, Cambridge University Press, 1998.

[27] P.G. Ciarlet, The Finite Element Method for Elliptic Problems, in: Classics in Applied Mathematics, vol. 40, Society for Industrial and Applied Mathematics (SIAM), Philadelphia, PA, 2002.

[28] M. Averseng, Fracked meshes library, https://github.com/MartinAverseng/FracMeshLib.

[29] F. Alouges, M. Aussal, FEM and BEM simulations with the Gypsilab framework, SMAI J. Comput. Math. 4 (2018) 297-318.

[30] C. Geuzaine, J.-F. Remacle, Gmsh: A 3-D finite element mesh generator with built-in pre- and post-processing facilities, Internat. J. Numer. Methods Engrg. 79 (11) (2009) 1309-1331.

[31] L. De Floriani, A. Hui, Data structures for simplicial complexes: An analysis and a comparison, in: Symposium on Geometry Processing, 2005, pp. 119-128.

[32] D.N. Arnold, R.S. Falk, R. Winther, Finite element exterior calculus, homological techniques, and applications, Acta Numer. 15 (2006) 1-155.

[33] W.M. Boon, J.M. Nordbotten, J.E. Vatne, Functional analysis and exterior calculus on mixed-dimensional geometries, Ann. Mat. Pura Appl. 200 (2) (2021) 757-789.

[34] H. Whitney, Geometric Integration Theory, Princeton University Press, Princeton, N. J., 1957.

[35] W. McLean, Strongly Elliptic Systems and Boundary Integral Equations, Cambridge University Press, Cambridge, 2000.

[36] R.L. Berge, Ø.S. Klemetsdal, K.-A. Lie, Unstructured voronoi grids conforming to lower dimensional objects, Comput. Geosci. 23 (1) (2019) 169-188.

[37] M. Kuna, Finite Elements in Fracture Mechanics, second ed., in: Solid Mechanics and its Applications, vol. 201, Springer, Dordrecht, 2013, Theory— numerics—applications.

[38] J.A. Bondy, U.S. Murty, Graph Theory with Applications, Vol. 290, Macmillan London, 1976.

[39] J.F.P. Hudson, Piecewise Linear Topology, W. A. Benjamin, Inc., New York-Amsterdam, 1969.

<footnote n="6">⁶ Proving this rigorously can be tedious, but this is a well-known fact in planar graph theory, see e.g. [38, p. 140].</footnote>