Hello,
Hopefully someone could explain what I am doing wrong, or whether this is a bug.
I am trying to do some mesh refinement and in this connection need to transfer (e.g. project) already computed results onto a new mesh. This seems not to work with RT elements at all. Consider the following snippet:
from dolfin import *
mesh = UnitSquareMesh(20, 20)
dg0_el = FiniteElement("DG", mesh.ufl_cell(), 0)
dg0_sp = FunctionSpace(mesh,dg0_el)
dg0_f = Function(dg0_sp)
rt0_el = FiniteElement("RT", mesh.ufl_cell(), 1)
rt0_sp = FunctionSpace(mesh,rt0_el)
rt0_f = Function(rt0_sp)
mesh1 = refine(mesh)
# This works
dg0_sp1 = FunctionSpace(mesh1,dg0_el)
dg0_f1 = project(dg0_f,dg0_sp1)
# This fails
rt0_sp1 = FunctionSpace(mesh1,rt0_el)
rt0_f1 = project(rt0_f,rt0_sp1)
The second projection fails at the compilation stage with the output below. Any help/workarounds is highly appreciated.
------------------- Start compiler output ------------------------
/tmp/tmpptiopkeb/ffc_form_5b6cfae20d3f11d5f95e3ba07fb7d7fe36556df0.cpp: In member function âvirtual void ffc_form_5b6cfae20d3f11d5f95e3ba07fb7d7fe36556df0_cell_integral_main_otherwise::tabulate_tensor(double*, const double* const*, const double*, int) constâ:
/tmp/tmpptiopkeb/ffc_form_5b6cfae20d3f11d5f95e3ba07fb7d7fe36556df0.cpp:105:18: error: redeclaration of âconst double J_c0â
const double J_c0 = coordinate_dofs[0] * FE7_C0_D01_Q3[0][0][0] + coordinate_dofs[2] * FE7_C0_D01_Q3[0][0][1];
^~~~
/tmp/tmpptiopkeb/ffc_form_5b6cfae20d3f11d5f95e3ba07fb7d7fe36556df0.cpp:101:18: note: âconst double J_c0â previously declared here
const double J_c0 = coordinate_dofs[0] * FE7_C0_D01_Q3[0][0][0] + coordinate_dofs[2] * FE7_C0_D01_Q3[0][0][1];
^~~~
/tmp/tmpptiopkeb/ffc_form_5b6cfae20d3f11d5f95e3ba07fb7d7fe36556df0.cpp:106:18: error: redeclaration of âconst double J_c3â
const double J_c3 = coordinate_dofs[1] * FE7_C0_D01_Q3[0][0][0] + coordinate_dofs[5] * FE7_C0_D01_Q3[0][0][1];
^~~~
/tmp/tmpptiopkeb/ffc_form_5b6cfae20d3f11d5f95e3ba07fb7d7fe36556df0.cpp:102:18: note: âconst double J_c3â previously declared here
const double J_c3 = coordinate_dofs[1] * FE7_C0_D01_Q3[0][0][0] + coordinate_dofs[5] * FE7_C0_D01_Q3[0][0][1];
^~~~
/tmp/tmpptiopkeb/ffc_form_5b6cfae20d3f11d5f95e3ba07fb7d7fe36556df0.cpp:107:18: error: redeclaration of âconst double J_c1â
const double J_c1 = coordinate_dofs[0] * FE7_C0_D01_Q3[0][0][0] + coordinate_dofs[4] * FE7_C0_D01_Q3[0][0][1];
^~~~
/tmp/tmpptiopkeb/ffc_form_5b6cfae20d3f11d5f95e3ba07fb7d7fe36556df0.cpp:103:18: note: âconst double J_c1â previously declared here
const double J_c1 = coordinate_dofs[0] * FE7_C0_D01_Q3[0][0][0] + coordinate_dofs[4] * FE7_C0_D01_Q3[0][0][1];
^~~~
/tmp/tmpptiopkeb/ffc_form_5b6cfae20d3f11d5f95e3ba07fb7d7fe36556df0.cpp:108:18: error: redeclaration of âconst double J_c2â
const double J_c2 = coordinate_dofs[1] * FE7_C0_D01_Q3[0][0][0] + coordinate_dofs[3] * FE7_C0_D01_Q3[0][0][1];
^~~~
/tmp/tmpptiopkeb/ffc_form_5b6cfae20d3f11d5f95e3ba07fb7d7fe36556df0.cpp:104:18: note: âconst double J_c2â previously declared here
const double J_c2 = coordinate_dofs[1] * FE7_C0_D01_Q3[0][0][0] + coordinate_dofs[3] * FE7_C0_D01_Q3[0][0][1];
^~~~
------------------- End compiler output ------------------------
Compilation failed! Sources, command, and errors have been written to: /home/fenics/shared/jitfailure-ffc_form_5b6cfae20d3f11d5f95e3ba07fb7d7fe36556df0
Traceback (most recent call last):
File "test_refine.py", line 21, in <module>
rt0_f1 = project(rt0_f,rt0_sp1)
File "/usr/local/lib/python3.6/dist-packages/dolfin/fem/projection.py", line 133, in project
form_compiler_parameters=form_compiler_parameters)
File "/usr/local/lib/python3.6/dist-packages/dolfin/fem/assembling.py", line 361, in assemble_system
b_dolfin_form = _create_dolfin_form(b_form, form_compiler_parameters)
File "/usr/local/lib/python3.6/dist-packages/dolfin/fem/assembling.py", line 58, in _create_dolfin_form
function_spaces=function_spaces)
File "/usr/local/lib/python3.6/dist-packages/dolfin/fem/form.py", line 45, in __init__
mpi_comm=mesh.mpi_comm())
File "/usr/local/lib/python3.6/dist-packages/dolfin/jit/jit.py", line 47, in mpi_jit
return local_jit(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/dolfin/jit/jit.py", line 97, in ffc_jit
return ffc.jit(ufl_form, parameters=p)
File "/usr/local/lib/python3.6/dist-packages/ffc/jitcompiler.py", line 217, in jit
module = jit_build(ufl_object, module_name, parameters)
File "/usr/local/lib/python3.6/dist-packages/ffc/jitcompiler.py", line 133, in jit_build
generate=jit_generate)
File "/usr/local/lib/python3.6/dist-packages/dijitso/jit.py", line 217, in jit
% err_info['fail_dir'], err_info)
dijitso.jit.DijitsoError: Dijitso JIT compilation failed, see '/home/fenics/shared/jitfailure-ffc_form_5b6cfae20d3f11d5f95e3ba07fb7d7fe36556df0' for details