Matt, 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?
2) Okay that makes sense. 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 link <http://www.reproducibility.org/RSF/book/data/marmousi/paper_html/node2.html> 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? Thanks, Justin On Tue, Jan 20, 2015 at 5:45 AM, Matthew Knepley <[email protected]> wrote: > On Tue, Jan 20, 2015 at 3:06 AM, Justin Chang <[email protected]> wrote: > >> Hi all, >> >> I have a few simple questions regarding DMPlex mesh refinement, >> interpolation, and auxiliary data: >> >> 1) What exactly does DMPlexSetRefinementUniform do? Is it relevant only >> for the DMPlexCreateBoxMesh() function? >> > > Plex supports two types of refinement now. First, you can call a mesh > generator for refinement, like Triangle or TetGen. Second, > you can uniformly refine cells, although I have only coded this for > simplices and tensor products. The uniform refinement works > on any mesh, not just the builtin ones. > > >> 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? >> > > 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 > MarkBoundaryFaces() and LabelComplete(). For complex things, I use the > ExodusII format for marking faces. > > >> 3) If I have highly heterogeneous diffusivity or permeability (e.g., >> random permeability or a marmousi >> <http://www.caam.rice.edu/~benamou/OLD/marmousi.html>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? >> > > You have to explain more about what this data means. Is it cell-wise data? > If so, why do you need to interpolate? > Shouldn't it just be in P0? If not, you can project the P0 data into any > other space using either ProjectFunction() > or a slightly modified version of DMPlexComputeInterpolatorFEM(). > > Thanks, > > Matt > > >> Thanks, >> Justin >> > > > > -- > What most experimenters take for granted before they begin their > experiments is infinitely more interesting than any results to which their > experiments lead. > -- Norbert Wiener >
