Jump of function in HDiv

More
6 years 7 months ago #420 by rhebergens
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:
doi.org/10.1137/15M1047696

Thanks,
Sander
More
6 years 7 months ago #421 by schruste
Replied by schruste on topic Jump of function in HDiv
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
More
6 years 7 months ago #422 by rhebergens
Replied by rhebergens on topic Jump of function in HDiv
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
More
6 years 7 months ago #423 by rhebergens
Replied by rhebergens on topic Jump of function in HDiv
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
Time to create page: 0.101 seconds