Unexpected LocalAssembler result with "ghost_mode" = "none"

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.

1 Like