<div dir="ltr"><div dir="ltr">On Mon, Jun 14, 2021 at 11:34 PM Adrian Croucher <<a href="mailto:a.croucher@auckland.ac.nz">a.croucher@auckland.ac.nz</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>
    <p>hi<br>
    </p>
    <div>On 15/06/21 12:21 pm, Matthew Knepley
      wrote:<br>
    </div>
    <blockquote type="cite">
      
      <div dir="ltr">
        <div class="gmail_quote"><br>
          <div>I admit that it is becoming complicated, but this can
            also be handled.</div>
          <div><br>
          </div>
          <div>The corner case only shows up when we distribute with
            overlap. Thus we could,</div>
          <div><br>
          </div>
          <div>1) Distribute the mesh without overlap</div>
          <div><br>
          </div>
          <div>2) Mark the global boundary using the former algorithm</div>
          <div><br>
          </div>
          <div>3) Distribute overlap = 1 using
            DMPlexDistributeOverlap(). DMPlexDistribute() just does
            these two steps at once if you ask for overlap.</div>
          <div><br>
          </div>
          <div>4) Use the former algorithm, with the boundary label we
            just made, to mark flux faces.</div>
        </div>
      </div>
    </blockquote>
    <p>That sounds like it might work. Do you think this perhaps
      slightly simpler version might also work?</p>
    <p>1) distribute mesh without overlap</p>
    <p>2) label boundary faces using DMPlexMarkBoundaryFaces()</p>
    <p>3) DMPlexDistributeOverlap()</p>
    <p>4) Un-label boundary faces with support size > 1 (i.e. the
      shared faces on the non-overlapped mesh- I think) - so the
      boundary label is now just the global boundary<br>
    </p>
    <p>5) loop over faces as in my original algorithm, labelling flux
      faces if they are either on the open boundary, or are not on the
      global boundary</p>
    <p>Unfortunately I can't test this at the moment - it looks like the
      Fortran interface for DMPlexDistributeOverlap() is missing?</p></div></blockquote><div>Yes, that does sound simpler. I will get the Fotran interface up today. I did not use the automatic version since we need to check for NULL.</div><div><br></div><div>  Thanks,</div><div><br></div><div>     Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>
    <p>- Adrian<br>
    </p>
    --
    <pre cols="72">Dr Adrian Croucher
Senior Research Fellow
Department of Engineering Science
University of Auckland, New Zealand
email: <a href="mailto:a.croucher@auckland.ac.nz" target="_blank">a.croucher@auckland.ac.nz</a>
tel: +64 (0)9 923 4611</pre>
  </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>