← Back to team overview

ffc team mailing list archive

Re: Quadrature optimisation bug

 

Garth N. Wells wrote:
Marie Rognes wrote:
Garth N. Wells wrote:
There seems to be a nasty bug in the quadrature optimisation. I can
compute a result, but it's wrong. I can try to look into it in more
detail later, but I'm using a combination of BDM and P0 functions which
might be enough of a hint for someone.

Could you give a test script?



Below is a script which reproduces a bug when the quadrature
optimisation is turned on. The norm of vectors assembled with and
without using optimisation dffer.


Same problem arises with CG.

This looks like Harish's old bug where:

      un = dot(u0, n)/2.0

does not work, but

   un   = 0.5*dot(u0, n)

does.

(Just as a sidenote.)

--
Marie

Garth



from dolfin import *

mesh = UnitSquare(3, 3)
n = FacetNormal(mesh)

BDM = FunctionSpace(mesh, "Brezzi-Douglas-Marini", 1)
P0 = FunctionSpace(mesh, "Discontinuous Lagrange", 0)
mixed_space = MixedFunctionSpace([BDM, P0])

# Function spaces and functions
r  = TestFunction(P0)
U0 = Function(mixed_space)
u0, s0 = split(U0)

U0.vector()[:] = 1.0

un   = dot(u0, n)/2.0
F    = 1.0/(s0**2 + 1.0)
L = r*F*un*ds

param0 = {"representation": "quadrature", "optimize": False}
param1 = {"representation": "quadrature", "optimize": True}
print "Vec norm (no opt):   ", assemble(L,
                             form_compiler_parameters=param0).norm("l2")
print "Vec norm (with opt): ", assemble(L,
                             form_compiler_parameters=param1).norm("l2")


--
Marie




Follow ups

References