FFC

Undeclared variables in optimised quadrature code

Bug #883202 reported by Garth Wells
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
FFC
Fix Released
Critical
Kristian B. Ølgaard

Bug Description

The below code fails to run due to undeclared variables:

from dolfin import *
# Below line causes failure
parameters["form_compiler"]["optimize"] = True
parameters["form_compiler"]["representation"] = "quadrature"
mesh = UnitSquare(2, 2)
P1 = VectorFunctionSpace(mesh, "Lagrange", 2)
B = VectorFunctionSpace(mesh, "Bubble", 3)
Mini = (P1 + B)

The Instant output is:

In file included from instant_module_c57922f6eccdd3bfa89632e935c27d66b0c22e0b_wrap.cxx:3085:0:
ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9.h: In member function ‘virtual void ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9_cell_integral_0_0::tabulate_tensor(double*, const double* const*, const ufc::cell&) const’:
ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9.h:1231:9: error: ‘nzc0’ was not declared in this scope
ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9.h:1231:14: error: ‘j’ was not declared in this scope
error: command 'gcc' failed with exit status 1

Changed in ffc:
status: New → Confirmed
importance: Undecided → Critical
assignee: nobody → Kristian B. Ølgaard (k.b.oelgaard)
milestone: none → 1.1-rc
Revision history for this message
Kristian B. Ølgaard (k.b.oelgaard) wrote : Re: [Bug 883202] [NEW] Undeclared variables in optimised quadrature code

On 28 October 2011 19:37, Launchpad Bug Tracker
<email address hidden> wrote:
> Garth Wells (garth-wells) has assigned this bug to you for FFC:
>
> The below code fails to run due to undeclared variables:
>
> from dolfin import *
> # Below line causes failure
> parameters["form_compiler"]["optimize"]       = True
> parameters["form_compiler"]["representation"] = "quadrature"
> mesh = UnitSquare(2, 2)
> P1 = VectorFunctionSpace(mesh, "Lagrange", 2)
> B  = VectorFunctionSpace(mesh, "Bubble", 3)
> Mini = (P1 + B)

I don't understand where the form is coming from (the error is in a
tabulate_tensor() function).
What does adding two function spaces mean?

>
> The Instant output is:
>
>
> In file included from instant_module_c57922f6eccdd3bfa89632e935c27d66b0c22e0b_wrap.cxx:3085:0:
> ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9.h: In member function ‘virtual void ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9_cell_integral_0_0::tabulate_tensor(double*, const double* const*, const ufc::cell&) const’:
> ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9.h:1231:9: error: ‘nzc0’ was not declared in this scope
> ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9.h:1231:14: error: ‘j’ was not declared in this scope
> error: command 'gcc' failed with exit status 1
>
> ** Affects: ffc
>     Importance: Critical
>     Assignee: Kristian B. Ølgaard (k.b.oelgaard)
>         Status: Confirmed
>
> --
> Undeclared variables in optimised quadrature code
> https://bugs.launchpad.net/bugs/883202
> You received this bug notification because you are a bug assignee.
>

Revision history for this message
Garth Wells (garth-wells) wrote :

2011/10/28 Kristian B. Ølgaard <email address hidden>:
> On 28 October 2011 19:37, Launchpad Bug Tracker
> <email address hidden> wrote:
>> Garth Wells (garth-wells) has assigned this bug to you for FFC:
>>
>> The below code fails to run due to undeclared variables:
>>
>> from dolfin import *
>> # Below line causes failure
>> parameters["form_compiler"]["optimize"]       = True
>> parameters["form_compiler"]["representation"] = "quadrature"
>> mesh = UnitSquare(2, 2)
>> P1 = VectorFunctionSpace(mesh, "Lagrange", 2)
>> B  = VectorFunctionSpace(mesh, "Bubble", 3)
>> Mini = (P1 + B)
>
> I don't understand where the form is coming from (the error is in a
> tabulate_tensor() function).
> What does adding two function spaces mean?
>

