Nonlinear Form Integrators

$ \newcommand{\cross}{\times} \newcommand{\inner}{\cdot} \newcommand{\div}{\nabla\cdot} \newcommand{\curl}{\nabla\times} \newcommand{\grad}{\nabla} \newcommand{\ddx}[1]{\frac{d#1}{dx}} $

Nonlinear form integrators are used to express the local action of a general nonlinear finite element operator. Depending on the implementation they can also provide the capability to assemble the local gradient operator or to compute the local energy.

TMOP integrator for variational minimization

The TMOP_Integrator is used for mesh optimization by node movement. It represents the nonlinear objective function that arises in the Target-Matrix Optimization Paradigm (TMOP), as described in this publication. The local action and gradient, for an element $E_p$ in physical space, of the integrator compute

\begin{equation} F(x) = \int_{E_t} \frac{\partial \mu(J_{pt})}{\partial x} ~ d x_t \,, \quad \partial F(x) = \int_{E_t} \frac{\partial^2 \mu(J_{pt})}{\partial{x^2}} ~ d x_t \,, \end{equation}

where $x$ is the vector of positions for the mesh nodes of $E_p$; $x_t$ are positions in the target element $E_t$, which corresponds to $E_p$ (see class TargetConstructor), and $J_{pt}$ is the Jacobian of the transformation from $E_t$ to $E_p$; and $\mu$ is a mesh quality metric that is evaluated at quadrature points (see class TMOP_QualityMetric). The local energy of the integrator represents the integral of $\mu$ over the target element.

Convective acceleration

The VectorConvectionNLFIntegrator implements the local action of $(u \cdot \grad u, v)$, where $u, v \in H_1^d$ for $d = 2, 3$. This term arises e.g. in the weak form of the Navier-Stokes equations. It also allows to assemble the local gradient which is represented by the linearization of the local action around $\delta u$. Using the definition of the Gateaux derivative for functions

\begin{equation} F'(u, \delta u) = \lim_{\epsilon \to \infty} \frac{F(u + \epsilon \delta u) - F(u)}{\epsilon} \end{equation}

with $F(u) = u \cdot \grad u$, we arrive at

\begin{equation} F'(u, \delta u) = u \cdot \grad \delta u + \delta u \cdot \grad u. \end{equation}

The local gradient $(F'(u, \delta u), v)$ can be computed by calling the GetGradient method of NonlinearForm.