← Back to team overview

dolfin team mailing list archive

Re: New Function implementation

 

Yes, see if that works. Try changing to dolfin::pow() everywhere where
you get an error. If that works, submit a patch.

-- 
Anders


On Tue, Oct 14, 2008 at 06:05:24PM -0400, Shawn Walker wrote:
> I've got version 4.1.2 20071124.  I guess that is it.
>
> It looks like the error has to do with specifying which pow to use.  Is 
> it possible to force the dolfin::pow?
>
> - Shawn
>
> On Tue, 14 Oct 2008, Anders Logg wrote:
>
>> This is all caused by the pow() functions in real.h which have been
>> added since GMP types do not work with std::pow().
>>
>> This does not give me any problems (g++ 4.2.3) so it's difficult for
>> me to debug. Let me know which compiler you are using so I can
>> reproduce the bug. (Or even better help me fix it...)
>>
>>
>>
>> On Tue, Oct 14, 2008 at 04:03:18PM -0400, Shawn Walker wrote:
>>> I now get a new bug with an ODE demo.  Should I just disable the ODE
>>> demos?
>>>
>>> /usr/bin/ld: skipping incompatible /usr/lib/libc.a when searching for -lc
>>> c++ -o demo/ode/courtemanche/cpp/main.o -c -Wall -pipe -ansi -Werror
>>> -DDEBUG -g -DNDEBUG -O2 -DPACKAGE_VERSION=\"0.8.0\" -DHAS_PETSC=1
>>> -DHAS_SLEPC=1 -DHAS_UMFPACK=1 -DHAS_GTS=1 -DHAS_CHOLMOD=1
>>> -fno-strict-aliasing -I. -I. -Idolfin -I/home/walker/build/include
>>> -I/usr/include/boost -I/usr/include/libxml2
>>> -I/home/walker/src/petsc-2.3.3-p13/bmake/linux-gnu-cxx-debug
>>> -I/home/walker/src/petsc-2.3.3-p13/include -I/home/walker/build/include
>>> -I/home/walker/build/lib -Idemo -I/home/walker/src/slepc-2.3.3
>>> -I/home/walker/src/slepc-2.3.3/include
>>> -I/home/walker/src/petsc-2.3.3-p13/bmake/linux-gnu-cxx-debug
>>> -I/home/walker/src/petsc-2.3.3-p13/include -I/home/walker/build/include
>>> -I/home/walker/build/lib -Idemo -I/usr/include/suitesparse
>>> -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
>>> -I/home/walker/build/include -I/usr/include/suitesparse
>>> demo/ode/courtemanche/cpp/main.cpp
>>> demo/ode/courtemanche/cpp/main.cpp: In member function oid
>>> Courtemanche::computeCurrents(const double*)
>>> demo/ode/courtemanche/cpp/main.cpp:170: error: call of overloaded
>>> ow(double, double)is ambiguous
>>> /usr/include/bits/mathcalls.h:154: note: candidates are: double
>>> pow(double, double)
>>> ./dolfin/common/real.h:71: note:                 dolfin::real
>>> dolfin::pow(dolfin::real, dolfin::real)
>>> ./dolfin/common/real.h:59: note:                 dolfin::real
>>> dolfin::pow(dolfin::real, dolfin::uint)
>>> demo/ode/courtemanche/cpp/main.cpp: In member function oid
>>> Courtemanche::computeGateCoefficients(const double*)
>>> demo/ode/courtemanche/cpp/main.cpp:255: error: call of overloaded
>>> ow(double, double)is ambiguous
>>> /usr/include/bits/mathcalls.h:154: note: candidates are: double
>>> pow(double, double)
>>> ./dolfin/common/real.h:71: note:                 dolfin::real
>>> dolfin::pow(dolfin::real, dolfin::real)
>>> ./dolfin/common/real.h:59: note:                 dolfin::real
>>> dolfin::pow(dolfin::real, dolfin::uint)
>>> scons: *** [demo/ode/courtemanche/cpp/main.o] Error 1
>>> scons: building terminated because of errors.
>>>
>>> - Shawn
>>>
>>> On Tue, 14 Oct 2008, Anders Logg wrote:
>>>
>>>> I guess it's the same bug as Nuno David Lopes reported earlier.
>>>> It works fine for me, but I just pushed an attempt to fix this. See if
>>>> it helps.
>>>>
>>>>
>>>>
>>>> On Tue, Oct 14, 2008 at 03:34:43PM -0400, Shawn Walker wrote:
>>>>> I will definitely look at it.  I think it is a good idea.
>>>>>
>>>>> However, I recently tried to compile, and I got an error with file used
>>>>> for dG.  I can reproduce it if you want.
>>>>>
>>>>> - Shawn
>>>>>
>>>>> On Tue, 14 Oct 2008, Anders Logg wrote:
>>>>>
>>>>>> I've finished up the new implementation of the Function class.
>>>>>> It's untested, but I'm pretty sure it works... :-) I'm very happy with
>>>>>> the way it turned out.
>>>>>>
>>>>>> Anyway, it would be good if anyone interested would review the design
>>>>>> and implementation (in detail, including function names etc).
>>>>>>
>>>>>> The Function class is central so it would be good if we could agree on
>>>>>> a design and keep it stable for some time (like we've managed with the
>>>>>> linear algebra interfaces).
>>>>>>
>>>>>> The main changes compared to the old/current design are as follows:
>>>>>>
>>>>>> 1. Introduction of a FunctionSpace class. A FunctionSpace is defined
>>>>>> by a Mesh, a FiniteElement and a DofMap.
>>>>>>
>>>>>> 2. Removal of the class hierarchy. Only one class Function remains.
>>>>>> This acts dynamically either as a user-defined function (if the vector
>>>>>> of coefficients is null) or as the old DiscreteFunction.
>>>>>>
>>>>>> 3. The proliferation of constructors has been removed. There is
>>>>>> essentially only one constructor, namely
>>>>>>
>>>>>>  v = Function(V)
>>>>>>
>>>>>> An additional class named Constant should be added to handle constant
>>>>>> functions, overloading eval() and providing a bunch of constructors
>>>>>> (scalar, vector, tensor).
>>>>>>
>>>>>> When we've settled on the design/implementation of Function and
>>>>>> FunctionSpace, we need to do a round of editing of the DofMap class.
>>>>>>
>>>>>>
>>>>
>>

Attachment: signature.asc
Description: Digital signature


Follow ups

References