Blowup of assembled matrix with specifics mesh

I found a strange behavior with N1[E/F] elements. With specific mesh the norm of any assembled matrix defined on it will blowup. This happen with every form I tried to assemble and I could not trace more precisely the root of the problem.
A slight deformation to the mesh fix this however this is still problematic for convergence analysis.
Here a MWE :

from dolfin import *
import mshr as mshr

Elemf1 = FiniteElement('P-', cell='tetrahedron', degree=1, form_degree=1)

boxt = mshr.Box(mshr.dolfin.Point(-0.5,-0.00,-0.75), mshr.dolfin.Point(0.5,1.,0.25))
mesh = mshr.generate_mesh(boxt,24)

W = FunctionSpace(mesh, Elemf1)

u = TrialFunction(W)
v = TestFunction(W)
A = assemble(inner(u,v)*dx)

print(A.norm('l1')) # return 18337210665087.703

boxt2 = mshr.Box(mshr.dolfin.Point(-0.501,-0.00,-0.75), mshr.dolfin.Point(0.5,1.,0.25))
mesh2 = mshr.generate_mesh(boxt2,24)

W2 = FunctionSpace(mesh2, Elemf1)

u2 = TrialFunction(W2)
v2 = TestFunction(W2)
A2 = assemble(inner(u2,v2)*dx)

print(A2.norm('l1')) # return 1.0328415765439531

I use the version 2019.1.0 within a docker.
No error are reported (however the solving obviously fail to find any meaningful solution).

1 Like

I think this is related to this issue in FIAT: Nedelec elements were (incorrectly) defined using point evaluations leading to non-optimal space convergence. Some changes probably need to be made to ffc to get it to use the updated element.

We’re currently in the middle of replacing the Nedelec defintitons in ffcx and dolfinx. I’ll drop another message here once that’s done in case you want to start using dolfinx for this.

Thank you,
That would indeed interest me.