# Conforming mesh refinement for quads/hex elements

The context - I'm working with a spectral FE (higher order interpolation at GLL nodes) code on conforming hexahedral meshes, and our PI is interested in improving mesh quality, possibly with adaptive refinement. However, the only local refinement schemes I know of for hexes involve nonconforming meshes/hanging nodes, which don't tend to work so well for spectral FE methods.

The conforming mesh refinement schemes I'm familiar with involve essentially splitting a 2x2 set of quads into a 3x3 set (or equivalently, splitting the middle node of the 2x2 set of quads into 9 new nodes in 2D), as below.

I only know of conforming adaptivity using some mesh metric; is there a way to use instead local error indicators to drive adaptivity in a conforming manner?

For the how part referred to in the previous answer, conforming Quad or Hex mesh refinement is most likely going to use an algorithm based on the work of R. Schneiders' 2- and 3- refinement algorithms. These methods are used in mesh generation. Two papers that I happen to have that do adaptive conforming quad refinement are:

"A new fast hybrid adaptive grid generation technique for arbitrary two-dimensional domains" by Ebeida et al, Int. J. Num. Meth. Eng. 84:305-329 (2010) who use 2-refinement algorithms and show time dependent examples,

and a preprint

"Conformal Refinement of Unstructured Quadrilateral Meshes" by Garimella, who uses 3-refinement and whose source I don't remember. (Both of these are 2-D, but Schneiders presents 3D algorithms, too.)

The question refers to applying a conforming algorithm using some local error estimate. The papers I cite show adaptive, local (h-)refinement, but don't say much about the decision of when to subdivide and coalesce. For the spectral approximation, one approach would be to use an element-local interpolation estimate like Cathy Mavriplis did in her dissertation, or an adjoint based estimate like that used by Matt Willyard in his dissertation. These would indicate that an element needs to be refined. You could then apply the conforming h-adaptation as in the papers above to satisfy the prediction that the estimate provides.

The spectral algorithm, however, will prefer to increase the order over subdividing elements if the solution is smooth. That will lead to (functionally) non-conforming meshes locally. If that is the question that is really being asked, then no, I don't see a way of doing conforming order refinement.

• Thanks David. Two things I noticed - Matt's work is mainly in 1D, and Cathy's work (at least, that I've seen) is using DG. Both alleviate the issue with spectral methods at hanging nodes, which is continuity at the nodal points, which seems common to most spectral finite element methods. Aug 29, 2013 at 1:45
• Both Matt's and Cathy's work are CG. You might also want to look into papers on non-conforming CG work by Ron Henderson and by Paul Fischer if CG is what you are using. Matt's work concentrated on the adaptivity part, but in multiple dimensions the mortar method would be used. My work with nonconforming approximations has been on DG and what is now being known as spectral difference methods. Aug 29, 2013 at 12:53
• I found a CG example of Cathy's work, which treats the issue continuity at transfer nodes. Thanks for the heads up. Aug 29, 2013 at 13:01

In practice, everyone who uses quads or hexes uses non-conforming mesh refinement because the conforming methods are just too unwieldy. The only alternative I can think of would be that you start with a triangular (tetrahedral) mesh and get your quad (hex) mesh by subdividing the triangles (tets). Then, when you know which quads you want to refine, you go back to the triangular mesh, refine it in some conforming way into another triangular mesh, and get your next quad mesh by subdividing the refined triangles (same for tets).

• Thanks for the response. That sounds fairly unwieldy as well, unfortunately. Aug 28, 2013 at 20:07

You can always choose which elements to refine by computing a local error estimator/indicator for each cell, picking a cutoff value, and refining every cell beyond the cutoff. This is independent of whether the refinement is conforming or non-conforming. If you are using a conforming refinement strategy that works on blocks of cells (2x2 to a 3x3 as you mention), then you can choose to refine a 2x2 block of cells if any of the individual cells need refinement, if all of the cells need refinement, or some combination in between. You can also try projecting the cell values onto the nodes and refine nodes instead.

The bookkeeping is more complicated, but you can also make a conforming refinement in 3D using basically the same strategy. I.e., you can make a 2x2x2 block of cells into a 3x3x3 block.

The real trouble with conforming refinement strategies is that you have these topologically odd elements inserted with potentially lousy shape properties. The question then is what to do when refining one of those elements. Do you just follow the same rule, or do you try to do some tricks to help maintain the shape regularity? Non-conforming refinements don't have these problems.

Finally, it may be commonplace to refer to them as non-conforming refinements, but most hanging node refinements that I know of, use constraints along the element interfaces to force the refined elements into a conforming space. They look like non-conforming elements, but for continuous Galerkin schemes, the underlying elements do conform.