<div dir="ltr">On Wed, Mar 6, 2013 at 2:54 PM, Richard Tran Mills <span dir="ltr"><<a href="mailto:rtm@eecs.utk.edu" target="_blank">rtm@eecs.utk.edu</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
  

    
  
  <div bgcolor="#FFFFFF" text="#000000">
    Hi Folks,<br>
    <br>
    I am adding some pointers to scatter contexts within the internal
    "data" struct for DMShell, e.g. the 'gtol' and 'ltog' members in<br>
    <br>
    typedef struct  {<br>
      Vec Xglobal;<br>
      Vec Xlocal;<br>
      Mat A;<br>
      VecScatter *gtol;<br>
      VecScatter *ltog;<br>
    } DM_Shell;<br>
    <br>
    First question: When in DMCreate_Shell we do<br>
    <br>
    ierr     = PetscNewLog(dm,DM_Shell,&shell);CHKERRQ(ierr);<br>
    <br>
    
    will this guarantee that gtol and ltog are set to NULL, or do I need
    to explicitly set these somewhere?  I see that the allocated memory
    is zeroed but I'm not sure how NULL might actually be represented in
    memory.<br></div></blockquote><div><br></div><div style>Yes, they will be NULL.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
    I have also added some new functions like
    DMShellDefaultGlobalToLocalBegin()/End(), and in DMCreate_Shell I do
    <br>
    <br>
      dm->ops->globaltolocalbegin =
    DMShellDefaultGlobalToLocalBegin;<br>
      dm->ops->globaltolocalend   =
    DMShellDefaultGlobalToLocalEnd;<br>
    <br>
    The user can set different routines via
    DMShellSetGlobalToLocalBegin()/End(), but if the user only sets the
    gtol and ltog scatter contexts, then the default routines will
    perform the appropriate scatter operations.<br>
    <br>
    Second question: What is the proper "PETSc way" to throw an error if
    gtol is NULL and tell the user that
    DMShellDefaultGlobalToLocalBegin() cannot be used without first
    setting the scatter context via DMShellSetGlobalToLocalVecScatter()?<br></div></blockquote><div><br></div><div style>SETERRQ(comm, PETSC_ERR_ARG_WRONGSTATE, "DMShellDefaultGlobalToLocalBegin() cannot be used without first setting the scatter context via DMShellSetGlobalToLocalVecScatter()");</div>
<div style><br></div><div style>   Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000">

    Thanks,<br>
    Richard<span class=""><font color="#888888"><br>
    <br>
    <br>
    <br>
    <pre cols="72">-- 
Richard Tran Mills, Ph.D.
Computational Earth Scientist      | Joint Assistant Professor
Hydrogeochemical Dynamics Team     | EECS and Earth & Planetary Sciences
Oak Ridge National Laboratory      | University of Tennessee, Knoxville
E-mail: <a href="mailto:rmills@ornl.gov" target="_blank">rmills@ornl.gov</a>  V: <a href="tel:865-241-3198" value="+18652413198" target="_blank">865-241-3198</a> <a href="http://climate.ornl.gov/~rmills" target="_blank">http://climate.ornl.gov/~rmills</a>
</pre>
  </font></span></div>

</blockquote></div><br><br clear="all"><div><br></div>-- <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
</div></div>