← Back to team overview

ffc team mailing list archive

DG form not compiling with quadrature

 

Hi,

I am trying to update my code to the latest version of FFC. I have a form (attached) that previously compiled using either tensor or quadrature representation, but now only works using tensor. This is a smaller form that shows the same behavior of a much heavier form where I need to use quadrature for it to compile. I think the last version of FFC that worked was about changeset 990 or so. Can someone take a look?

in short:
ffc -l dolfin lift_Hp.form  -- works
ffc -l dolfin -r quadrature lift_Hp.form -- doesn't work, error: *** tabulate() takes exactly 3 arguments (4 given)

thanks,
Jake

elHp = VectorElement("DG", "tetrahedron", 0, 9)
DG0  = FiniteElement("DG", "tetrahedron", 0)

# Test and Trial Functions
V = TestFunction(elHp)
U = TrialFunction(elHp)

# Current Hp
Hp1 = Function(elHp)

# DG parameters
alpha = Function(DG0)
n = FacetNormal("tetrahedron")
h = MeshSize("tetrahedron")

k = Function(DG0)

pflag = Function(DG0)

def Mat(A):
    return [ [A[0], A[1], A[2]],    \
             [A[3], A[4], A[5]],    \
             [A[6], A[7], A[8]] ]

def skwMt(v):
    return [ [   0.0,  v[2], -v[1]],
             [ -v[2],   0.0,  v[0]],
             [  v[1], -v[0],   0.0] ]

def Vec(A):
    return [ A[0][0], A[0][1], A[0][2], A[1][0], A[1][1], A[1][2],
             A[2][0], A[2][1] ,A[2][2] ]

term1 = Mat(jump(Hp1))
term2 = numpy.array(skwMt(n('+')))

#print term1
#print len(term1.shape)
#print len(term2.shape)

#def matmat(A,B):
#    return 

arg1 = numpy.array(Vec(mult(term1,term2)))
arg2 = alpha('+')*k('+')/h('+')
#arg = mult(arg2,arg1)
arg = mult(k('+'),arg1)
#print arg

a = dot(V,U)*dx

#L =  pflag('+')*dot(avg(V),arg)*dS
L = - dot(avg(V),mult(pflag('+'),arg))*dS

Follow ups