It's an 'enriched' space. The code is a cut-down version of the
stokes-mini demo.

Garth

>
>>
>> The Instant output is:
>>
>>
>> In file included from instant_module_c57922f6eccdd3bfa89632e935c27d66b0c22e0b_wrap.cxx:3085:0:
>> ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9.h: In member function ‘virtual void ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9_cell_integral_0_0::tabulate_tensor(double*, const double* const*, const ufc::cell&) const’:
>> ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9.h:1231:9: error: ‘nzc0’ was not declared in this scope
>> ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9.h:1231:14: error: ‘j’ was not declared in this scope
>> error: command 'gcc' failed with exit status 1
>>
>> ** Affects: ffc
>>     Importance: Critical
>>     Assignee: Kristian B. Ølgaard (k.b.oelgaard)
>>         Status: Confirmed
>>
>> --
>> Undeclared variables in optimised quadrature code
>> https://bugs.launchpad.net/bugs/883202
>> You received this bug notification because you are a bug assignee.
>>
>
> --
> You received this bug notification because you are a member of FFC Core
> Team, which is subscribed to FFC.
> https://bugs.launchpad.net/bugs/883202
>
> Title:
>  Undeclared variables in optimised quadrature code
>
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/ffc/+bug/883202/+subscriptions
>

Revision history for this message
Kristian B. Ølgaard (k.b.oelgaard) wrote :
Download full text (3.8 KiB)

On 28 October 2011 22:23, Garth Wells <email address hidden> wrote:
> 2011/10/28 Kristian B. Ølgaard <email address hidden>:
>> On 28 October 2011 19:37, Launchpad Bug Tracker
>> <email address hidden> wrote:
>>> Garth Wells (garth-wells) has assigned this bug to you for FFC:
>>>
>>> The below code fails to run due to undeclared variables:
>>>
>>> from dolfin import *
>>> # Below line causes failure
>>> parameters["form_compiler"]["optimize"]       = True
>>> parameters["form_compiler"]["representation"] = "quadrature"
>>> mesh = UnitSquare(2, 2)
>>> P1 = VectorFunctionSpace(mesh, "Lagrange", 2)
>>> B  = VectorFunctionSpace(mesh, "Bubble", 3)
>>> Mini = (P1 + B)
>>
>> I don't understand where the form is coming from (the error is in a
>> tabulate_tensor() function).
>> What does adding two function spaces mean?
>>
>
> It's an 'enriched' space. The code is a cut-down version of the
> stokes-mini demo.

Sure, I just don't understand why:

Mini = (P1 + B)

results in a form.

It should just be an element, and if the code read (in a UFL file):

element = (P1 + B)

FFC would generate a header for one element without the
tabulate_tensor() function.

Kristian

> Garth
>
>>
>>>
>>> The Instant output is:
>>>
>>>
>>> In file included from instant_module_c57922f6eccdd3bfa89632e935c27d66b0c22e0b_wrap.cxx:3085:0:
>>> ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9.h: In member function ‘virtual void ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9_cell_integral_0_0::tabulate_tensor(double*, const double* const*, const ufc::cell&) const’:
>>> ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9.h:1231:9: error: ‘nzc0’ was not declared in this scope
>>> ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9.h:1231:14: error: ‘j’ was not declared in this scope
>>> error: command 'gcc' failed with exit status 1
>>>
>>> ** Affects: ffc
>>>     Importance: Critical
>>>     Assignee: Kristian B. Ølgaard (k.b.oelgaard)
>>>         Status: Confirmed
>>>
>>> --
>>> Undeclared variables in optimised quadrature code
>>> https://bugs.launchpad.net/bugs/883202
>>> You received this bug notification because you are a bug assignee.
>>>
>>
>> --
>> You received this bug notification because you are a member of FFC Core
>> Team, which is subscribed to FFC.
>> https://bugs.launchpad.net/bugs/883202
>>
>> Title:
>>  Undeclared variables in optimised quadrature code
>>
>> To manage notifications about this bug go to:
>> https://bugs.launchpad.net/ffc/+bug/883202/+subscriptions
>>
>
> --
> You received this bug notification because you are a member of FFC Core
> Team, which is subscribed to FFC.
> https://bugs.launchpad.net/bugs/883202
>
> Title:
>  Undeclared variables in optimised quadrature code
>
> Status in FEniCS Form Compiler:
>  Confirmed
>
> Bug description:
>  The below code fails to run due to undeclared variables:
>
>  from dolfin import *
>  # Below line causes failure
>  parameters["form_compiler"]["optimize"]       = True
>  parameters["form_compiler"]["representation"] = "quadrature"
>  mesh = UnitSquare(2, 2)
>  P1 = VectorFunctionSpace(mesh, "Lagrange", 2)
>  B  = VectorFunctionSpace(mesh, "Bubble", 3)
>  Mini = (P1 + B)
>
>
>  The Instant output i...

