Hello,
Let V = HDiv(mesh, order = order, dirichlet=“bottom|right|top|left”)
Is it possible to compute the jump of a function u \in V in the tangential direction? I tried a few things, among others, using u.Other(), but this gives me the following error
illegal dnumsin Assemble BilinearForm ‘bfa’.
I’m trying to implement the weak form (4.20) of the following paper:
https://doi.org/10.1137/15M1047696
Thanks,
Sander
Hi Sander,
The problem is the sparsity pattern. If you just use the HDiv space as you do and set up a bilinear form, the sparsity pattern is set up so that only the normal dofs couple across element interfaces. For the DG formulation that you are looking for, you require a different sparsity pattern. The one that allows coupling between neighboring element dofs (also tangential) is obtained if you add the flag dgjumps=True or flags={“dgjumps”: True} to the HDiv space.
Best,
Christoph
Hi Christoph,
Thanks for the quick response. So I now have
V = HDiv(mesh, order = order, dirichlet=“bottom|right|top|left”, dgjumps=True)
and I would like to add the following IP-stabilization on interior facets:
a_stokes += SymbolicBFI(alpha*(u-u.Other())*(v-v.Other()), VOL, skeleton=True)
This still gives me the error
RuntimeError: SparseMatrixTM::AddElementMatrix: illegal dnumsin Assemble BilinearForm ‘bfa’
Maybe I’m still missing something?
Sander
Oh, I think I found it. If I have a mixed space I need to include the dgjumps also in the mixed space:
V = HDiv(mesh, order = order, dirichlet=“bottom|right|top|left”, dgjumps = True)
Q = L2(mesh, order = order-1)
X = FESpace ([V, Q], dgjumps = True)
Thanks,
Sander