Code that used to compile no longer does
Issue #141
resolved
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)
-
-
- changed milestone to 2017.2
-
- changed status to resolved
Should be fixed now.
- Log in to comment
Thank's Patrick, but it's fixed in branches I'm currently working on merging.