apply_geometry_lowering does not always lower Jacobians

Issue #51 invalid
Miklós Homolya created an issue

Latest UFL changes therefore also break Firedrake "bendy" (non-affine support).

from firedrake import *

mesh = UnitSquareMesh(2, 2)
V = FunctionSpace(mesh, "RT", 1)

u = TrialFunction(V)
v = TestFunction(V)
L = assemble(div(u)*div(v)*dx)

gives:

Compiling form form

Compiler stage 1: Analyzing form(s)
-----------------------------------

  Geometric dimension:       2
  Number of cell subdomains: 0
  Rank:                      2
  Arguments:                 '(v_0, v_1)'
  Number of coefficients:    1
  Coefficients:              '[Coordinates]'
  Unique elements:           'RT1(?), Vector<2 x CG1(?)>'
  Unique sub elements:       'RT1(?), Vector<2 x CG1(?)>, CG1(?)'

  representation:    quadrature
  quadrature_degree: auto --> 3
  quadrature_rule:   auto --> default

Compiler stage 1 finished in 0.0809739 seconds.

Compiler stage 2: Computing intermediate representation
-------------------------------------------------------
  Computing representation of integrals
  Computing quadrature representation
  Transforming cell integral
This object should be implemented by the child class.
Traceback (most recent call last):
  File "/home/mh1714/Documents/spam.py", line 9, in <module>
    L = assemble(div(u)*div(v)*dx)
  ...
  File "/home/mh1714/git/ffc/ffc/quadrature/optimisedquadraturetransformer.py", line 349, in jacobian
    error("This object should be implemented by the child class.")
  File "<string>", line 1, in <lambda>
  File "/home/mh1714/git/ufl/ufl/log.py", line 151, in error
    raise self._exception_type(self._format_raw(*message))
Exception: This object should be implemented by the child class.

Some explanation: ufl/algorithms/compute_form_data.py:227 introduces Jacobians into the form which are not removed by ufl/algorithms/compute_form_data.py:231 and therefore cause FFC to fail.

Comments (2)

  1. Log in to comment