Subject: [FFC-dev] quadrature switch doesn't compile

From: Chong Luo <[email-masked]>
Date: Wed, 5 Nov 2008 14:37:54 -0800 (PST)

It takes more than 40 minutes to compile my form file using the default "tensor" switch, so I tried the "quadrature" switch
$ ffc -r quadrature Elastomer2d.form 

It compiled much faster, and successfully generated the header file Elastomer2d.h.

However, when I tried to compile the main.cpp using this header file, I got the following errors:
$ scons
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
mpic++ -o main.o -c -Wall -pipe -ansi -g -O2 -fno-strict-aliasing -pthread -DDEBUG -DNDEBUG -DHAS_MPI=1 -DMPICH_IGNORE_CXX_SEEK -DPACKAGE_VERSION=0.8.1 -DHAS_PETSC=1 -DHAS_UMFPACK=1 -DHAS_GTS=1 -DHAS_CHOLMOD=1 -I/tmp/buildd/dolfin-0.8.1/debian/tmp/include -I/usr/lib/python2.5/site-packages/numpy/core/include -I/usr/include/suitesparse -I/usr/include/python2.5 -I/usr/lib/petsc/bmake/linux-gnu-c-opt -I/usr/lib/petsc/include -I/usr/lib/openmpi/include -I/usr/lib/openmpi/lib -I. -I/usr/include/libxml2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include main.cpp
main.cpp: In constructor ‘MyNonlinearProblem::MyNonlinearProblem(dolfin::Mesh&, dolfin::SubDomain&, dolfin::Function&, dolfin::Function&, dolfin::Function&, dolfin::Function&, dolfin::Function&, dolfin::Function&, dolfin::Function&)’:
main.cpp:88: error: no matching function for call to ‘Elastomer2dBilinearForm::Elastomer2dBilinearForm(dolfin::Function&, dolfin::Function&, dolfin::Function&, dolfin::Function&)’
Elastomer2d.h:32923: note: candidates are: Elastomer2dBilinearForm::Elastomer2dBilinearForm()
Elastomer2d.h:32919: note:                 Elastomer2dBilinearForm::Elastomer2dBilinearForm(const Elastomer2dBilinearForm&)
main.cpp:89: error: no matching function for call to ‘Elastomer2dLinearForm::Elastomer2dLinearForm(dolfin::Function&, dolfin::Function&, dolfin::Function&, dolfin::Function&, dolfin::Function&)’
Elastomer2d.h:58050: note: candidates are: Elastomer2dLinearForm::Elastomer2dLinearForm()
Elastomer2d.h:58046: note:                 Elastomer2dLinearForm::Elastomer2dLinearForm(const Elastomer2dLinearForm&)
scons: *** [main.o] Error 1
scons: building terminated because of errors.

The corresponding line 88 and line 89 of the main.cpp are
87       // Create forms
88      a = new Elastomer2dBilinearForm(u, c10, alpha, beta);
89      L = new Elastomer2dLinearForm(u, g, c10, alpha, beta);

Could you please help me with this?

Thank you!

Best,
Chong Luo

---

From: Kristian Oelgaard <[email-masked]>
Date: Thu, 06 Nov 2008 11:26:28 +0100

Quoting Chong Luo <[email-masked]>:

> It takes more than 40 minutes to compile my form file using the default
> "tensor" switch, so I tried the "quadrature" switch
> mpic++ -o main.o -c -Wall -pipe -ansi -g -O2 -fno-strict-aliasing -pthread
> -DDEBUG -DNDEBUG -DHAS_MPI=1 -DMPICH_IGNORE_CXX_SEEK -DPACKAGE_VERSION=0.8.1
> -DHAS_PETSC=1 -DHAS_UMFPACK=1 -DHAS_GTS=1 -DHAS_CHOLMOD=1
> -I/tmp/buildd/dolfin-0.8.1/debian/tmp/include
> -I/usr/lib/python2.5/site-packages/numpy/core/include
> -I/usr/include/suitesparse -I/usr/include/python2.5
> -I/usr/lib/petsc/bmake/linux-gnu-c-opt -I/usr/lib/petsc/include
> -I/usr/lib/openmpi/include -I/usr/lib/openmpi/lib -I. -I/usr/include/libxml2
> -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include main.cpp
> main.cpp: In constructor
> ¡MyNonlinearProblem::MyNonlinearProblem(dolfin::Mesh&, dolfin::SubDomain&,
> dolfin::Function&, dolfin::Function&, dolfin::Function&, dolfin::Function&,
> dolfin::Function&, dolfin::Function&, dolfin::Function&)¢:
> main.cpp:88: error: no matching function for call to
> ¡Elastomer2dBilinearForm::Elastomer2dBilinearForm(dolfin::Function&,
> dolfin::Function&, dolfin::Function&, dolfin::Function&)¢
> Elastomer2d.h:32923: note: candidates are:
> Elastomer2dBilinearForm::Elastomer2dBilinearForm()
> Elastomer2d.h:32919: note:                
> Elastomer2dBilinearForm::Elastomer2dBilinearForm(const
> Elastomer2dBilinearForm&)
> main.cpp:89: error: no matching function for call to
> ¡Elastomer2dLinearForm::Elastomer2dLinearForm(dolfin::Function&,
> dolfin::Function&, dolfin::Function&, dolfin::Function&, dolfin::Function&)¢
> Elastomer2d.h:58050: note: candidates are:
> Elastomer2dLinearForm::Elastomer2dLinearForm()
> Elastomer2d.h:58046: note:                
> Elastomer2dLinearForm::Elastomer2dLinearForm(const Elastomer2dLinearForm&)

Which version of FFC are you using? Did you compile with the '-l dolfin' option?

Kristian

---

From: Chong Luo <[email-masked]>
Date: Thu, 6 Nov 2008 20:24:12 -0800 (PST)

Aha, after using "ff -l dolfin -r quadrature Elastomer2d.form" to generate the Elastomer2d.h file,  the main.cpp can compile. Originally I followed the tutorial at fenics.org, and thought "-r quadrature" was to replace "-l dolfin", and now I understand that it's an independent switch.

Thank you very much for your help.

Best,
Chong Luo

________________________________
From: Kristian Oelgaard <[email-masked]>
To: Chong Luo <[email-masked]>
Cc: [email-masked]
Sent: Thursday, November 6, 2008 4:26:28 AM
Subject: Re: [FFC-dev] quadrature switch doesn't compile

Kristian