Evaluate patch to support selfadjacent blocks
https://github.com/HendrikBrueckler/MC3D/blob/main/extern/patches/OpenVolumeMesh.patch
One issue lies within the TopologyKernel::adjacent_halfface_in_cell(halfface, halfedge) method:
the information in halfedge is reduced to an edge. In normal cells, this is fine, because there are exactly 2 cell-interior halffaces sharing this edge. In a face-selfadjacent cell like depicted below, there are 3 cell-interior halffaces sharing each edge of the splitting quadrangle: front-facing quadrangle, back-facing quadrangle and one annular (edge-selfadjacent) halfface.
Just returning any halfface incident on the shared edge loses information here.
Possible solution: return cell-interior halfface that A) contains opposite(halfedge) and B) is not opposite(halfface) . Also, fix the call to adjacent_halfface_in_cell() within reorder_incident_halffaces()
Another issue is with the topology check of TopologyCheck::add_cell(...). Here, the topology check returns an InvalidCellHandle when a halfedge occurs within the same cell more than once (which is valid for a face-selfadjacent cell which contains both halffaces of the same face).