Garth N. Wells wrote:
>
>
> Johan Hake wrote:
>> On Thursday 02 July 2009 15:17:08 Garth N. Wells wrote:
>>> Johan Hake wrote:
>>>> On Thursday 02 July 2009 22:48:18 Marie Rognes wrote:
>>>>> 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?
>>>>> What is wrong with actually populating the vector with the values one
>>>>> expects it to have?
>>>>> (When would one not want this?)
>>>> Nothing is wrong with that. It just changes the state of the 
>>>> userdefined
>>>> function. The question is should this change be the implicit result 
>>>> of a
>>>> call to Function::vector() or should it be a result of an explicit
>>>> action: a call to Function::interpolate().
>>>>
>>>>> Also note that it is not intuitive to me that one must call
>>>>> f.interpolate() before
>>>>>
>>>>>     Pi_f = interpolate(f, Q_h)
>>> I thought that I removed the above function from the C++ interface and
>>> added
>>>
>>>      Pi_f = interpolate(f)
>>
>
> Oops, I meant that I removed
>
>     Pi_f.interpolate(f, Q_h)
>
> and added
>
>     Pi_f.interpolate(f)
>
> I think that we should remove interpolate.py. It's now a wrapper for 
> only two lines of code.
>


If so, if I want to interpolate f (defined on V_h) onto the space Q_h, I 
should do ...?


--
Marie



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

Reply via email to