dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #17188
Re: [Question #97399]: cannot convert 'dolfin::real' to 'double' for argument '1' to 'double cos(double)
Question #97399 on DOLFIN changed:
https://answers.launchpad.net/dolfin/+question/97399
Status: Answered => Open
Murtazo Nazarov is still having a problem:
Garth Wells wrote:
> Question #97399 on DOLFIN changed:
> https://answers.launchpad.net/dolfin/+question/97399
>
> Status: Open => Answered
>
> Garth Wells proposed the following answer:
>
> Murtazo Nazarov wrote:
>
>> New question #97399 on DOLFIN:
>> https://answers.launchpad.net/dolfin/+question/97399
>>
>>
>> In example in /demo/ode/stiff/cpp/Timedependent1.h I tried to change function f(u,t) into
>>
>>
>> void f(const real* u, real t, real* y)
>> {
>> y[0] = -1000.0 * u[0] + cos(t);
>> }
>>
>> But I get a compilation error:
>>
>> In file included from main.cpp:12:
>> TestProblem1.h: In member function 'virtual void TestProblem1::f(const dolfin::real*, dolfin::real, dolfin::real*)':
>> TestProblem1.h:27: error: cannot convert 'dolfin::real' to 'double' for argument '1' to 'double cos(double)'
>> scons: *** [main.o] Error 1
>>
>> It seems dolfin::real is not double by default for the latest dolfin. Is it bug or I can fix it easily in my code?
>> Any suggestion?
>>
>>
>
> Use 'double'.
>
> Garth
>
I tried with 'double'.
void u0(double* u)
{
u[0] = 1.0;
}
void f(const double* u, double t, double* y)
{
y[0] = -1000.0 * u[0] + cos(t);
}
Then I got similar error
main.cpp:64: error: cannot declare variable 'test_problem' to be of
abstract type 'TestProblem1'
TestProblem1.h:12: note: because the following virtual functions are
pure within 'TestProblem1':
/afs/nada.kth.se/home/x/u18gh7kx/data/Work/fenics/build/include/dolfin/ode/ODE.h:83:
note: virtual void dolfin::ODE::u0(dolfin::real*)
The I tried like this:
void u0(real* u)
{
u[0] = 1.0;
}
void f(const real* u, double t, double* y)
{
y[0] = -1000.0 * u[0] + cos(t);
}
Still error:
In file included from main.cpp:12:
TestProblem1.h: In member function 'void TestProblem1::f(const
dolfin::real*, double, double*)':
TestProblem1.h:27: error: cannot convert '__gmp_expr<__mpf_struct [1],
__gmp_binary_expr<__gmp_expr<__mpf_struct [1], __gmp_binary_expr<double,
__gmp_expr<__mpf_struct [1], __mpf_struct [1]>, __gmp_binary_multiplies>
>, double, __gmp_binary_plus> >' to 'double' in assignment
scons: *** [main.o] Error 1
>
>> Thanks,
>> Murtazo
>>
>>
>>
>
>
--
You received this question notification because you are a member of
DOLFIN Team, which is an answer contact for DOLFIN.
Follow ups
References