cbcflow.schemes.official.ipcs_stable module

This scheme follows the same logic as in IPCS, but with a few notable exceptions.

A parameter \(\theta\) is added to the diffusion and convection terms, allowing for different evaluation of these, and the convection is handled semi-implicitly:

\[\frac{1}{\Delta t}\left( \tilde{u}^{n+1}-u^{n} \right)- \nabla\cdot\nu\nabla \tilde{u}^{n+\theta}+ u^*\cdot\nabla \tilde{u}^{n+\theta}+\nabla p^{n}=f^{n+1},\]

where

\[\begin{split}u^* = \frac{3}{2}u^n - \frac{1}{2}u^{n-1}, \\ \tilde{u}^{n+\theta} = \theta \tilde{u}^{n+1}+\left(1-\theta\right)u^n.\end{split}\]

This convection term is unconditionally stable, and with \(\theta=0.5\), this equation is second order in time and space [1].

In addition, the solution process is significantly faster by solving for each of the velocity components separately, making for D number of smaller linear systems compared to a large system D times the size.

[1]Simo, J. C., and F. Armero. Unconditional stability and long-term behavior of transient algorithms for the incompressible Navier-Stokes and Euler equations. Computer Methods in Applied Mechanics and Engineering 111.1 (1994): 111-154.

Classes

class cbcflow.schemes.official.ipcs_stable.IPCS_Stable(params=None)

Bases: cbcflow.core.nsscheme.NSScheme

Incremental pressure-correction scheme, fast and stable version.

classmethod default_params()
solve(problem, update, restart=None)