On Thursday 02 July 2009 13:50:22 Anders Logg wrote: > On Thu, Jul 02, 2009 at 01:42:41PM +0200, Johan Hake wrote: > > On Thursday 02 July 2009 13:24:28 Garth N. Wells wrote: > > > Johan Hake wrote: > > > > On Thursday 02 July 2009 13:07:47 Garth N. Wells wrote: > > > >> Marie Rognes wrote: > > > >>> Garth N. Wells wrote: > > > >>>> Marie Rognes wrote: > > > >>>>> The following code gives r = 0.0. It is not supposed to be. > > > >>>>> > > > >>>>> The problem seems to be that f's vector is still all zeros at the > > > >>>>> call to interpolate. Could this be easily fixed? > > > >>>> > > > >>>> This example should have led to an error message since f is not a > > > >>>> discrete function. I'll take a look. > > > >>> > > > >>> Ok, thanks! > > > >>> > > > >>> However, > > > >>> > > > >>> (a) Why is f not a discrete function? (It is defined on a finite > > > >>> element space?) > > > >> > > > >> On second thought, it may be a discrete function. I think that this > > > >> is defined in the Python interface and not the C++ interface, so > > > >> I'll take a look. > > > > > > > > A user defined function is not a discrete function untill you either > > > > call interpolate() or vector, also in python. The problem with the > > > > later is that you then create a vector which is initialized to 0. > > > > > > > > I think this has been discussed before, but should we populate the > > > > vector using f.interpolate() when vector is called on a userdefined > > > > function? > > > > > > Or perhaps Function::vector() should throw an error if the vector has > > > not already been allocated. > > > > I vote for this. > > > > The error message can include information about the user might want to > > call interpolate? > > > > Johan > > Sounds good. > > Just to check: this only occurs (in Python) when a user defines a > Function using a C++ expression or overloads eval(), right?
Nope. Calling Function::vector() in C++ with a userdefined Function will initialize the vector to zero, and return that vector. I suppose Garth suggestion concerned Function::vector() in C++. Johan _______________________________________________ DOLFIN-dev mailing list DOLFIN-dev@fenics.org http://www.fenics.org/mailman/listinfo/dolfin-dev