Read more...

Revision history for this message
Garth Wells (garth-wells) wrote :
Download full text (4.4 KiB)

 2011/10/29 Kristian B. Ølgaard <email address hidden>:
> On 28 October 2011 22:23, Garth Wells <email address hidden> wrote:
>> 2011/10/28 Kristian B. Ølgaard <email address hidden>:
>>> On 28 October 2011 19:37, Launchpad Bug Tracker
>>> <email address hidden> wrote:
>>>> Garth Wells (garth-wells) has assigned this bug to you for FFC:
>>>>
>>>> The below code fails to run due to undeclared variables:
>>>>
>>>> from dolfin import *
>>>> # Below line causes failure
>>>> parameters["form_compiler"]["optimize"]       = True
>>>> parameters["form_compiler"]["representation"] = "quadrature"
>>>> mesh = UnitSquare(2, 2)
>>>> P1 = VectorFunctionSpace(mesh, "Lagrange", 2)
>>>> B  = VectorFunctionSpace(mesh, "Bubble", 3)
>>>> Mini = (P1 + B)
>>>
>>> I don't understand where the form is coming from (the error is in a
>>> tabulate_tensor() function).
>>> What does adding two function spaces mean?
>>>
>>
>> It's an 'enriched' space. The code is a cut-down version of the
>> stokes-mini demo.
>
> Sure, I just don't understand why:
>
> Mini = (P1 + B)
>
> results in a form.
>
> It should just be an element, and if the code read (in a UFL file):
>
> element = (P1 + B)
>
> FFC would generate a header for one element without the
> tabulate_tensor() function.
>

Have you tested if this is a problem with plain UFL + FFC
complilation? I can try it later if you haven't already.

Garth

> Kristian
>
>> Garth
>>
>>>
>>>>
>>>> The Instant output is:
>>>>
>>>>
>>>> In file included from instant_module_c57922f6eccdd3bfa89632e935c27d66b0c22e0b_wrap.cxx:3085:0:
>>>> ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9.h: In member function ‘virtual void ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9_cell_integral_0_0::tabulate_tensor(double*, const double* const*, const ufc::cell&) const’:
>>>> ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9.h:1231:9: error: ‘nzc0’ was not declared in this scope
>>>> ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9.h:1231:14: error: ‘j’ was not declared in this scope
>>>> error: command 'gcc' failed with exit status 1
>>>>
>>>> ** Affects: ffc
>>>>     Importance: Critical
>>>>     Assignee: Kristian B. Ølgaard (k.b.oelgaard)
>>>>         Status: Confirmed
>>>>
>>>> --
>>>> Undeclared variables in optimised quadrature code
>>>> https://bugs.launchpad.net/bugs/883202
>>>> You received this bug notification because you are a bug assignee.
>>>>
>>>
>>> --
>>> You received this bug notification because you are a member of FFC Core
>>> Team, which is subscribed to FFC.
>>> https://bugs.launchpad.net/bugs/883202
>>>
>>> Title:
>>>  Undeclared variables in optimised quadrature code
>>>
>>> To manage notifications about this bug go to:
>>> https://bugs.launchpad.net/ffc/+bug/883202/+subscriptions
>>>
>>
>> --
>> You received this bug notification because you are a member of FFC Core
>> Team, which is subscribed to FFC.
>> https://bugs.launchpad.net/bugs/883202
>>
>> Title:
>>  Undeclared variables in optimised quadrature code
>>
>> Status in FEniCS Form Compiler:
>>  Confirmed
>>
>> Bug description:
>>  The below code fails to run due to undeclared variables:
>>
>>  from dolfin import *
>>  # Below line causes failure
>> ...

