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
