\(\newcommand{\opdiv}{\operatorname{div}}\) \(\newcommand{\optrn}{\operatorname{tr}_n}\)
1. The Function Space \(H(\operatorname{div})\)#
A vector valued function space with well-defined divergence:
\[
H(\opdiv) = \{ \sigma \in [L_2(\Omega)]^2 : \opdiv \sigma \in L_2 \}
\]
Has continuous normal trace operator:
\[\begin{eqnarray*}
\operatorname{tr} : H(\opdiv) & \rightarrow & H^{-1/2}(\partial \Omega) \\
\sigma & \rightarrow & \sigma \cdot n \quad \text{for smooth $\sigma$}
\end{eqnarray*}\]
Functions from \(H(\opdiv)\) have single-valued normal components across sub-domain boundaries.
Brezzi-Douglas-Marini BDM finite elements:
\[
{\mathcal BDM}_k = \{ \sigma_h \in [P_k({\mathcal T})]^2 : [\sigma_h \cdot n] = 0 \}
\]
very similar: Raviart-Thomas RT elements
1.1. Piola transformation:#
mapping of domains: $\( x = \Phi (\hat x) \)$
define Jacobian and determinant:
\[
F = \Phi^\prime, \; J = \det(F)
\]
Push-forward of vector fields by Piola transformation
\[
{\mathcal P} \sigma (x) := \frac{1}{J} F \hat \sigma(\hat x)
\]
from ngsolve import *
from ngsolve.webgui import Draw
from netgen.occ import *
import ipywidgets as widgets
from ipywidgets import interact, fixed
geo = MoveTo(0,-0.1).Rectangle(1,0.2).Face()
mesh = Mesh(OCCGeometry(geo, dim=2).GenerateMesh(maxh=0.05))
fes = HDiv(mesh, order=2)
# fes = VectorH1(mesh, order=2)
sigma = GridFunction(fes)
sigma.Set ( (2-100*y*y, 0))
disp = GridFunction(VectorH1(mesh, order=2))
scene = Draw (sigma, vectors={"grid_size":30})
def myfunc(bend, thick):
disp.Set((-2*bend*x*y-0.5*y*y*(thick-1), bend*x*x + x*y*(thick-1)))
mesh.SetDeformation(disp)
scene.Redraw()
mesh.UnsetDeformation()
params = widgets.interactive(myfunc,
bend=widgets.FloatSlider(value=0, min=-0.2, max=0.2, step=0.001,
description='bend:', disabled=False,
continuous_update=True, orientation='horizontal',
readout=True, readout_format='.3f'),
thick=widgets.FloatSlider(value=1, min=0.01, max=2, step=0.001,
description='thick:', disabled=False,
continuous_update=True, orientation='horizontal',
readout=True, readout_format='.3f'),)
display (params)
2. Goal:#
use \(H(\operatorname{div})\) function space for approximation of flow velocities
perfect for divergence free constraints
discretization of viscosity term ?
HDG methods
mixed stress methods