← Back to team overview

dolfin team mailing list archive

Re: Issues with interpolate

 

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?

-- 
Anders

Attachment: signature.asc
Description: Digital signature


Follow ups

References