<div class="gmail_quote">On Tue, Dec 7, 2010 at 21:52, Barry Smith <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov">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;">
<div id=":2qf">I like this model for its consistency. The "default" DM is currently essentially PetscLayout. But have resisted making the model public because it is yet one more object class people need to learn about to do anything, forcing people to know about DM (or PetscLayout) before they can create a vector. Plus all Vecs have a PetscLayout (hidden) even if they also have a more sophisticated DM as well, I don't like that because I think it can be confusing to people that sometimes there are two "DMS".<br>
</div></blockquote><div><br></div><div>I think, but could be terribly wrong, that the "flat" DM could be hidden.  In the default case, it's just a dispatch mechanism that the user wouldn't need to know about (I don't believe in explicitly passing a DM everywhere a Vec goes).  They could only possibly need the dispatch flexibility if they were already using DM, in which case they could use the more flexible DMVecView if they wanted to view it relative to a DM other than the embedded one.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div id=":2qf">
  IS, Vec, Mat, KSP (SNES and TS)  --> IS, DM, Vec, Mat, KSP. Yes it is just one more object but difficulty of use grows exponentially with number of object types.</div></blockquote></div><div><br></div>Yeah, not a change to take lightly, but still worth considering, I think.<br>
<div>DM currently serves several purposes, on different levels of the hierarchy.</div><div><br></div><div>1. It specifies an "overlap" in Dmitry/Matt language.  That is, it defines "local" spaces.</div>
<div>2a. It defines a function space for things like viewing and interpolation.</div><div>2b. It can coarsen and refine (so it knows about a continuum space that it is a subspace of).</div><div>3. It helps the user build residuals and preallocate matrices.</div>
<div><br></div><div>I have separated 3 from 2a because this API is only for the user (not other components of PETSc).  Most of 3 is specialized on the type of DM.</div><div><br></div><div>Jed</div>