Subject: [Ffc] [Fwd: [Branch ~ffc-core/ffc/main] Rev 1423: merge]

From: "Garth N. Wells" <[email-masked]>
Date: Tue, 16 Feb 2010 11:26:38 +0000

This change broke my solver :(.

Hard to say what it is because I just get the Python/SWIG error

 Exception: Swig director method error. Error detected when calling
'NonlinearProblem.J'

Garth

-------- Original Message --------
Subject: [Branch ~ffc-core/ffc/main] Rev 1423: merge
Date: Mon, 15 Feb 2010 19:34:25 -0000
From: [email-masked]
Reply-To: [email-masked]
To: Garth Wells <[email-masked]>

Merge authors:
  Anders Logg (logg)
  Marie Rognes (meg-simula)
------------------------------------------------------------
revno: 1423 [merge]
committer: Kristian B. Ølgaard <[email-masked]>
branch nick: ffc
timestamp: Mon 2010-02-15 19:52:37 +0100
message:
  merge
added:
  test/regression/references/test.h
modified:
  ChangeLog
  ffc/analysis.py
  ffc/constants.py
  ffc/cpp.py
  ffc/formatting.py
  ffc/jitcompiler.py
  ffc/log.py
  ffc/tensor/monomialtransformation.py
  ffc/tensor/tensorgenerator.py
  ffc/tensor/tensoroptimization.py
  ffc/tensor/tensorreordering.py
  ffc/tensor/tensorrepresentation.py
  ffc/utils.py
  release.conf
  setup.py
  test/regression/references/Biharmonic.h
  test/regression/references/Biharmonic.out
  test/regression/references/Constant.h
  test/regression/references/Constant.out
  test/regression/references/Elasticity.h
  test/regression/references/ElementRestriction.h
  test/regression/references/EnergyNorm.h
  test/regression/references/Equation.h
  test/regression/references/FacetIntegrals.h
  test/regression/references/FacetIntegrals.out
  test/regression/references/FunctionOperators.h
  test/regression/references/Heat.h
  test/regression/references/Heat.out
  test/regression/references/HyperElasticity.h
  test/regression/references/Mass.h
  test/regression/references/Mass.out
  test/regression/references/MetaData.h
  test/regression/references/MixedMixedElement.h
  test/regression/references/MixedMixedElement.out
  test/regression/references/MixedPoisson.h
  test/regression/references/MixedPoisson.out
  test/regression/references/NavierStokes.h
  test/regression/references/NeumannProblem.h
  test/regression/references/Normals.h
  test/regression/references/Optimization.h
  test/regression/references/Optimization.out
  test/regression/references/P5tet.h
  test/regression/references/P5tri.h
  test/regression/references/Poisson.h
  test/regression/references/PoissonDG.h
  test/regression/references/PoissonDG.out
  test/regression/references/PoissonSystem.h
  test/regression/references/QuadratureElement.h
  test/regression/references/QuadratureElement.out
  test/regression/references/ReactionDiffusion.h
  test/regression/references/StabilisedStokes.h
  test/regression/references/Stokes.h
  test/regression/references/SubDomain.h
  test/regression/references/SubDomains.h
  test/regression/references/TensorWeightedPoisson.h
  test/regression/references/TensorWeightedPoisson.out
  test/regression/references/VectorLaplaceGradCurl.h
  test/regression/references/VectorPoisson.h
  test/regression/references/X_Element0.h
  test/regression/references/X_Element0.out
  test/regression/test.py
The size of the diff (15669 lines) is larger than your specified limit
of 1000 lines

--
lp:ffc
https://code.launchpad.net/~ffc-core/ffc/main

Your team FFC Core Team is subscribed to branch lp:ffc.
To unsubscribe from this branch go to
https://code.launchpad.net/~ffc-core/ffc/main/+edit-subscription.

---

From: "Garth N. Wells" <[email-masked]>
Date: Tue, 16 Feb 2010 11:37:43 +0000

> Hard to say what it is because I just get the Python/SWIG error

Here's how to reproduce the error:

   ffc -l dolfin -O -r quadrature --debug MixedPoisson.ufl

Is this not in the test cases?

Garth

> _______________________________________________
> Mailing list: https://launchpad.net/~ffc
> Post to     : [email-masked]
> Unsubscribe : https://launchpad.net/~ffc
> More help   : https://help.launchpad.net/ListHelp

---

From: "Garth N. Wells" <[email-masked]>
Date: Tue, 16 Feb 2010 12:26:50 +0000

>> This change broke my solver :(.

I managed to fix the first bug, but now with optimisation on I get:

  File
"/usr/local/lib/python2.6/dist-packages/ffc/quadrature/quadraturegenerator.py",
line 210, in _generate_element_tensor
    integral_code, ops = _generate_integral_code(points, terms, sets,
optimise_parameters)
  File
"/usr/local/lib/python2.6/dist-packages/ffc/quadrature/quadraturegenerator.py",
line 344, in _generate_integral_code
    "Linear forms must be defined using test functions only: " + repr(key))
  File "/usr/local/lib/python2.6/dist-packages/ffc/log.py", line 32, in
ffc_assert
    condition or error(*message)
  File "<string>", line 1, in <lambda>
  File "/usr/local/lib/python2.6/dist-packages/ufl/log.py", line 124, in
error
    raise UFLException(self._format_raw(*message))
ufl.log.UFLException: Linear forms must be defined using test functions
only: (1, '7', 1, 16)

Garth

---

From: Kristian Oelgaard <[email-masked]>
Date: Tue, 16 Feb 2010 13:46:28 +0100 (CET)

> ufl.log.UFLException: Linear forms must be defined using test functions

What does your form look like?

>> Is this not in the test cases?

The form is in the test cases, but unlike what we had before, forms are only compile with one set of parameters. I think this is a flaw in the design of the regression tests.

Kristian

---

From: "Garth N. Wells" <[email-masked]>
Date: Tue, 16 Feb 2010 12:48:21 +0000

> What does your form look like?

Problem is when taking the adjoint of a problem with interior facet
integrals. See form below.

Garth

BDM = FiniteElement("Brezzi-Douglas-Marini", triangle, 1)
DG  = FiniteElement("Discontinuous Lagrange", triangle, 0)
ME  = MixedElement([BDM, DG, DG])

V   = TestFunction(ME)
dU  = TrialFunction(ME)
U   = Coefficient(ME)
U0  = Coefficient(ME)

pbar = Coefficient(DG)
sbar = Coefficient(DG)
dt = Coefficient(DG)
mu_rel = Coefficient(DG)

v, q, r = split(V)
u, p, s = split(U)
u0, p0, s0 = split(U0)
s_mid = 0.5*(s0 + s)

n = triangle.n

#kinv = Expression("1.0/std::max(exp(-pow((x[1] - 0.5 -
0.1*sin(10*x[0]))/0.1, 2.0)), 0.01)")
#zero = Expression("0.0")
#Kinv = as_matrix(((kinv, zero), (zero, kinv)))