Read more...

Revision history for this message
Kristian B. Ølgaard (k.b.oelgaard) wrote :
Download full text (6.7 KiB)

On 31 October 2011 18:38, Garth Wells <email address hidden> wrote:
> 2011/10/29 Kristian B. Ølgaard <email address hidden>:
>> On 28 October 2011 22:23, Garth Wells <email address hidden> wrote:
>>> 2011/10/28 Kristian B. Ølgaard <email address hidden>:
>>>> On 28 October 2011 19:37, Launchpad Bug Tracker
>>>> <email address hidden> wrote:
>>>>> Garth Wells (garth-wells) has assigned this bug to you for FFC:
>>>>>
>>>>> The below code fails to run due to undeclared variables:
>>>>>
>>>>> from dolfin import *
>>>>> # Below line causes failure
>>>>> parameters["form_compiler"]["optimize"]       = True
>>>>> parameters["form_compiler"]["representation"] = "quadrature"
>>>>> mesh = UnitSquare(2, 2)
>>>>> P1 = VectorFunctionSpace(mesh, "Lagrange", 2)
>>>>> B  = VectorFunctionSpace(mesh, "Bubble", 3)
>>>>> Mini = (P1 + B)
>>>>
>>>> I don't understand where the form is coming from (the error is in a
>>>> tabulate_tensor() function).
>>>> What does adding two function spaces mean?
>>>>
>>>
>>> It's an 'enriched' space. The code is a cut-down version of the
>>> stokes-mini demo.
>>
>> Sure, I just don't understand why:
>>
>> Mini = (P1 + B)
>>
>> results in a form.
>>
>> It should just be an element, and if the code read (in a UFL file):
>>
>> element = (P1 + B)
>>
>> FFC would generate a header for one element without the
>> tabulate_tensor() function.
>>
>
> Have you tested if this is a problem with plain UFL + FFC
> complilation? I can try it later if you haven't already.

This is not a problem with plain UFL + FFC, since

P1 = VectorElement("Lagrange", triangle, 2)
B = VectorElement("Bubble", triangle, 3)
Mini = (P1 + B)

does nothing, and changing the last line to:

element = (P1 + B)

produces code only for the enriched element, no forms involved.
After some trial and error I found the following simple form which
will result in code with equivalent missing variables:

B = VectorElement("Bubble", triangle, 3)

#v = TestFunction(B)
v = Coefficient(B)

L = (v[0] + v[1])*dx

I'm debugging this, now and a fix should be on the way.

Why your simple PyDOLFIN script results in a header file involving a
tabulate_tensor() function is beyond me.

Kristian

> Garth
>
>> Kristian
>>
>>> Garth
>>>
>>>>
>>>>>
>>>>> The Instant output is:
>>>>>
>>>>>
>>>>> In file included from instant_module_c57922f6eccdd3bfa89632e935c27d66b0c22e0b_wrap.cxx:3085:0:
>>>>> ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9.h: In member function ‘virtual void ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9_cell_integral_0_0::tabulate_tensor(double*, const double* const*, const ufc::cell&) const’:
>>>>> ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9.h:1231:9: error: ‘nzc0’ was not declared in this scope
>>>>> ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9.h:1231:14: error: ‘j’ was not declared in this scope
>>>>> error: command 'gcc' failed with exit status 1
>>>>>
>>>>> ** Affects: ffc
>>>>>     Importance: Critical
>>>>>     Assignee: Kristian B. Ølgaard (k.b.oelgaard)
>>>>>         Status: Confirmed
>>>>>
>>>>> --
>>>>> Undeclared variables in optimised quadrature code
>>>>> https://bugs.launchpad.net/bugs/883202
>>>>> You received this bug no...

