<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Mar 11, 2015 at 3:34 AM, John O'Sullivan <span dir="ltr"><<a href="mailto:jp.osullivan@auckland.ac.nz" target="_blank">jp.osullivan@auckland.ac.nz</a>></span> wrote:<br><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>
<div style="direction:ltr;font-family:Tahoma;color:rgb(0,0,0);font-size:10pt">Hi all,<br>
<br>
I've managed to get myself very confused about how to use DMPlex correctly for a distributed Finite Volume grid...<br>
<br>
My understanding was that along partition boundaries the ghost cells are used store cell information from neighbouring partitions so that the fluxes can be calculated.<br>
<br>
Though debugging through ex11 it seems like overlap is set equal to 1?<br>
<br>
I'm solving a simple pressure-diffusion equation on a 1D column (from an exo grid) which works fine on a single processor but not in parallel. I'm certainly not setting things up right or labeling correctly...<br>
<br>
Could someone please explain the most appropriate way to set up and label the DM, whether the overlap should be 0 or 1 and whether ghost cells should be placed on internal partition boundaries.<br></div></div></blockquote><div><br></div><div>Yes, for FV the partition overlap should be 1, as it is in ex11. This means that when the partition happens, we will</div><div>put a layer of cells on the other side of partition boundaries,</div><div><br></div><div>When DMPlexConstructGhostCells() is called, it will put ghost cells on the other side of the true boundary. Both</div><div>kinds of cells will be separated from interior cells by the DMPlexGetHybridBounds(&cMax), where cMax is the</div><div>first ghost cell.</div><div><br></div><div>Now you still need a way to get rid of faces between ghost cells (which only occur in cells across a partition boundary).</div><div>To do this, you use the "ghost" label we make during partitioning:</div><div><br></div><div>    ierr = DMPlexGetLabel(dm, "ghost", &ghostLabel);CHKERRQ(ierr);</div><div>    ierr = DMLabelGetValue(ghostLabel, face, &ghost);CHKERRQ(ierr);</div><div>    if (ghost >= 0) continue;</div><div><br></div><div>What exactly is going wrong?</div><div><br></div><div>   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><div style="direction:ltr;font-family:Tahoma;color:rgb(0,0,0);font-size:10pt">
Thanks!<br>
John<br>
<div><br>
<div style="font-family:Tahoma;font-size:13px">
<div style="font-family:Tahoma;font-size:13px">
<div style="font-family:Tahoma;font-size:13px">
<pre>--<br>Dr John O'Sullivan
Lecturer
Department of Engineering Science
University of Auckland, New Zealand
email: <a href="https://lists.mcs.anl.gov/mailman/listinfo/petsc-dev" target="_blank">jp.osullivan at auckland.ac.nz</a>
tel: +64 (0)9 923 85353</pre>
</div>
</div>
</div>
</div>
</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></div>