dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #05260
Re: error: invalid initialization
On Mon, Jul 02, 2007 at 07:28:42PM +0200, Alessio Quaglino wrote:
> I couldn't add the elasticity module to the last version of dolfin so I'm
> eventually converting my whole solver from pydolfin to C++ putting
> everything inside the class ElasticityUpdatedSolver. However from the
> constructor:
>
> ElasticityUpdatedSolver::ElasticityUpdatedSolver(Mesh& mesh, char* tag,
> Function& v0,
> real rho,
> real E, real nu, real nuv,
> real nuplast,
> real k, real T, real origin, real weight)
> : mesh(mesh), f(mesh.numVertices(), tag), v0(v0), rho(rho), E(E),
> weight(weight),
> solutionfile(strcat(tag, "_solution.pvd")), file(solutionfile),
> nuplast(nuplast), deltat(k), dt(k), solver(tag),
> T(T), filecounter(0), lastsample(0),
> lmbda(E * nu / ((1 + nu) * (1 - 2 * nu))),
> mu(E / (2 * (1 + nu))), nu(nu), nuv(nuv),
> time(0.0), rtol(get("ODE discrete tolerance")),
> maxiters(get("ODE maximum iterations")), do_plasticity(false),
> yld(0.0),
> savesamplefreq(33.0),
> fcount(0),
> element1(new PlasticityUpdated::BilinearForm::TestElement),
> element2(new XvMass::LinearForm::TestElement),
> element3(new PlasticityUpdated::BilinearForm::FunctionElement_2),
> u0(x0, mesh, *element1),
> sigma0(xsigma0, mesh, *element2),
> sigma1(xsigma1, mesh, *element2),
> epsilon1(xepsilon1, mesh, *element2),
> sigmanorm(xSnorm, mesh, *element3),
> bc(mesh, 0.0, -0.0, 0.0, origin) {}
>
> I can't rid of the following errors:
>
> ElasticityUpdatedSolver.cpp:48: error: invalid initialization of reference
> of type 'dolfin::Function&' from expression of type 'dolfin::real'
> ElasticityUpdatedSolver.cpp:48: error: invalid initialization of reference
> of type 'dolfin::Function&' from expression of type 'dolfin::real'
> ElasticityUpdatedSolver.cpp:48: error: invalid initialization of reference
> of type 'dolfin::Function&' from expression of type 'dolfin::real'
> ElasticityUpdatedSolver.cpp:48: error: invalid initialization of non-const
> reference of type 'dolfin::Function&' from a temporary of type
> 'dolfin::real'
> ElasticityUpdatedSolver.cpp:48: error: invalid initialization of non-const
> reference of type 'dolfin::Function&' from a temporary of type
> 'dolfin::real'
> ElasticityUpdatedSolver.cpp:48: error: invalid initialization of reference
> of type 'dolfin::Function&' from expression of type 'dolfin::real'
>
> which all come from the lines in which I used the constructor:
>
> Function::Function(real value);
>
> taken from the class Function. Thanks for your help.
>
> Alessio
A Function can't be initialized with just a double (it could before
but not anymore). Now, all Functions must be initialized with a mesh
(so that all Functions can be plotted). To initialize a constant
function, you must do
Function f(mesh, value);
Also, it looks like the member data is a Function reference, which
certainly can't be initialized with just a double (you need a
Function). Just check your argument list and make sure it is correct.
/Anders
References