Code that used to compile no longer does

Issue #141 resolved
Patrick Farrell created an issue

I have a (long, complicated) code that used to work, but no longer does.

It worked with FEniCS master compiled on 2017-02-14, but does not compile with FEniCS master compiled on 2017-03-09.

The traceback is

  File "/home/pfarrell/local/dolfin/fenics-dev-20170319/src/dolfin/local/lib/python2.7/site-packages/dolfin/compilemodules/jit.py", line 141, in jit
    result = ffc.jit(ufl_object, parameters=p)
  File "/home/pfarrell/local/dolfin/fenics-dev-20170319/lib/python2.7/site-packages/FFC-2017.1.0.dev0-py2.7.egg/ffc/jitcompiler.py", line 198, in jit
    module = jit_build(ufl_object, module_name, parameters)
  File "/home/pfarrell/local/dolfin/fenics-dev-20170319/lib/python2.7/site-packages/FFC-2017.1.0.dev0-py2.7.egg/ffc/jitcompiler.py", line 120, in jit_build
    generate=jit_generate)
  File "build/bdist.linux-x86_64/egg/dijitso/jit.py", line 160, in jit
    header, source, dependencies = generate(jitable, name, signature, params["generator"])
  File "/home/pfarrell/local/dolfin/fenics-dev-20170319/lib/python2.7/site-packages/FFC-2017.1.0.dev0-py2.7.egg/ffc/jitcompiler.py", line 66, in jit_generate
    prefix=module_name, parameters=parameters, jit=True)
  File "/home/pfarrell/local/dolfin/fenics-dev-20170319/lib/python2.7/site-packages/FFC-2017.1.0.dev0-py2.7.egg/ffc/compiler.py", line 141, in compile_form
    prefix, parameters, jit)
  File "/home/pfarrell/local/dolfin/fenics-dev-20170319/lib/python2.7/site-packages/FFC-2017.1.0.dev0-py2.7.egg/ffc/compiler.py", line 198, in compile_ufl_objects
    code = generate_code(oir, parameters)
  File "/home/pfarrell/local/dolfin/fenics-dev-20170319/lib/python2.7/site-packages/FFC-2017.1.0.dev0-py2.7.egg/ffc/codegeneration.py", line 86, in generate_code
    for ir in ir_integrals]
  File "/home/pfarrell/local/dolfin/fenics-dev-20170319/lib/python2.7/site-packages/FFC-2017.1.0.dev0-py2.7.egg/ffc/codegeneration.py", line 382, in _generate_integral_code
    code = r.generate_integral_code(ir, ir["prefix"], parameters)
  File "/home/pfarrell/local/dolfin/fenics-dev-20170319/lib/python2.7/site-packages/FFC-2017.1.0.dev0-py2.7.egg/ffc/uflacs/uflacsgenerator.py", line 45, in generate_integral_code
    parts = ig.generate()
  File "/home/pfarrell/local/dolfin/fenics-dev-20170319/lib/python2.7/site-packages/FFC-2017.1.0.dev0-py2.7.egg/ffc/uflacs/integralgenerator.py", line 217, in generate
    self.generate_quadrature_loop(num_points)
  File "/home/pfarrell/local/dolfin/fenics-dev-20170319/lib/python2.7/site-packages/FFC-2017.1.0.dev0-py2.7.egg/ffc/uflacs/integralgenerator.py", line 371, in generate_quadrature_loop
    self.generate_dofblock_partition(num_points)
  File "/home/pfarrell/local/dolfin/fenics-dev-20170319/lib/python2.7/site-packages/FFC-2017.1.0.dev0-py2.7.egg/ffc/uflacs/integralgenerator.py", line 651, in generate_dofblock_partition
    self.generate_block_parts(num_points, blockmap, blockdata)
  File "/home/pfarrell/local/dolfin/fenics-dev-20170319/lib/python2.7/site-packages/FFC-2017.1.0.dev0-py2.7.egg/ffc/uflacs/integralgenerator.py", line 822, in generate_block_parts
    arg_factors = self.get_arg_factors(blockdata, block_rank, num_points, iq, B_indices)
  File "/home/pfarrell/local/dolfin/fenics-dev-20170319/lib/python2.7/site-packages/FFC-2017.1.0.dev0-py2.7.egg/ffc/uflacs/integralgenerator.py", line 712, in get_arg_factors
    arg_factor = L.LiteralFloat(1.0)
NameError: global name 'L' is not defined

and inspecting the code in integralgenerator.py, this line was changed between the two dates.

The following patch fixes it:

diff --git a/ffc/uflacs/integralgenerator.py b/ffc/uflacs/integralgenerator.py
index 8a0ed0a..bfc55a2 100644
--- a/ffc/uflacs/integralgenerator.py
+++ b/ffc/uflacs/integralgenerator.py
@@ -709,6 +709,7 @@ class IntegralGenerator(object):
             assert td.ttype != "zeros"

             if td.ttype == "ones":
+                L = self.backend.language
                 arg_factor = L.LiteralFloat(1.0)
             elif td.ttype == "quadrature":  # TODO: Revisit all quadrature ttype checks
                 arg_factor = table[iq]

Comments (3)

  1. Log in to comment