- Thank you received: 0
Vector functions DG
- Bittermandeln
- Topic Author
- Offline
- Junior Member
Less
More
4 years 1 month ago #3248
by Bittermandeln
Vector functions DG was created by Bittermandeln
Hi,
I am trying to implement a DG version of Stokes equation. To calculate the boundary-fluxes on each face, how do I write it? I use a central flux discretization. The jump terms are easy,
jump_u = u-u.Other()
jump_v = v-v.Other()
But when it comes to the central flux my first idea is to use
flux_u = 0.5 * n * (grad(u) + grad(u.Other())
and likewise for v. This however gives me
NgException: T_MultVecVec : dimensions don't fit
One version which does not give me an error is
flux_u = 0.5*(grad(u) + grad(u.Other()))*n
flux_v = 0.5*(grad(v) + grad(v.Other()))*n
However, I tested to calculate the matrix for the bilinear form
SymbolicBFI(-flux_u*jump_v, BND, skeleton=True)
when the FE-space is a vectorH1 space with dgjumps=False. The matrix has a non-zero norm, which is odd since the functions are continuous.
Note: the main idea is to use it for H(div) conform spaces
I would be immensely grateful for any help.
I am trying to implement a DG version of Stokes equation. To calculate the boundary-fluxes on each face, how do I write it? I use a central flux discretization. The jump terms are easy,
jump_u = u-u.Other()
jump_v = v-v.Other()
But when it comes to the central flux my first idea is to use
flux_u = 0.5 * n * (grad(u) + grad(u.Other())
and likewise for v. This however gives me
NgException: T_MultVecVec : dimensions don't fit
One version which does not give me an error is
flux_u = 0.5*(grad(u) + grad(u.Other()))*n
flux_v = 0.5*(grad(v) + grad(v.Other()))*n
However, I tested to calculate the matrix for the bilinear form
SymbolicBFI(-flux_u*jump_v, BND, skeleton=True)
when the FE-space is a vectorH1 space with dgjumps=False. The matrix has a non-zero norm, which is odd since the functions are continuous.
Note: the main idea is to use it for H(div) conform spaces
I would be immensely grateful for any help.
4 years 1 month ago #3249
by schruste
Replied by schruste on topic Vector functions DG
Hi Bittermandeln,
With "(...,BND, skeleton=True)" you only integrate on the domain boundary. There, you don't have an "Other" and hence you will get non-zero values also for continuous functions. Try the same for "(...,VOL,skeleton=True)" and it should be doing what you expect.
Best,
Christoph
With "(...,BND, skeleton=True)" you only integrate on the domain boundary. There, you don't have an "Other" and hence you will get non-zero values also for continuous functions. Try the same for "(...,VOL,skeleton=True)" and it should be doing what you expect.
Best,
Christoph
- Bittermandeln
- Topic Author
- Offline
- Junior Member
Less
More
- Thank you received: 0
4 years 1 month ago #3250
by Bittermandeln
Replied by Bittermandeln on topic Vector functions DG
Hi Christoph,
Thank you for your quick reply,
when doing this I get the error message
SparseMatrixTM::AddElementMatrix: illegal dnumsin Assemble BilinearForm 'biform_from_py'
I do not understand what the reason for the error is
Thank you for your quick reply,
when doing this I get the error message
SparseMatrixTM::AddElementMatrix: illegal dnumsin Assemble BilinearForm 'biform_from_py'
I do not understand what the reason for the error is
- Bittermandeln
- Topic Author
- Offline
- Junior Member
Less
More
- Thank you received: 0
4 years 1 month ago #3251
by Bittermandeln
Replied by Bittermandeln on topic Vector functions DG
I managed to find the reason in this post:
ngsolve.org/forum/ngspy-forum/109-jump-of-function-in-hdiv
I needed to include the dgjumps argument in my mixed space.
Thanks again for the help
ngsolve.org/forum/ngspy-forum/109-jump-of-function-in-hdiv
I needed to include the dgjumps argument in my mixed space.
Thanks again for the help
Time to create page: 0.113 seconds