<div dir="ltr">Pushed<div><br></div><div>   Matt</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jul 16, 2015 at 1:51 PM, Barry Smith <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
   Then the documentation needs to make it very clear what it does (which is not much) and how it is VERY different than getting the vector from the DM.<br>
<br>
<br>
> On Jul 16, 2015, at 1:35 PM, Matthew Knepley <<a href="mailto:knepley@gmail.com">knepley@gmail.com</a>> wrote:<br>
><br>
> On Thu, Jul 16, 2015 at 1:31 PM, Barry Smith <<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>> wrote:<br>
><br>
> > On Jul 16, 2015, at 11:14 AM, Jed Brown <<a href="mailto:jed@jedbrown.org">jed@jedbrown.org</a>> wrote:<br>
<div class="HOEnZb"><div class="h5">> ><br>
> > Gianluca Meneghello <<a href="mailto:gianmail@gmail.com">gianmail@gmail.com</a>> writes:<br>
> ><br>
> >> Hi again,<br>
> >><br>
> >> I am now trying to write a vector to an HDF5, this time using a DM<br>
> >> structure to impose the vector layout.<br>
> >><br>
> >> Creating the vector with (as in src/dm/examples/tutorials/ex10.c)<br>
> >><br>
> >> DMCreateGlobalVector(da2D,&gauss);<br>
> >><br>
> >> every works fine, i.e. the hdf5 file has the correct layout given by the<br>
> >> dimension of the DM. On the other side, if I use:<br>
> >><br>
> >> VecCreate(PETSC_COMM_WORLD,&gauss);<br>
> >> VecSetSizes(gauss,PETSC_DECIDE,Nx*Ny);<br>
> >> VecSetDM(gauss,da2D);<br>
> ><br>
> > VecSetDM only associates a DM with the Vec.  It does not interpose<br>
> > itself into VecView.<br>
> ><br>
> > Should we change this so that creating a Vec of the correct size/block<br>
> > size/layout and associating a DM is equivalent?  Perhaps, but it's more<br>
> > nuanced than it might seem.<br>
><br>
>   Yikes. VecSetDM() seems a very dangerous and odd thing. Should it exist? If it exists it seems it should be exactly equivalent to creating the vector from the DM.<br>
><br>
> I tend to disagree. It is used to set a member variable which is not exposed:<br>
><br>
> find src -name "*.c" | xargs grep VecSetDM<br>
> src/dm/impls/composite/pack.c:  ierr = VecSetDM(*gvec, dm);CHKERRQ(ierr);<br>
> src/dm/impls/composite/pack.c:  ierr = VecSetDM(*lvec, dm);CHKERRQ(ierr);<br>
> src/dm/impls/da/dadist.c:    ierr = VecSetDM(*g, da);CHKERRQ(ierr);<br>
> src/dm/impls/da/dalocal.c:    ierr = VecSetDM(*g, da);CHKERRQ(ierr);<br>
> src/dm/impls/network/networkcreate.c:  ierr = VecSetDM(*vec,dm);CHKERRQ(ierr);<br>
> src/dm/impls/network/networkcreate.c:  ierr = VecSetDM(*vec,dm);CHKERRQ(ierr);<br>
> src/dm/impls/redundant/dmredundant.c:  ierr  = VecSetDM(*gvec,dm);CHKERRQ(ierr);<br>
> src/dm/impls/redundant/dmredundant.c:  ierr  = VecSetDM(*lvec,dm);CHKERRQ(ierr);<br>
> src/dm/impls/shell/dmshell.c:  ierr = VecSetDM(*gvec,dm);CHKERRQ(ierr);<br>
> src/dm/impls/shell/dmshell.c:  ierr = VecSetDM(*gvec,dm);CHKERRQ(ierr);<br>
> src/dm/impls/sliced/sliced.c:  ierr  = VecSetDM(*gvec,dm);CHKERRQ(ierr);<br>
> src/dm/interface/dmi.c:  ierr = VecSetDM(*vec, dm);CHKERRQ(ierr);<br>
> src/dm/interface/dmi.c:  ierr = VecSetDM(*vec, dm);CHKERRQ(ierr);<br>
> src/dm/interface/ftn-auto/dmf.c:*__ierr = VecSetDM(<br>
><br>
>  I don't like putting in a bunch of side-effects. Those come from actually being created from a DM, which is correct.<br>
><br>
>    Matt<br>
><br>
> ><br>
> > Why don't you want to just call DMCreateGlobalVector()?<br>
><br>
><br>
><br>
><br>
> --<br>
> What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
> -- Norbert Wiener<br>
<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div>
</div>