<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Nov 27, 2017 at 8:08 PM, Jed Brown <span dir="ltr"><<a href="mailto:jed@jedbrown.org" target="_blank">jed@jedbrown.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I don't know the answer to your question (Matt?), but do you really need<br>
to reorder the entire mesh or would it be sufficient to label your<br>
points with their original numbering?</blockquote><div><br></div><div>Maybe I am wrong, but I think it amounts to the same thing. If we are going to output things in parallel,</div><div>we would need to communicate to he writing process, which this essentially does.</div><div><br></div><div>I thought I responded, but what has to happen is that the SF for this reordering must be decimated to</div><div>produce a subSF for the subDM. Its just not simple, so I have not had the free time to work it out.</div><div><br></div><div>   Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">
Blaise A Bourdin <<a href="mailto:bourdin@lsu.edu">bourdin@lsu.edu</a>> writes:<br>
<br>
> Hi,<br>
> I am fighting with natural ordering in DMplex with multi-fields / multi components DM.<br>
> I need to read / write files in a distribution-independent ordering. The natural way to do so is to define the natural ordering as that of the file, then call DMPlexGlobalToNaturalBegin/End before VecView:<br>
> The pseudo code would be<br>
><br>
>   DMPlexCreateFromFile(PETSC_<wbr>COMM_WORLD,ifilename,<wbr>interpolate,&dmUAS);<br>
>   // create default section associated with a complicated layout of multiple fields<br>
>   // (U,\alpha,\sigma)<br>
>   DMSetUseNatural(dmUAS,PETSC_<wbr>TRUE);<br>
>   DMPlexDistribute(dmUAS,0,&<wbr>migrationSF,&dmDist);<br>
><br>
>   DMGetGlobalVector(dmDist,&UAS)<wbr>;<br>
>   DMGetGlobalVector(dmDist,&<wbr>UASNatural);<br>
>   DMPlexGlobalToNaturalBegin(<wbr>dmDist,UAS,UASNatural);<br>
>   DMPlexGlobalToNaturalEnd(<wbr>dmDist,UAS,UASNatural);<br>
>   // Do my I/O stuff using UASNatural<br>
><br>
> If I try to do the same thing one field at a time, things break:<br>
> Say that I get the subDM for the first field (U):<br>
><br>
>   DMCreateSubDM(dmDist,1,&<wbr>fieldU,&ISU,&dmU);<br>
><br>
> Then dmU->useNatural is PETSC_FALSE and  I cannot compute dmU->sfnatural using DMPlexCreateGlobalToNaturalSF since I do not have the “sequential” version of dmU.<br>
><br>
> What is the proper way to handle this situation? Creating sequential subDMs and calling DMDistribute on each of them is ugly and possibly costly.<br>
><br>
> Regards,<br>
><br>
> Blaise<br>
><br>
> --<br>
> Department of Mathematics and Center for Computation & Technology<br>
> Louisiana State University, Baton Rouge, LA 70803, USA<br>
> Tel. <a href="tel:%2B1%20%28225%29%20578%201612" value="+12255781612">+1 (225) 578 1612</a>, Fax  <a href="tel:%2B1%20%28225%29%20578%204276" value="+12255784276">+1 (225) 578 4276</a> <a href="http://www.math.lsu.edu/~bourdin" rel="noreferrer" target="_blank">http://www.math.lsu.edu/~<wbr>bourdin</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><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.caam.rice.edu/~mk51/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div>
</div></div>