<div dir="ltr"><div dir="ltr">On Mon, Apr 1, 2019 at 9:12 PM Boris Boutkov via petsc-dev <<a href="mailto:petsc-dev@mcs.anl.gov">petsc-dev@mcs.anl.gov</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  

    
  
  <div bgcolor="#FFFFFF">
    <p>Hello all,</p>
    <p>I've been working on the libMesh - PETSc interface for utilizing
      gmg/fieldsplit on the command line by creating DMShells; things
      are seemingly in pretty good shape at this point, so thanks much
      for the support along the way!</p>
    <p>The last lingering issue of the implementation is that I still
      have a little bit of dependency on <span class="gmail-m_-4051634772101327645pl-s">PETSc
        private/dmimpl.h. In short, during our implementation of
        DMCreateSubDM I try and get some of the parent DMs function
        pointers, specifically dm->ops->{</span><span class="gmail-m_-4051634772101327645pl-s"><span class="gmail-m_-4051634772101327645pl-smi">coarsen, </span></span><span class="gmail-m_-4051634772101327645pl-smi">refine,
      </span><span class="gmail-m_-4051634772101327645pl-smi">createinterpolation, </span><span class="gmail-m_-4051634772101327645pl-smi">createrestriction,</span><span class="gmail-m_-4051634772101327645pl-smi">
        and createsubdm</span>}, which then I set for the subDM using
      DMShellSet* by passing in the parent DM pointer directly.<br>
    </p>
    <p>I'd like to remove this private dmimpl.h dependency but removing
      the header gives me compilation errors - "invalid use of
      incomplete type" pointing to PETsc DM struct for the above calls.
      As far as I understand it, this means that I would need public API
      similar to the DMShellSet* methods but now instead DMShellGet*.</p>
    <p> If the above's the case, any reason this doesn't exist yet
      outside of lack of prior need? And how much work would introducing
      this require? Or of course please let me know if there's some
      simple way around this that I may be missing.</p></div></blockquote><div>No, we just needed someone to ask. We will do this exactly like we do MATSHELL. We have to create an Enum that indexes</div><div>the DM methods. Then you can pass the Enum value when you Set/Get the methods. Its not hard, just some coding. Want to try :)</div><div><br></div><div>   Thanks,</div><div><br></div><div>     Matt</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div bgcolor="#FFFFFF">
    <p>Thanks as always for your time,</p>
    <p>- Boris<br>
    </p>
    <p><br>
    </p>
  </div>

</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div>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><br></div><div><a href="http://www.cse.buffalo.edu/~knepley/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div></div></div></div>