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 > Garth > > > johan > > > >>> (b) I would very much like this not to give an error, but rather work > >>> ;) I would use something like this all the time when checking > >>> convergence. > >> > >> Just do > >> > >> f.interpolate() > >> > >> Garth > >> > >>> -- > >>> Marie > >>> > >>>> Garth > >>>> > >>>>> -- > >>>>> from dolfin import * > >>>>> > >>>>> mesh = UnitSquare(1,1) > >>>>> V_h = FunctionSpace(mesh, "CG", 1) > >>>>> f = Function(V_h, "1.0") > >>>>> > >>>>> Q_h = FunctionSpace(mesh, "DG", 1) > >>>>> Pi_f = interpolate(f, Q_h) > >>>>> > >>>>> r = norm(Pi_f) > >>>>> print "r = ", r > >>>>> --- > >>>>> > >>>>> -- > >>>>> Marie > >>>>> > >>>>> > >>>>> _______________________________________________ > >>>>> DOLFIN-dev mailing list > >>>>> DOLFIN-dev@fenics.org > >>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev > >> > >> _______________________________________________ > >> DOLFIN-dev mailing list > >> DOLFIN-dev@fenics.org > >> http://www.fenics.org/mailman/listinfo/dolfin-dev _______________________________________________ DOLFIN-dev mailing list DOLFIN-dev@fenics.org http://www.fenics.org/mailman/listinfo/dolfin-dev