Internal dirichlet boundary conditions
Hi, I am interesting in solving elliptic problems where there is a Dirichlet condition on internal nodes. It seems like this isn't possible with the default DirichletBC class in firedrake - is that right and is there a nice work around? My example is to do with remeshing and moving meshes. Consider the situation from https://www.firedrakeproject.org/demos/immersed_fem.py.html and suppose the want to recompute the mesh coordinates by solving -Delta x = 0 in Omega_{1,2} x = x_g on the interface and outside boundary where x_g is the parametrisation on the interface which we want to be exactly given. We have access to all the tags but this information doesn't change the solution. A couple of alternatives: - use a Nitsche-type approach - this does ok but I would prefer to not have this extra parameter unnecessarily. - we can find the nodes which we are on the interface but I don't know how to change the matrices/vectors to use this info. Can you help? Thanks, Tom
Hi Thomas,
On 5 Mar 2021, at 10:35, Thomas Ranner <T.Ranner@leeds.ac.uk> wrote:
I am interesting in solving elliptic problems where there is a Dirichlet condition on internal nodes. It seems like this isn't possible with the default DirichletBC class in firedrake - is that right and is there a nice work around?
My example is to do with remeshing and moving meshes. Consider the situation from https://www.firedrakeproject.org/demos/immersed_fem.py.html and suppose the want to recompute the mesh coordinates by solving
-Delta x = 0 in Omega_{1,2} x = x_g on the interface and outside boundary
where x_g is the parametrisation on the interface which we want to be exactly given.
We have access to all the tags but this information doesn't change the solution. A couple of alternatives: - use a Nitsche-type approach - this does ok but I would prefer to not have this extra parameter unnecessarily. - we can find the nodes which we are on the interface but I don't know how to change the matrices/vectors to use this info.
This is the subject of this issue: https://github.com/firedrakeproject/firedrake/issues/1661 There's some code that works there, but needs a little generalisation to support all the modes that firedrake has for applying dirichlet bcs. We can help getting this merged if you'd like to have a go. Lawrence
Thanks that's just what I want :) Tom On 05 Mar 2021 at 11:16, Lawrence Mitchell <wencel@gmail.com> wrote:
Hi Thomas,
On 5 Mar 2021, at 10:35, Thomas Ranner <T.Ranner@leeds.ac.uk> wrote:
I am interesting in solving elliptic problems where there is a Dirichlet condition on internal nodes. It seems like this isn't possible with the default DirichletBC class in firedrake - is that right and is there a nice work around?
My example is to do with remeshing and moving meshes. Consider the situation from https://www.firedrakeproject.org/demos/immersed_fem.py.html and suppose the want to recompute the mesh coordinates by solving
-Delta x = 0 in Omega_{1,2} x = x_g on the interface and outside boundary
where x_g is the parametrisation on the interface which we want to be exactly given.
We have access to all the tags but this information doesn't change the solution. A couple of alternatives: - use a Nitsche-type approach - this does ok but I would prefer to not have this extra parameter unnecessarily. - we can find the nodes which we are on the interface but I don't know how to change the matrices/vectors to use this info.
This is the subject of this issue:
https://github.com/firedrakeproject/firedrake/issues/1661
There's some code that works there, but needs a little generalisation to support all the modes that firedrake has for applying dirichlet bcs.
We can help getting this merged if you'd like to have a go.
Lawrence
participants (2)
- 
                
                Lawrence Mitchell
- 
                
                Thomas Ranner