Skip to content

Implement finite element spaces on the boundary of the domain #5061

@gobenavides

Description

@gobenavides

Describe the current issue
After some thorough documentation research (with the help of Gemini) I came to learn that there is no native implementation of finite elements on the boundary of the domain. These are of particular interests in variational formulations in which one of the unknowns is sought in $H^{1/2}(\partial\Omega)$ or $H^{-1/2}(\partial\Omega)$, or even more generally, in $H^{1/2}(\Gamma_D)$ or $H^{-1/2}_{00}(\Gamma_N)$.

EDIT: As a toy example consider the problem

$-\Delta u = f$ on $\Omega$
$u = u_D$ on $\partial\Omega$.

Let $\gamma_0$ denote the trace operator from $H^1(\Omega)$ onto $H^{1/2}(\partial\Omega)$. Upon defining $\lambda := -\partial_\nu u \rvert_{\partial\Omega} \in H^{-1/2}(\partial\Omega)$ one arrives to the following variational formulation: Find $u \in H^1(\Omega)$ and $\lambda \in H^{-1/2}(\partial\Omega)$ such that

$\int_\Omega \nabla u \cdot \nabla v + \langle \lambda, v \rangle_{\partial\Omega} = \int_\Omega f v, \quad \forall v \in H^1(\Omega)$
$\langle \eta, \gamma_0(u) \rangle_{\partial\Omega} = \langle \eta, u_D \rangle_{\partial\Omega}, \quad \forall \eta \in H^{-1/2}(\partial\Omega)$.

Describe the solution you'd like
It would be great to have the equivalent of FacetFESpace, definedon or definedonbound from ngsolve https://docu.ngsolve.org/nightly/i-tutorials/unit-2.7-hybrid/hybrid.html or emptymesh from FreeFem++ https://doc.freefem.org/documentation/mesh-generation.html#d-finite-element-space-on-a-boundary.

Describe alternatives you've considered
I am aware of Nitsche method. However, for highly complex systems (e.g., coupled nonlinear PDEs) devising a consistent Nitsche formulation is usually very complicated.

EDIT: I forgot to mention that I have tried with submeshes but without success. The crux of the problem is that Firedrake does not allow creating a MixedFunctionSpace from two spaces that are defined on different meshes. Consequently, I don't know how to implement the simple toy problem from above.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions