Anders Logg wrote:
> On Mon, Feb 16, 2009 at 11:44:04AM +0000, Garth N. Wells wrote:
>>
>> Anders Logg wrote:
>>> On Mon, Feb 16, 2009 at 11:30:46AM +0000, Garth N. Wells wrote:
>>>> Anders Logg wrote:
>>>>> On Mon, Feb 16, 2009 at 11:52:54AM +0100, Johan Hake wrote:
>>>>>> On Monday 16 February 2009 11:31:36 Anders Logg wrote:
>>>>>>> On Mon, Feb 16, 2009 at 10:12:21AM +0000, Garth N. Wells wrote:
>>>>>>>> Anders Logg wrote:
>>>>>>>>> On Mon, Feb 16, 2009 at 10:36:52AM +0100, Johan Hake wrote:
>>>>>>>>>> On Sunday 15 February 2009 21:23:44 DOLFIN wrote:
>>>>>>>>>>> One or more new changesets pushed to the primary dolfin repository.
>>>>>>>>>>> A short summary of the last three changesets is included below.
>>>>>>>>>>>
>>>>>>>>>>> changeset:   5701:d3661203791d9c7707695c59adbbd3a2e20a220c
>>>>>>>>>>> tag:         tip
>>>>>>>>>>> user:        Anders Logg <[email protected]>
>>>>>>>>>>> date:        Sun Feb 15 21:23:36 2009 +0100
>>>>>>>>>>> files:       dolfin/function/Function.cpp
>>>>>>>>>>> description:
>>>>>>>>>>> Move code from Function copy constructor to assignment operator and
>>>>>>>>>>> call assignment operator from copy constructor
>>>>>>>>>> I liked Garth solution better.
>>>>>>>>>>
>>>>>>>>>>  1) A copy constructor that, just copies the Function if it has
>>>>>>>>>>     a FunctionSpace.
>>>>>>>>>>  2) The assignment operator works only for discrete Functions.
>>>>>>>>>>
>>>>>>>>>> We could add an interpolate() (or something) function that
>>>>>>>>>>
>>>>>>>>>>   v.interpolate(*_vector, *_function_space);
>>>>>>>>> We already have exactly such a function.
>>>>>> Do we?
>>>>> Yes:
>>>>>
>>>>>   /// Interpolate function to given function space
>>>>>   void interpolate(GenericVector& coefficients, const FunctionSpace& V) 
>>>>> const;
>>>>>
>>>>>>>>>> Then the user can explicitly create a discrete function of its
>>>>>>>>>> user-defined Function. Now the user gets this as an implicitly result
>>>>>>>>>> of a function copy, which make litle sense to me.
>>>>>>>>>>
>>>>>>>>>> But that's just me :)
>>>>>>>>> I like it. Other opinions?
>>>>>>>> It is neat, but I would prefer any interpolation to be more explicit so
>>>>>>>> that it's clear what's going on. A copy should be a straight copy.
>>>>>>>>
>>>>>>>> Garth
>>>>>>> ok. I've changed it back. See if it looks ok.
>>>>>> Now a user cannot copy a Function that is not a discrete function, which 
>>>>>> was 
>>>>>> the case before we started all this. 
>>>>> Wasn't that the point? It's not possible to copy the eval() operator.
>>>>>
>>>> It is if a MyFunction object is copied to a MyFunction object, which we 
>>>> couldn't do before. My change made this possible.
>>>>
>>>> Garth
>>> What's the point of that? It's like copying half a Function.
>>>
>> No, it's a copy.
> 
> Only when assigning between two MyFunction objects.
> 
>>> If I do
>>>
>>>   v = w;
>>>
>>> I expect v to be in everything essential the same as w.
>>>
>> If you do
>>
>>    MyFuncion f0;
>>    MyFunction f1 = f0;
>>
>> f0 and and f1 will be the same. The assignment operator is a separate story.
> 
> What if you do 
> 
>   MyFunction f0;
>   MyOtherFunction f1 = f0;
> 
> ?
> 

I expect that you'll get an error when you try to call eval().

Garth

> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> DOLFIN-dev mailing list
> [email protected]
> http://www.fenics.org/mailman/listinfo/dolfin-dev


_______________________________________________
DOLFIN-dev mailing list
[email protected]
http://www.fenics.org/mailman/listinfo/dolfin-dev

Reply via email to