HDiv-HDG static condensation issue


I am having some trouble enable static condensation of HDiv-HDG for Stokes.
In particular, I use BDM-P0 pair with P1 tangential facet fespace.
There are simply no local DOFs. I mark the P0 pressure DOFs as interface DOFs and solve the flow around cylinder problem. The code works fine without condensation, but umfpack factorization fails when condensation flag is enabled.
Attached is the notebook that produce the error.

Any idea on the issue?


Attachment: stokes_divhdg.ipynb

see you are changing the FreeDofs, but you should modify the coupling types (local/interface/wirebasket)

The flag

L2(... lowest_ordre_wb=True)

is doing the job you need.


Hi Guosheng,

Changing the freedofs alone does not fix the static condensation. In your script you only make sure that the pressure dofs are appearing in the sparse factorization of the global problem, but haven’t told the assembly to keep the pressure dofs in the global system in the first place.

You need to fix the CouplingType of the (lowest order functions of the) pressure space. You can simply do this with

Q = L2(mesh, order=0, lowest_order_wb=True)

as the L2-space has a flag for this case. Otherwise you can Set the CouplingType of each dof of an FESpace through python manually.


Thank you both for the very quick reply. :slight_smile: