← Back to team overview

dolfin team mailing list archive

Re: Removal of constructor Function(V, x)?

 

On Tue, Nov 22, 2011 at 09:33:25PM +0000, Garth N. Wells wrote:
> On 22 November 2011 21:30, Anders Logg <logg@xxxxxxxxx> wrote:
> > On Tue, Nov 22, 2011 at 10:16:54PM +0100, Marie E. Rognes wrote:
> >> On 11/22/2011 09:55 PM, Anders Logg wrote:
> >> >On Tue, Nov 22, 2011 at 08:45:30PM +0000, Garth N. Wells wrote:
> >> >>
> >> >>On 21 Nov 2011, at 21:53, "Marie E. Rognes"<meg@xxxxxxxxx>  wrote:
> >> >>
> >> >>>
> >> >>>On 21. nov. 2011, at 21:52, Anders Logg<logg@xxxxxxxxx>  wrote:
> >> >>>
> >> >>>>On Mon, Nov 21, 2011 at 08:46:13PM +0000, Garth N. Wells wrote:
> >> >>>>>On 21 November 2011 13:07, Anders Logg<logg@xxxxxxxxx>  wrote:
> >> >>>>>>On Sun, Nov 20, 2011 at 11:55:43PM +0100, Anders Logg wrote:
> >> >>>>>>>On Sun, Nov 20, 2011 at 11:49:42PM +0100, Marie E. Rognes wrote:
> >> >>>>>>>>
> >> >>>>>>>>On 20. nov. 2011, at 23:31, Anders Logg<logg@xxxxxxxxx>  wrote:
> >> >>>>>>>>
> >> >>>>>>>>>Is anyone using the Function constructor that takes a vector as input
> >> >>>>>>>>>argument?
> >> >>>>>>>>>
> >> >>>>>>>>>Function u(V, x);
> >> >>>>>>>>>
> >> >>>>>>>>Yes.
> >> >>>>>>>Does it work? In parallel?
> >> >>>>>>>
> >> >>>>>>>Does it not work to instead use
> >> >>>>>>>
> >> >>>>>>>  x = u.vector()
> >> >>>>>>>
> >> >>>>>>>?
> >> >>>>>>>
> >> >>>>>>>If you need it, we should keep it but add an error message that it
> >> >>>>>>>doesn't work in parallel, unless it does...
> >> >>>>>>Any more input on this? There are several options:
> >> >>>>>>
> >> >>>>>>1. Remove this constructor
> >> >>>>>>
> >> >>>>>>2. Throw an error when running in parallel
> >> >>>>>>
> >> >>>>>>3. Check that the input vector makes sense
> >> >>>>>>
> >> >>>>>>The last one is problematic since I don't see an easy way to perform
> >> >>>>>>the check, other than calling get_local and having it fail.
> >> >>>>>>
> >> >>>>>I haven't heard any reason why it can't be removed. We may need to fix
> >> >>>>>assignment (re earlier discussion on assign) to just copy values and
> >> >>>>>not the whole object so that a user can get the vector and then assign
> >> >>>>>values to it without messing up the ghosting.
> >> >>>>Sounds good, but I want to wait for Marie to comment before I remove
> >> >>>>it. She is using it.
> >> >>>>
> >> >>>>Marie? Does it work for you to use x = u.vector()?
> >> >>>>
> >> >>>Probably. However removing the constructor would be changing parts of the basic interface, which I think is a bad idea.
> >> >>>
> >> >>>Add a warning if you want to deprecate it later.
> >> >>>
> >> >>Isn't the time to make an interface change now rather than later?
> >>
> >> I would say that the time to make an interface change before
> >> 1.0 has passed: I see more value in sticking to
> >> to what we have claimed, than in fixing this single instance.
> >>
> >> >True, but last time we discussed this was 1 hour or so before the
> >> >release of 1.0-rc1. Now we have a whole week to 1.0-rc2... :-)
> >> >
> >> >Marie, can you check again if that constructor is necessary?
> >>
> >> I'm typically using it for the same as the dolfin la/eigenvalue demo
> >> is using it for.
> >> Do you have a replacement syntax available?

Marie, I think this should work:

  u = Function(V)
  u.vector()[:] = x

where x is the solution you get from the eigenvalue problem.

Can you see if that works?

--
Anders



> >> That said, I'm not going to lose any sleep over this.
> >
> > Is everyone ok with throwing an error that it doesn't work in
> > parallel?
> >
>
> I don't think that is ideal.
>
> I building now with the constructors commented out to see how many
> changes would be required.



Follow ups

References