<div dir="ltr"><div dir="ltr">On Thu, Jul 11, 2019 at 9:06 AM Dongyu Liu - CITG via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov">petsc-users@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 dir="ltr">
<div id="gmail-m_-1845145102240307924divtagdefaultwrapper" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif" dir="ltr">
<p><span>Hi,</span></p>
<p><span><br>
</span></p>
<p><span>We want to incorporate the PETSc into our in-house FEM package. We found two ways to do the domain decomposition.</span></p>
<p><span>The first one is to read the mesh with partitioning, and the partitioning is done with gmsh. For this one, we need to do the index mapping (renumbering). We found that the mesh nodes cannot be shared by each processor (Is that true?).</span></p></div></div></blockquote><div>The parallel numbering of unknowns for PETSc (Vec and Mat) needs a contiguous set of non-overlapping indices for each process, so if "nodes" and "unknowns" are the same here, then no nodes cannot be shared. Plex treats these things independently. <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div id="gmail-m_-1845145102240307924divtagdefaultwrapper" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif" dir="ltr"><p><span> Then we need
 to provide the ghosted points information to the PETSc which can be obtained from the gmsh file. To implement this method, we need to provide the local and global mapping like AO in PETSc.</span></p></div></div></blockquote><div>You do need to provide a L2G mapping in order to give PETSc ghost information. I do not understand how this is related to AO, which is a global renumbering. <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div id="gmail-m_-1845145102240307924divtagdefaultwrapper" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif" dir="ltr"><p><span> We also need to use it with our own mesh data structure.</span></p>
<p><span>The second way is to use DMPlex to read the mesh and do the partitioning. For this, an interface should be provided to link the DMPlex mesh data structure and to our own mesh object to avoid changing too many places in our codes.</span></p></div></div></blockquote><div>Yes. I think GMsh just calls a common partitioner (Metis?) so you should be able to replicate it. Also, I think you can use a DMLabel to link the Plex object with your own mesh, meaning you can associate some integer with any part of the mesh you want. </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div id="gmail-m_-1845145102240307924divtagdefaultwrapper" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif" dir="ltr">
<p><span>I am just wondering which way is better, or do you have any other suggestion?</span></p></div></div></blockquote><div>If you plan on doing a lot of mesh manipulation by hand and want to control everything, the first option might be better.</div><div>On the other hand, if you use Plex, you could potentially take advantage of parallel loading and output, redistribution</div><div>and load balancing, adaptive refinement, and interfacing with the multilevel and block solvers in PETSc.</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 dir="ltr"><div id="gmail-m_-1845145102240307924divtagdefaultwrapper" style="font-size:12pt;color:rgb(0,0,0);font-family:Calibri,Helvetica,sans-serif" dir="ltr">
<p><span>Best,</span></p>
<p><span>Dongyu</span></p>
</div>
</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>