← Back to team overview

dolfin team mailing list archive

Re: [HG DOLFIN] Move code from Function copy?constructor to assignment operator and

 

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 <logg@xxxxxxxxx>
> >>>>>>>>> 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;

?

-- 
Anders

Attachment: signature.asc
Description: Digital signature


Follow ups

References