From: Roy S. <roy...@ic...> - 2010-10-22 16:06:06
|
On Fri, 22 Oct 2010, John Peterson wrote: > On Fri, Oct 22, 2010 at 10:43 AM, Andrew Riddle <wa...@gm...> wrote: >> I am relatively new to libmesh. I would like to be able to use it to perform >> refinement of my 3D meshes. I want to be able to read my mesh into libmesh, >> perform refinement on a subset of elements that I select by a special >> criteria that I have and then write my mesh back out to a file. I have >> successfully done a uniform refinement of my mesh using libmesh, but if I >> try to refine only a subset of elements many hanging nodes are produced. Is >> there a way to remove these hanging nodes or to have libmesh modify the >> neighbors of elements targeted for refinement in such a way so that there >> are no hanging nodes after the refinement process finishes? Or is there a >> way to prevent this problem by imposing some kind of constraints on the >> refinement process? > > How would you remove the hanging nodes while still having a valid mesh? You replace the coarse elements at a hanging node with sets of refined elements that conform to all the nodes. In 2D that's easy, especially if you start with a level-1 restriction, at least if you allow for turning an all-quad mesh into quads-and-triangles. > In 3D this is a tricky problem. Agreed. > To "remove" them, they'd have to be connected to some other, > non-hanging, nodes, perhaps by inserting additional Tets (?) but > LibMesh doesn't currently support any refinement patterns of this > type. I'd like to see a patch that did this. At each refinement step we'd want to coarsen the special conformal children, then refine as normal, then look for hanging nodes and create new special conformal children as necessary. Only two catches: first, the refinement flagging phase would have to be conformal-children aware; and second, this would be a lot of work that none of the libMesh developers are going to be motivated to do, since our own assembly routines all handle non-conforming meshes. --- Roy |