sieve-dev nonconforming mesh

Jed Brown jed at 59A2.org
Wed May 7 04:28:47 CDT 2008


I'm particularly interested in the case of hp-nonconforming hex elements.  In
[1], some of the issues are discussed, but I found the solution outlined there
to be incomplete since the constrained degrees of freedom were removed by
manipulating the global matrix.  Browsing the Deal.II source, it appears that
this weakness has been removed.  Also, as illustrated in the paper, it appears
that the basis chosen on an hp-nonconforming face may be poor for high order.  I
haven't spent enough time to see if this persists in the current source.  Since
my interest is in matrix-free application of the high order matrix, it is
important that the mapping from unconstrained element basis to constrained
global basis is fast, even for very high order.

If we restrict ourselves to a 1-h-nonconforming mesh (the case I'm most
interested in is hexahedral with nodal tensor product basis) then generating the
constraints requires identifying the h-dominant face on every h-constrained
face, picking a basis for it with order equal to the lowest order of the
elements, and registering element constraints against this face basis.  There
are a reasonably small number of constraint matrices, so a key and the indices
are all that need to be stored for each face.  A similar process can be applied
to additional edge constraints.  Then application of the element matrix
involves:

for each dominant face:
  for each edge:
    global -> unconstrained face (apply edge constraints)
  global -> face interior (unconstrained)

for each element:
  for each element face:
    associated dominant face -> unconstrained element (apply face constraints) (*)
  global -> element interior (unconstrained)
  element operation applied by tensor product
  element interior -> global
  for each element face:
    unconstrained element -> associated dominant face (apply face constraints) (*)

for each dominant face:
  for each edge:
    face -> global (apply edge constraints)
  face interior -> global (unconstrained)


This process requires we identify the h-dominant faces and have some local
storage at each face.  Also, we need to quickly identify the h-dominant face
associated with an element face.  The inverse (dominant face -> element) is not
required.  For h-conforming elements, every face is h-dominant so a Sieve is
natural for this traversal and I know how to proceed.  The approach outlined
above allows efficient p-adaptivity to very high order (I have done something
similar up to order (100,100,100)) assuming a sufficiently sparse matrix is used
for preconditioning.  However, it is desirable to also use h-adaptivity and an
h-nonconforming mesh.  Does anyone have suggestions for a natural way to
represent this case?

Note: If the element face has order (p,q) and the face basis is order (r,s) then
the constraint matrix associated with steps (*) is pq by rs which is more memory
than everything else we touch while applying the element matrix.  I'm interested
in the range 2 <= p,q,r,s <= 12 (at least) and this memory gets to be
significant on the high end.  Fortunately, this matrix can also be applied by
tensor product which is asymptotically faster (probably irrelevant) and touches
much less memory (likely to be important).

[1] Bangerth & Kayser-Herold: http://www.math.tamu.edu/~bangerth/publications/2006-hp.pdf


Thanks,

Jed




More information about the sieve-dev mailing list