# Total mobility
def lmbdainv(s):
    return 1.0/((1.0/mu_rel)*s**2 + (1.0 - s)**2)

# Fractional flow function
def F(s):
    return s**2/(s**2 + mu_rel*(1.0 - s)**2)

L1 = inner(v, s_mid*u)*dx - div(v)*p*dx \
    + inner(v, pbar*n)*ds
L2 = q*div(u)*dx

# Upwind normal velocity: (inner(v, n) + |inner(v, n)|)/2.0
# (using velocity from previous step on facets)
un   = 0.5*(inner(u0, n) + sqrt(inner(u0, n)*inner(u0, n)))
un_h = 0.5*(inner(u0, n) - sqrt(inner(u0, n)*inner(u0, n)))
stabilisation = dt('+')*inner(jump(r), un('+')*F(s_mid)('+') -
un('-')*F(s_mid)('-'))*dS \
                                  + dt*r*un_h*sbar*ds
L3 = r*(s - s0)*dx - dt*inner(grad(r), F(s_mid)*u)*dx \
    + dt*r*F(s_mid)*un*ds + stabilisation

# Total L
L = L1 + L2 + L3

# Jacobian
a_p = derivative(L, U, dU)

a = adjoint(a_p)

> The form is in the test cases, but unlike what we had before, forms are
> only compile with one set of parameters. I think this is a flaw in the
> design of the regression tests.
> 
> Kristian
> 
>>> Garth
>>>

---

From: Kristian Oelgaard <[email-masked]>
Date: Tue, 16 Feb 2010 15:49:43 +0100 (CET)

> integrals. See form below.
Should be fixed now.

Kristian