Consider
from dolfin import *
mesh = UnitSquareMesh(1, 1)
mesh.init()
for c in cells(mesh):
n_cells = [f.num_entities(c.dim()) for f in facets(c)]
exterior = [f.exterior() for f in facets(c)]
info(f"cell {c.index()}, n_cells on facets {n_cells}, exterior {exterior}")
which when run with 2 processes yields:
Process 0: cell 0, n_cells on facets [1, 1, 1], exterior [True, False, True]
Process 1: cell 0, n_cells on facets [1, 1, 1], exterior [True, False, True]
dolfin::LocalAssembler
discerns exterior facets by counting the number of adjacent cells next to a facet, not the Facet::exterior
method.
Looks like a bug and should be easily fixable.