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:
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:
To solve this, we define the Lagrange functional \mathcal{L}:H^1(\Omega)^d\times H^{-1/2}(\Gamma_S)\to\mathbb{R} by
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.,
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
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)