Interface Grid

Consider a domain \(\Omega \subset \mathbb{R}^d, d \in \{2,3\},\) that includes a \((d-1)\)-dimensional interface \(\Gamma \subset \Omega\). We assume the domain is triangulated conforming to the interface \(\Gamma\).

Figure made with TikZ

A domain with a T-shaped interface and an example for a conforming triangulation.

Let us denote this triangulation by \(\mathcal{T}\) and the set of facets by \(\mathcal{F}\). Due to conforming meshing, there exists a subset of facets \(\mathcal{F}_\Gamma \subset \mathcal{F}\) that belong to the interface \(\Gamma\). Therefore, these facets in \(\mathcal{F}_\Gamma\) can also be interpreted as a triangulation of a surface. We call this surface triangulation the interface grid and denote it by \(\mathcal{T}_\Gamma\).

Dune-MMesh features a second implementation of the Dune grid interface that represents the interface triangulation \(\mathcal{T}_\Gamma\). Therefore, facets have to be marked as belonging to the interface - usually this is done when parsing a .msh file.

The interface grid can be used like any other Dune grid, as it implements all necessary functionality.

A codim-0 entity of the interface grid is represented by a CGAL cell-index pair, as used for the codim-1 entities of the wrapper implementation. This representation is made unique by taking the representation where the cell has the lower index - which is also considered to be the positive side of the facet.

All subentity objects can be generated by this representation using the right indexing of vertices. The geometry representations and element ids are made unique by ascending order of vertex ids, as it is done in the full-dimensional wrapper implementation.

For iteration, CGAL’s finite_edges_iterator or finite_facets_iterator is used, skipping all facets not belonging to the interface. Intersections and neighbor relationships are obtained by CGAL’s incident_edges or incident_facets iterators. Index sets are implemented by mappings of vertex ids.

The interface grid also supports networks. For this purpose, the intersection iterator returns all common intersections with adjacent cells. Note that this can be more than one for a single codim-1 subentity. However, the intersection’s outer normal is always independent of the neighbor entity.

Figure made with TikZ

Outer normals at junctions.

Each bulk grid intersection can be identified belonging to the interface or not. It is also possible to convert bulk intersections to interface grid elements and vice versa, as the underlying representation is the same. When converting an interface grid entity to a bulk intersection, Dune-MMesh returns the intersection as seen from the cell with the lower index.