Apply DirichletBCs to vector space, with direction normal to on mesh boundary #3421
Unanswered
gnikit
asked this question in
Firedrake support
Replies: 1 comment
-
There isn't a straightforward way to impose boundary conditions only on the normal component of an H1 vector function space such as CG2. This is because it's not straightforward to decompose degrees of freedom into normal and tangent degrees of freedom. There are two ways of achieving what you are trying to do. The nicer one is to use an H(div)-L2 discretisation of your fluid. The H(div) function spaces only have normal degrees of freedom on the boundary, so normal Dirichlet conditions just work. The less nice one is to use a Nitsche style (penalty) boundary condition to penalise normal flow. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hi, I am having trouble coming up with a programmatic way to compute Dirichlet BCs normal to a mesh region, for a vector function space. I am guessing that the input arguments to the such a
Function
should be the vector space V, the subdomain id i, the vector magnitude m and potentially the mesh (to fetch the normals n of i). You would then interpolate m*n onto V and pass it to theDirichletBC
, e.g.Clearly that does not work. I suspect the limitation is my knowledge of firedrake and ufl syntax, rather than the actual capabilities of the libraries.
NOTE: This is a dummy test case, but if the surface is curved e.g. a pipe's outer diameter, specifying BCs in this manner is quite useful.
Any help would be greatly appreciated.
MWE - Stokes flow
Beta Was this translation helpful? Give feedback.
All reactions