On Thu, Jul 2, 2009 at 1:42 PM, Johan Hake<h...@simula.no> 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?
I also prefer this solution. The reason is this: It's not intuitive that, assuming code like this, ... MyFunction myfunction(V); // user defined function myfunction.t = 1.0; ... (A) assemble something that depends on myfunction Vector & v = myfunction.vector(); myfunction.t = 2.0; ... (B) assemble same thing that depends on myfunction (A) and (B) can give different results, with t = 1.0 in (B) since the vector has already been computed and t is ignored. Martin _______________________________________________ DOLFIN-dev mailing list DOLFIN-dev@fenics.org http://www.fenics.org/mailman/listinfo/dolfin-dev