<div dir="ltr"><div dir="ltr">On Wed, Feb 8, 2023 at 7:50 PM Nicholas Arnold-Medabalimi <<a href="mailto:narnoldm@umich.edu">narnoldm@umich.edu</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">Hi Matt<br><br>Could you clarify what DMPlexOrient is doing as far as the metric for compatibility for orientation? <br></div></blockquote><div><br></div><div>It makes sure that the orientation of k-faces agree across processes (through the SF). If faces are created</div><div>in parallel, without communication, there is no guarantee that both sides choose the same orientation.</div><div><br></div><div>It also orients the serial edges, so you can throw in an un-oriented mesh and it will fix it.</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 dir="ltr">Sincerely<br>Nicholas </div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jul 25, 2022 at 11:54 AM Matthew Knepley <<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>> wrote:<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 dir="ltr">On Mon, Jul 25, 2022 at 10:11 AM Nicholas Arnold-Medabalimi <<a href="mailto:narnoldm@umich.edu" target="_blank">narnoldm@umich.edu</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">Hi Petsc users,<br><br>I have been working on how to read in meshes into a DMPlex object. The process of building the cones has been relatively straightforward. The mesh files in question have sets of faces that I use to derive the cell vertex cones. The method is basically identical to that used in DMPlexCreateFluent. After I setup the DMPlex cones and call Symmetrize and Stratify, I then load in all the coordinates corresponding to the vertices and then use DMInterpolate to generate the intermediate edges<br><br>The issue that I am running into is that because I am deriving the cell-vertex relationship from independent sets of face-vertex relationships, I can end up with cells that have improper mesh ordering. <br><br>For example a cell with the coordinates:<br>point 0: 0.000000 0.000000 <br>point 1: 0.000000 2.500000 <br>point 2: 0.100000 0.000000 <br>point 3: 0.100000 2.500000<br><br>As you can see instead of going around the perimeter of the cell the path from 1 to 2 instead bisects the cell. <br><br>I can manually reorder these after I read in the coordinates by manually checking right-handedness but I was wondering if there is an easier way to reorder the cones? If there isn't once I do reorder the cones manually is there anything I need to do as far as station keeping on the DM?<br></div></blockquote><div><br></div><div>The function DMPlexOrient() reorders the cones so that all cells have compatible orientation. However, it will not catch this because it is</div><div>an illegal ordering for a quad. This order is called a DM_POLYTOPE_SEG_PRISM_TENSOR in Plex because it is the tensor product of</div><div>two segments (so that opposite sides have the same orientation). If all your cells are this way, you can just mark them as tensor segments</div><div>and you are done. If only some turn out this way, then we have to write some code to recognize them, or flip them when you create the cones.</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 dir="ltr">I apologize if I missed any resources on this. <br><br>Thanks<br>Nicholas<br clear="all"><div><br></div>-- <br><div dir="ltr"><div dir="ltr"><div><div dir="ltr"><div style="font-family:arial;font-size:small"><font color="#000000">Nicholas Arnold-Medabalimi<br><br></font><span style="font-family:sans-serif;font-size:14px">Ph.D. Candidate</span><font color="#000000"><br>Computational Aeroscience Lab<br>University of Michigan</font></div></div></div></div></div></div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><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>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr"><div dir="ltr"><div><div dir="ltr"><div style="font-family:arial;font-size:small"><font color="#000000">Nicholas Arnold-Medabalimi<br><br></font><span style="font-family:sans-serif;font-size:14px">Ph.D. Candidate</span><font color="#000000"><br>Computational Aeroscience Lab<br>University of Michigan</font></div></div></div></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>