Let’s consider a 3D mesh created via
mesh = create_box(MPI.COMM_WORLD, [np.array([0,0,0]), np.array([1,1,1])], [1,1,1], CellType.hexahedron, GhostMode.shared_facet) and a submesh of its surface derived via
submesh = create_submesh(mesh, 2, all_boundary_facets). I need the sign of the surface normals of the parent mesh
ufl.FacetNormal(msh) to be the same as for the derived mesh
ufl.CellNormal(submesh). However, this is apparently not guaranteed.
The workaround I currently use to compare the signs between the meshes does its job but is highly inefficient. Maybe someone can point me into a good direction? No need for parallelization in my particular application.