### Newton method for the stationary Navier-Stokes equations doesn't converge

152

views

0

Dear all,

My question is, what would be an optimal approach while trying to solve stationary Navier-Stokes equations in the incompressible case.

So far, I tried to implement my problem using the

Another example are the Stokes equations here:

https://fenicsproject.org/olddocs/dolfin/1.6.0/python/demo/documented/stokes-iterative/python/documentation.html

Again, is it possible to apply something similar to the Navier-Stokes problem also?

Here is a piece of code that i wrote. Firstly solve the Stokes problem which works fine, then pass the solution to the

\[ \begin{cases}

A(\textbf{u}, \textbf{v}): = \nu \int_{\Omega}\nabla \textbf{u}\cdot \nabla\textbf{v}\hspace{0.1 cm}d\Omega &\textbf{u},\textbf{v}\in V_1\\

B(\textbf{u}, q): =-\frac{1}{\rho} \int_{\Omega}div(\textbf{u})q \hspace{0.1 cm}d\Omega & \textbf{u} \in V_1, q \in V_2 \\

C(\textbf{w};\textbf{z},\textbf{v}): = \int_{\Omega} \sum_{i,j=1}^{d} w_j \frac{\partial z_i}{\partial x_j}v_i \hspace{0.1 cm}d\Omega & \textbf{w},\textbf{z},\textbf{v} \in V_1 \\

L(\textbf{v}): = \frac{1}{\rho}\int_{\Omega}\textbf{f}\cdot \textbf{v}\hspace{0.1 cm}d\Omega &\textbf{v} \in V_1

\end{cases} \]

Here is the picture of the Stokes problem

My question is, what would be an optimal approach while trying to solve stationary Navier-Stokes equations in the incompressible case.

So far, I tried to implement my problem using the

**NonlinearVariationalSolver**. In the case of Stokes equations it converges within one iteration, just as it should, however in the Navier-Stokes case it clearly doesn't converge. This probably indicates that I should do it differently. I tried to look for examples within tutorials. Unfortunately everything that i could find was about the non-stationary case, mostly using the Chorin's projection method. I'm not sure whether i could also apply it in my case.Another example are the Stokes equations here:

https://fenicsproject.org/olddocs/dolfin/1.6.0/python/demo/documented/stokes-iterative/python/documentation.html

Again, is it possible to apply something similar to the Navier-Stokes problem also?

Here is a piece of code that i wrote. Firstly solve the Stokes problem which works fine, then pass the solution to the

**NonlinearVariationalSolver**again as the initial guess for the Navier-Stokes problem.```
def navier_stokes(NS, U_):
# Define variational problem
U = TrialFunction(V)
(u, p) = split(U)
V_ = TestFunction(V)
(v, q) = split(V_)
(u_, p_) = split(U_)
F = A(u, v) + B(p, v) + bool(NS)*C(u, u, v) + B(q, u) - L(v)
F = action(F, U_)
J = derivative(F, U_, U)
problem = NonlinearVariationalProblem(F, U_, bcs, J)
# Create Newton solver
solver = NonlinearVariationalSolver(problem)
solver.solve()
return U_
# Call navier-stokes and get sub-functions
U_ = Function(V)
U_s = navier_stokes(0, U_)
(u_s, p_s) = U_s.split(U_s)
U_ns = navier_stokes(1, U_s)
(u_ns, p_ns) = U_ns.split(U_ns)
```

The variational forms are very classical\[ \begin{cases}

A(\textbf{u}, \textbf{v}): = \nu \int_{\Omega}\nabla \textbf{u}\cdot \nabla\textbf{v}\hspace{0.1 cm}d\Omega &\textbf{u},\textbf{v}\in V_1\\

B(\textbf{u}, q): =-\frac{1}{\rho} \int_{\Omega}div(\textbf{u})q \hspace{0.1 cm}d\Omega & \textbf{u} \in V_1, q \in V_2 \\

C(\textbf{w};\textbf{z},\textbf{v}): = \int_{\Omega} \sum_{i,j=1}^{d} w_j \frac{\partial z_i}{\partial x_j}v_i \hspace{0.1 cm}d\Omega & \textbf{w},\textbf{z},\textbf{v} \in V_1 \\

L(\textbf{v}): = \frac{1}{\rho}\int_{\Omega}\textbf{f}\cdot \textbf{v}\hspace{0.1 cm}d\Omega &\textbf{v} \in V_1

\end{cases} \]

Here is the picture of the Stokes problem

When it comes to the boundary conditions - there are two parabolic inflows on the left, do-nothing condition on the right and noslip condition everywhere else.

I use classical Taylor-Hood elements.

Community: FEniCS Project

### 1 Answer

0

Hi,

solving a fluid dynamics problem of an incompressible Newtonian fluid modeled by the Navier--Stokes material equation is a big challenge. There are different strategies like staggering scheme (Chorin's projection), limiting procedure (like stabilized FEM), or a direct numerical solution (DNS). Often you need to fulfill the inf-sup condition (by using Taylor--Hood elements) as well.

If you are interested for something else, have a look here:

https://arxiv.org/pdf/1709.00913

The code is written in FEniCS and you can get it here:

http://www.lkm.tu-berlin.de/ComputationalReality/

In case you have a question about the method or implementation, if it works or doesn't work, write me an e-mail.

Best, Emek

solving a fluid dynamics problem of an incompressible Newtonian fluid modeled by the Navier--Stokes material equation is a big challenge. There are different strategies like staggering scheme (Chorin's projection), limiting procedure (like stabilized FEM), or a direct numerical solution (DNS). Often you need to fulfill the inf-sup condition (by using Taylor--Hood elements) as well.

If you are interested for something else, have a look here:

https://arxiv.org/pdf/1709.00913

The code is written in FEniCS and you can get it here:

http://www.lkm.tu-berlin.de/ComputationalReality/

In case you have a question about the method or implementation, if it works or doesn't work, write me an e-mail.

Best, Emek

Please login to add an answer/comment or follow this question.

solve(F == 0, w, bcs)for the variational form and unfortunately this doesn't work; I tried already. Maybe because my domain is a bit more complicated.`NonlinearVariationalSolver`

. Hopefully, it can help.