- Thank you received: 0
Jump of function in HDiv
- rhebergens
- Topic Author
- Offline
- Junior Member
Less
More
6 years 7 months ago #420
by rhebergens
Jump of function in HDiv was created 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
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
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
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
- rhebergens
- Topic Author
- Offline
- Junior Member
Less
More
- Thank you received: 0
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
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
- rhebergens
- Topic Author
- Offline
- Junior Member
Less
More
- Thank you received: 0
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
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