← Back to team overview

dolfin team mailing list archive

Re: Issues with interpolate

 



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.


Unfortunately this won't work because we often do

    Function u(V);
    solve(A, u.vector(), b);

Garth

Just to check: this only occurs (in Python) when a user defines a
Function using a C++ expression or overloads eval(), right?



------------------------------------------------------------------------

_______________________________________________
DOLFIN-dev mailing list
DOLFIN-dev@xxxxxxxxxx
http://www.fenics.org/mailman/listinfo/dolfin-dev




Follow ups

References