On 3/31/22 14:36, Jau-Uei Chen wrote:
*** Caution: EXTERNAL Sender ***

Sorry for causing the confusion. What I am looking for is to implement HDG with the discontinuous finite element defined in the splitted mortars (blue):

  0 - - - - - -  0 0  0 - - 0 0 - - 0
  |                | |   |      |  |       |
  |                | 0  0 - - 0 0 - - 0
  |                | 0 0 - - 0 0 - - 0
  |                | |   |      |  |       |
  0 - - - - - -  0 0  0 - - 0 0 - - 0

instead of the full-sided (red) one which is currently used in dealii where we put the constraint and hence get a full-sided one.

  0 - - - - - -  0 0  0 - - 0 0 - - 0
  |                | |   |      |  |       |
  |                | |  0 - - 0 0 - - 0
  |                | 0
  |                | |  0 - - 0 0 - - 0
  |                |  |   |      |  |       |
  0 - - - - - -  0 0  0 - - 0 0 - - 0

Is it possible to do so in dealii?

(A comment first: I think in the second picture, you wanted to use only two red DoFs, not three, on the common edge, right?)

I see. That may be possible, but it is difficult.

The way things are implemented is that there is a finite element space associated with every edge in the mesh (in 2d). This means that there is a finite element space associated with the coarse edge of the left cell, and one with each of the small edges of the cells on the right, and then constraints are used to make sure that the two are the same.

What you now want is to associate a finite element space with the coarse face *that depends on the fact that that face is refined*. In other words, you would want to use a different finite element space for the four edges of the cell on the left: One space for the left, top, and bottom face, and a different one for the face on the right that has neighboring cells. This is not how the internal data structures are set up currently.

If you *had* to implement something like this, then the way to do it would probably be to implement the space that corresponds to your top example and use it on *all* edges. Then you would create hanging node constraints as usual, and after that you would loop over the mesh and add constraints yourself for all edges that are not further refined; these constraints would bring the 2+2 DoFs back down to the two you want on these edges.

This approach is not convenient, because it's not already implemented in deal.II, but it probably wouldn't be terribly hard to implement. You'd have to re-implement something like FEFaceQ, though, because you now want the space to not be defined on a face, but on each of its children (whether the edge is refined or not doesn't actually matter here). But it can be done, and you might be interested in seeing something like this in practice in this paper:

https://www.math.colostate.edu/~bangerth/publications/2016-nonconforming.pdf

Best
 W.


--
------------------------------------------------------------------------
Wolfgang Bangerth          email:                 [email protected]
                           www: http://www.math.colostate.edu/~bangerth/

--
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- You received this message because you are subscribed to the Google Groups "deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/dealii/edc92581-f31d-4551-6bf3-30bdc317018a%40colostate.edu.

Reply via email to