FFC

Problems compiling forms with inv(tensor)*tensor

Bug #459473 reported by Harish Narayanan
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
FFC
Fix Released
Undecided
Kristian B. Ølgaard

Bug Description

Making the following trivial modification to the Poisson demo (in DOLFIN),

...
I = Identity(v.cell().d)
a = inner(inv(I)*grad(v), grad(u))*dx
L = v*f*dx - v*g*ds
...

causes ffc to fail with:

raceback (most recent call last):
  File "demo.py", line 44, in <module>
    problem = VariationalProblem(a, L, bc)
  File "pythonfoo/dolfin/variationalproblem.py", line 32, in __init__
    self.a = Form(a)
  File "pythonfoo/dolfin/form.py", line 30, in __init__
    (self._compiled_form, module, self.form_data) = jit(form, options)
  File "pythonfoo/dolfin/jit.py", line 44, in mpi_jit
    return local_jit(*args, **kwargs)
  File "pythonfoo/dolfin/jit.py", line 108, in jit
    return jit_compile(form, options)
  File "pythonfoo/ffc/jit/jit.py", line 58, in jit
    return jit_form(object, options)
  File "pythonfoo/ffc/jit/jit.py", line 91, in jit_form
    compile(form, signature, options)
  File "pythonfoo/ffc/compiler/compiler.py", line 90, in compile
    form_code = generate_form_code(form_data, representations, prefix, format.format, options)
  File "pythonfoo/ffc/compiler/compiler.py", line 177, in generate_form_code
    codes.append(code_generator.generate_integrals(representations[i], format))
  File "pythonfoo/ffc/compiler/quadrature/quadraturegenerator.py", line 73, in generate_integrals
    code.update(self.generate_cell_integrals(form_representation, format))
  File "pythonfoo/ffc/compiler/quadrature/quadraturegenerator.py", line 101, in generate_cell_integrals
    self.generate_cell_integral(form_representation, transformer, integrals, format)
  File "pythonfoo/ffc/compiler/quadrature/quadraturegenerator.py", line 161, in generate_cell_integral
    integrals, Indent, format)
  File "pythonfoo/ffc/compiler/quadrature/quadraturegenerator.py", line 342, in __generate_element_tensor
    integral_code, num_ops = transformer.generate_code(integral.integrand(), Indent, interior)
  File "pythonfoo/ffc/compiler/quadrature/quadraturetransformerbase.py", line 696, in generate_code
    loop_code = self.visit(integrand)
  File "pythonfoo/ufl/algorithms/transformations.py", line 132, in visit
    r = h(o)
  File "pythonfoo/ffc/compiler/quadrature/quadraturetransformerbase.py", line 528, in index_sum
    ops.append(self.visit(summand))
  File "pythonfoo/ufl/algorithms/transformations.py", line 128, in visit
    r = h(o, *map(self.visit, o.operands()))
  File "pythonfoo/ufl/algorithms/transformations.py", line 132, in visit
    r = h(o)
  File "pythonfoo/ffc/compiler/quadrature/quadraturetransformerbase.py", line 491, in indexed
    code = self.visit(indexed_expr)
  File "pythonfoo/ufl/algorithms/transformations.py", line 132, in visit
    r = h(o)
  File "pythonfoo/ffc/compiler/quadrature/quadraturetransformerbase.py", line 616, in component_tensor
    code = self.visit(component_expr)
  File "pythonfoo/ufl/algorithms/transformations.py", line 132, in visit
    r = h(o)
  File "pythonfoo/ffc/compiler/quadrature/quadraturetransformerbase.py", line 528, in index_sum
    ops.append(self.visit(summand))
  File "pythonfoo/ufl/algorithms/transformations.py", line 128, in visit
    r = h(o, *map(self.visit, o.operands()))
  File "pythonfoo/ufl/algorithms/transformations.py", line 132, in visit
    r = h(o)
  File "pythonfoo/ffc/compiler/quadrature/quadraturetransformerbase.py", line 491, in indexed
    code = self.visit(indexed_expr)
  File "pythonfoo/ufl/algorithms/transformations.py", line 132, in visit
    r = h(o)
  File "pythonfoo/ffc/compiler/quadrature/quadraturetransformerbase.py", line 616, in component_tensor
    code = self.visit(component_expr)
  File "pythonfoo/ufl/algorithms/transformations.py", line 128, in visit
    r = h(o, *map(self.visit, o.operands()))
  File "pythonfoo/ffc/compiler/quadrature/quadraturetransformer.py", line 210, in division
    code[key] = val + format_div + format_grouping(denominator)
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'

