<div dir="ltr"><div><div>Matt,<br><br></div>1) I am not sure if I fully understand the difference between those two types of refinement you just described. If I understand this correctly, in the first method, Triangle and TetGen will refine the mesh based on the refinement limit (largest allowable cell size) but doesn't necessarily have  to uniformly refine the mesh, meaning the box/cube mesh could end up looking very distorted and unstructured with various element sizes. And in the second method, it ensures that all elements/cells are refined the same number of times no matter how what method was used to create the DMPlex mesh. Or am I missing something?<br><br></div>2) Okay that makes sense.<br><div><br></div><div>3) Generally speaking the data would be cell-wise, but hypothetically what if I had to work with data that's defined at the cell vertices? Data like the Marmousi set (btw the link I proved was sort of broken, here is another <a href="http://www.reproducibility.org/RSF/book/data/marmousi/paper_html/node2.html" target="_blank">link</a> to it) is pointwise, but i am sure it could be preprocessed and interpolated to cell-centered data. When I see your run examples in builder.py for SNES ex12, you have the flag "-mat_petscspace_order 1" even when -petscspace_order is 2. So I guess my question is does the order of the material/auxiliary FE necessarily have to match that of the trial function FE?<br><br></div><div>Thanks,<br>Justin<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 20, 2015 at 5:45 AM, Matthew Knepley <span dir="ltr"><<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class="">On Tue, Jan 20, 2015 at 3:06 AM, Justin Chang <span dir="ltr"><<a href="mailto:jychang48@gmail.com" target="_blank">jychang48@gmail.com</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 dir="ltr"><div><div><div><div><div><div>Hi all,<br><br></div>I have a few simple questions regarding DMPlex mesh refinement, interpolation, and auxiliary data:<br><br></div>1) What exactly does DMPlexSetRefinementUniform do? Is it relevant only for the DMPlexCreateBoxMesh() function?<br></div></div></div></div></div></blockquote><div><br></div></span><div>Plex supports two types of refinement now. First, you can call a mesh generator for refinement, like Triangle or TetGen. Second,</div><div>you can uniformly refine cells, although I have only coded this for simplices and tensor products. The uniform refinement works</div><div>on any mesh, not just the builtin ones.</div><span class=""><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 dir="ltr"><div><div><div><div></div>2) When I interpolate a given DMPlex mesh, what becomes of the "boundary" edge/face labels and/or IDs? That is, say if I had a 2D simplex element on the boundary domain and two of its vertices are assigned different marker ID's and/or labels, what will become of those intermediate mesh point(s) become?<br></div></div></div></div></blockquote><div><br></div></span><div>I do not mark them. That is up to the application, since there is no way to do it generically. What I do in my simple code is to use</div><div>MarkBoundaryFaces() and LabelComplete(). For complex things, I use the ExodusII format for marking faces.</div><span class=""><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 dir="ltr"><div><div><div></div>3) If I have highly heterogeneous diffusivity or permeability (e.g., random permeability or a <a href="http://www.caam.rice.edu/~benamou/OLD/marmousi.html" target="_blank">marmousi </a>data set) that need to be read in as auxiliary coefficients, would I need to manually interpolate the data for the intermediate mesh points before I project the field into the FE space, or does PETSc have an ability somewhere to automatically interpolate these values for you?<br></div></div></div></blockquote><div><br></div></span><div>You have to explain more about what this data means. Is it cell-wise data? If so, why do you need to interpolate?</div><div>Shouldn't it just be in P0? If not, you can project the P0 data into any other space using either ProjectFunction()</div><div>or a slightly modified version of DMPlexComputeInterpolatorFEM().</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-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div></div>Thanks,<br></div>Justin<span class="HOEnZb"><font color="#888888"><br></font></span></div><span class="HOEnZb"><font color="#888888">
</font></span></blockquote></div><span class="HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br><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>
</font></span></div></div>
</blockquote></div><br></div>