Normal boundary condition

You can use the Lagrange multiplier method if you don’t like the penalization.

For example, let \Omega be a bounded domain of \mathbb{R}^d with boundary \partial\Omega = \overline{\Gamma_N \cup \Gamma_S} and consider the following linear elasticity problem:

-\mathrm{div}(C:\varepsilon(u)) = 0 \text{ in }\Omega \\ (C:\varepsilon(u))n = t \text{ on }\Gamma_N \\ u\cdot n = 0 \text{ on }\Gamma_S

with the standard fourth-order elasticity tensor C, given traction t\in H^{-1/2}(\Gamma_N)^d and second-order strain tensor \varepsilon(u). This problem can be rewritten as the variational problem on H^1(\Omega)^d:

\min_{u\in H^1(\Omega)^d} \frac{1}{2}\int_\Omega \varepsilon(u):C:\varepsilon(u) dx - \int_{\Gamma_N} t\cdot u\mathrm{d}s \\ \text{subject to }u\cdot n = 0 \text{ on }\Gamma_S.

To solve this, we define the Lagrange functional \mathcal{L}:H^1(\Omega)^d\times H^{-1/2}(\Gamma_S)\to\mathbb{R} by

\mathcal{L}(u,\varphi) = \frac{1}{2}\int_\Omega \varepsilon(u):C:\varepsilon(u) dx - \int_{\Gamma_N} t\cdot u\mathrm{d}s + \langle \varphi,u\cdot n\rangle_{H^{1/2}(\Gamma_S)},

where \langle\cdot,\cdot\rangle_{H^{1/2}(\Gamma_S)} is the usual duality pairing. A solution of the variational problem is sought as a stationary point of \mathcal{L}, i.e.,

0 = \langle d_u\mathcal{L}(u,\varphi),v\rangle_{H^1(\Omega)^d} = \int_\Omega \varepsilon(u):C:\varepsilon(v) dx - \int_{\Gamma_N} t\cdot v\mathrm{d}s + \langle \varphi,v\cdot n\rangle_{H^{1/2}(\Gamma_S)}, \\ 0 = \langle d_\varphi\mathcal{L}(u,\varphi),\psi\rangle_{H^{-1/2}(\Gamma_S)} = \langle \psi,u\cdot n\rangle_{H^{1/2}(\Gamma_S)},

for all (v,\psi)\in H^1(\Omega)^d\times H^{-1/2}(\Gamma_S). In summary, our problem is to find (u,\varphi)\in H^1(\Omega)^d\times H^{-1/2}(\Gamma_S) such that

\int_\Omega \varepsilon(u):C:\varepsilon(v) dx + \langle \varphi,v\cdot n\rangle_{H^{1/2}(\Gamma_S)} + \langle \psi,u\cdot n\rangle_{H^{1/2}(\Gamma_S)} = \int_{\Gamma_N} t\cdot v\mathrm{d}s

for all (v,\psi)\in H^1(\Omega)^d\times H^{-1/2}(\Gamma_S).

To solve this using FreeFEM, we need an fespace corresponding to the product space H^1(\Omega)^d\times H^{-1/2}(\Gamma_S). Thanks to the new feature in the latest release, this can be easily implemented.

lagrange.edp (2.4 KB)
penalty.edp (2.1 KB)

1 Like