$\partial \Omega$, and a given force field $\textbf{f}$, we seek
a velocity field $\textbf{u}$ and a pressure field $\textbf{p}$
satisfying
-
@f{eqnarray*}
- \nu \Delta\textbf{u} + (\textbf{u} \cdot \nabla)\textbf{u} + \nabla p &=& \textbf{f}\\
- \nabla \cdot \textbf{u} &=& 0.
<h3> Linearization of Navier-Stokes Equations </h3>
We define a nonlinear function whose root is a solution to the NSE by
-
@f{eqnarray*}
F(\mathbf{u}, p) =
\begin{pmatrix}
@f{eqnarray*}
\textbf{x}^{k+1} = \textbf{x}^{k} - (\nabla F(\textbf{x}^{k}))^{-1} F(\textbf{x}^{k}),
@f}
-where
-$\textbf{x}^{k+1}$ is the approximate solution in step $k+1$,
+
+where $\textbf{x}^{k+1}$ is the approximate solution in step $k+1$,
$\textbf{x}^{k}$ represents the solution from the previous step, and $\nabla
F(\textbf{x}^{k})$ is the Jacobian matrix evaluated at
$\textbf{x}^{k}$.
solution is obtained by adding an update term to the old solution. Instead
of evaluating the Jacobian matrix and taking its inverse, we consider
the update term as a whole, that is
-
@f{eqnarray*}
\delta \textbf{x}^{k} = - (\nabla F(\textbf{x}^{k}))^{-1} F(\textbf{x}^{k}),
@f}
+
where $\textbf{x}^{k+1}=\textbf{x}^{k}+\delta \textbf{x}^{k}$.
We can find the update term by solving the system
@f{eqnarray*}
\nabla F(\textbf{x}^{k}) \delta \textbf{x}^{k} = -F(\textbf{x}^{k}).
@f}
+
Here, the left of the previous equation represents the
directional gradient of $F(\textbf{x})$ along $\delta
\textbf{x}^{k}$ at $\textbf{x}^{k}$. By definition, the directional gradient is given by
-
@f{eqnarray*}
& &\nabla F(\mathbf{u}^{k}, p^{k}) (\delta \mathbf{u}^{k}, \delta p^{k}) \\
\\
@f}
Therefore, we arrive at the linearized system:
-
@f{eqnarray*}
-\nu \Delta \delta \mathbf{u}^{k}
+ \mathbf{u}^{k} \cdot \nabla \delta \mathbf{u}^{k}
as a staircase from the Stokes equations to the NSE we want to solve.
That is, we first solve a Stokes problem
-
@f{eqnarray*}
-\nu_{1} \Delta \textbf{u} + \nabla p &=& \textbf{f}\\
-\nabla \cdot \textbf{u} &=& 0
@f}
to get the initial guess for
-
@f{eqnarray*}
-\nu_{1} \Delta \textbf{u} + (\textbf{u} \cdot \nabla)\textbf{u} + \nabla p &=& \textbf{f},\\
-\nabla \cdot \textbf{u} &=& 0,
@f}
+
which also acts as the initial guess of the continuation method.
Here $\nu_{1}$ is relatively large so that the solution to the Stokes problem with viscosity $\nu_{1}$
can be used as an initial guess for the NSE in Newton's iteration.
Then the solution to
-
@f{eqnarray*}
-\nu_{i} \Delta \textbf{u} + (\textbf{u} \cdot \nabla)\textbf{u} + \nabla p &=& \textbf{f},\\
-\nabla \cdot \textbf{u} &=& 0.
@f}
acts as the initial guess for
-
@f{eqnarray*}
-\nu_{i+1} \Delta \textbf{u} + (\textbf{u} \cdot \nabla)\textbf{u} + \nabla p &=& \textbf{f},\\
-\nabla \cdot \textbf{u} &=& 0.
This system matrix has the same block structure as the one in step-22. However,
the matrix $A$ at the top left corner is not symmetric because of the nonlinear term.
Instead of solving the above system, we can solve the equivalent system
-
@f{eqnarray*}
\begin{pmatrix}
A + \gamma B^TW^{-1}B & B^{T} \\
0
\end{pmatrix}
@f}
+
with a parameter $\gamma$ and an invertible matrix $W$. Here
$\gamma B^TW^{-1}B$ is the Augmented Lagrangian term; see [1] for details.
Denoting the system matrix of the new system by $G$ and the right-hand
side by $b$, we solve it iteratively with right preconditioning
$P^{-1}$ as $GP^{-1}y = b$, where
-
@f{eqnarray*}
P^{-1} =
\begin{pmatrix}
corresponding Schur complement $\tilde{S} = B^T \tilde{A}^{-1} B$. We
let $W = M_p$ where $M_p$ is the pressure mass matrix, then
$\tilde{S}^{-1}$ can be approximated by
-
@f{eqnarray*}
\tilde{S}^{-1} \approx -(\nu+\gamma)M_p^{-1}.
@f}
+
See [1] for details.
We decompose $P^{-1}$ as
-
@f{eqnarray*}
P^{-1} =
\begin{pmatrix}
We use the lid driven cavity flow as our test case; see [3] for details.
The computational domain is the unit square and the right-hand side is
$f=0$. The boundary condition is
-
@f{eqnarray*}
(u(x, y), v(x,y)) &=& (1,0) \qquad\qquad \textrm{if}\ y = 1 \\
(u(x, y), v(x,y)) &=& (0,0) \qquad\qquad \textrm{otherwise}.