Revision history for this message
Kristian B. Ølgaard (k.b.oelgaard) wrote : Re: [Bug 459473] [NEW] Problems compiling forms with inv(tensor)*tensor
Download full text (8.5 KiB)

Quoting Harish Narayanan <email address hidden>:

> Public bug reported:
>
> Making the following trivial modification to the Poisson demo (in
> DOLFIN),
>
> ...
> I = Identity(v.cell().d)
> a = inner(inv(I)*grad(v), grad(u))*dx
> L = v*f*dx - v*g*ds
> ...

This should be fixed now.

Kristian

> causes ffc to fail with:
>
> raceback (most recent call last):
> File "demo.py", line 44, in <module>
> problem = VariationalProblem(a, L, bc)
> File "pythonfoo/dolfin/variationalproblem.py", line 32, in __init__
> self.a = Form(a)
> File "pythonfoo/dolfin/form.py", line 30, in __init__
> (self._compiled_form, module, self.form_data) = jit(form, options)
> File "pythonfoo/dolfin/jit.py", line 44, in mpi_jit
> return local_jit(*args, **kwargs)
> File "pythonfoo/dolfin/jit.py", line 108, in jit
> return jit_compile(form, options)
> File "pythonfoo/ffc/jit/jit.py", line 58, in jit
> return jit_form(object, options)
> File "pythonfoo/ffc/jit/jit.py", line 91, in jit_form
> compile(form, signature, options)
> File "pythonfoo/ffc/compiler/compiler.py", line 90, in compile
> form_code = generate_form_code(form_data, representations, prefix,
> format.format, options)
> File "pythonfoo/ffc/compiler/compiler.py", line 177, in generate_form_code
> codes.append(code_generator.generate_integrals(representations[i],
> format))
> File "pythonfoo/ffc/compiler/quadrature/quadraturegenerator.py", line 73,
> in generate_integrals
> code.update(self.generate_cell_integrals(form_representation, format))
> File "pythonfoo/ffc/compiler/quadrature/quadraturegenerator.py", line 101,
> in generate_cell_integrals
> self.generate_cell_integral(form_representation, transformer, integrals,
> format)
> File "pythonfoo/ffc/compiler/quadrature/quadraturegenerator.py", line 161,
> in generate_cell_integral
> integrals, Indent, format)
> File "pythonfoo/ffc/compiler/quadrature/quadraturegenerator.py", line 342,
> in __generate_element_tensor
> integral_code, num_ops = transformer.generate_code(integral.integrand(),
> Indent, interior)
> File "pythonfoo/ffc/compiler/quadrature/quadraturetransformerbase.py", line
> 696, in generate_code
> loop_code = self.visit(integrand)
> File "pythonfoo/ufl/algorithms/transformations.py", line 132, in visit
> r = h(o)
> File "pythonfoo/ffc/compiler/quadrature/quadraturetransformerbase.py", line
> 528, in index_sum
> ops.append(self.visit(summand))
> File "pythonfoo/ufl/algorithms/transformations.py", line 128, in visit
> r = h(o, *map(self.visit, o.operands()))
> File "pythonfoo/ufl/algorithms/transformations.py", line 132, in visit
> r = h(o)
> File "pythonfoo/ffc/compiler/quadrature/quadraturetransformerbase.py", line
> 491, in indexed
> code = self.visit(indexed_expr)
> File "pythonfoo/ufl/algorithms/transformations.py", line 132, in visit
> r = h(o)
> File "pythonfoo/ffc/compiler/quadrature/quadraturetransformerbase.py", line
> 616, in component_tensor
> code = self.visit(component_expr)
> File "pythonfoo/ufl/algorithms/transformations.py", line 132, in visit
> r = h(o)
> File "pythonfoo/ffc/compiler/quadrature/quad...

Read more...

Changed in ffc:
status: New → Confirmed
assignee: nobody → oelgaard (k-b-oelgaard)
Changed in ffc:
status: Confirmed → Fix Committed
Anders Logg (logg)
Changed in ffc:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.