Read more...

Revision history for this message
Garth Wells (garth-wells) wrote :
Download full text (7.5 KiB)

On 31 Oct 2011, at 19:56, Kristian B. Ølgaard <email address hidden> wrote:

> On 31 October 2011 18:38, Garth Wells <email address hidden> wrote:
>> 2011/10/29 Kristian B. Ølgaard <email address hidden>:
>>> On 28 October 2011 22:23, Garth Wells <email address hidden> wrote:
>>>> 2011/10/28 Kristian B. Ølgaard <email address hidden>:
>>>>> On 28 October 2011 19:37, Launchpad Bug Tracker
>>>>> <email address hidden> wrote:
>>>>>> Garth Wells (garth-wells) has assigned this bug to you for FFC:
>>>>>>
>>>>>> The below code fails to run due to undeclared variables:
>>>>>>
>>>>>> from dolfin import *
>>>>>> # Below line causes failure
>>>>>> parameters["form_compiler"]["optimize"] = True
>>>>>> parameters["form_compiler"]["representation"] = "quadrature"
>>>>>> mesh = UnitSquare(2, 2)
>>>>>> P1 = VectorFunctionSpace(mesh, "Lagrange", 2)
>>>>>> B = VectorFunctionSpace(mesh, "Bubble", 3)
>>>>>> Mini = (P1 + B)
>>>>>
>>>>> I don't understand where the form is coming from (the error is in a
>>>>> tabulate_tensor() function).
>>>>> What does adding two function spaces mean?
>>>>>
>>>>
>>>> It's an 'enriched' space. The code is a cut-down version of the
>>>> stokes-mini demo.
>>>
>>> Sure, I just don't understand why:
>>>
>>> Mini = (P1 + B)
>>>
>>> results in a form.
>>>
>>> It should just be an element, and if the code read (in a UFL file):
>>>
>>> element = (P1 + B)
>>>
>>> FFC would generate a header for one element without the
>>> tabulate_tensor() function.
>>>
>>
>> Have you tested if this is a problem with plain UFL + FFC
>> complilation? I can try it later if you haven't already.
>
> This is not a problem with plain UFL + FFC, since
>
> P1 = VectorElement("Lagrange", triangle, 2)
> B = VectorElement("Bubble", triangle, 3)
> Mini = (P1 + B)
>
> does nothing, and changing the last line to:
>
> element = (P1 + B)
>
> produces code only for the enriched element, no forms involved.
> After some trial and error I found the following simple form which
> will result in code with equivalent missing variables:
>
> B = VectorElement("Bubble", triangle, 3)
>
> #v = TestFunction(B)
> v = Coefficient(B)
>
> L = (v[0] + v[1])*dx
>
> I'm debugging this, now and a fix should be on the way.
>
> Why your simple PyDOLFIN script results in a header file involving a
> tabulate_tensor() function is beyond me.
>

Sounds like a DOLFIN bug - something must be up with the JIT compilation.

Garth

> Kristian
>
>> Garth
>>
>>> Kristian
>>>
>>>> Garth
>>>>
>>>>>
>>>>>>
>>>>>> The Instant output is:
>>>>>>
>>>>>>
>>>>>> In file included from instant_module_c57922f6eccdd3bfa89632e935c27d66b0c22e0b_wrap.cxx:3085:0:
>>>>>> ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9.h: In member function ‘virtual void ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9_cell_integral_0_0::tabulate_tensor(double*, const double* const*, const ufc::cell&) const’:
>>>>>> ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9.h:1231:9: error: ‘nzc0’ was not declared in this scope
>>>>>> ffc_form_5ca75cda2f9ef647eacfccf50055f2967e691cf9.h:1231:14: error: ‘j’ was not declared in this scope
>>>>>> error: command 'gcc' failed with...

Read more...

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.