TRUST 1.9.8
HPC thermohydraulic platform
Loading...
Searching...
No Matches
List of the available projection methods

Chorin Algorithm

The first projection method was proposed by [4] and [27]. The pressure is not included in the intermediate velocity prediction.

Step 1: Velocity Prediction

Find intermediate velocity \(U^*\) satisfying:

\[\mathbb{M}\frac{U^* - U^n}{\delta t^n} + \mathbb{A}U^* = F^{n+1} \]

The boundary conditions of \(U^*\) are the same as those of \(U^{n+1}\). Note that \(U^*\) has no reason to be divergence-free.

Step 2: Pressure Correction

Find \(P^{n+1}\) from the following system (convection and Laplacian matrices are omitted as the mass matrix is easy to invert):

\[\begin{aligned} \mathbb{M}\frac{U^{n+1} - U^*}{\delta t^n} + \mathbb{B}^T P^{n+1} &= 0 \\ \mathbb{B} U^{n+1} &= 0 \end{aligned} \]

Left-multiplying by \(\mathbb{B}\mathbb{M}^{-1}\) yields a Poisson system on pressure:

\[\delta t^n\,\mathbb{B}\mathbb{M}^{-1}\mathbb{B}^T P^{n+1} = \mathbb{B}U^* \]

Step 3: Update

\[U^{n+1} = U^* + \delta t^n\,\mathbb{M}^{-1}\mathbb{B}^T P^{n+1} \]

Summing steps 1 and 2, the velocity \(U^*\) appears in the reconstructed system behind the convection and Laplacian — introducing a splitting error [14].

Note
In TRUST, this method is used for explicit schemes.

Chorin Algorithm with Pressure Increment

A modification proposed by [13] takes the pressure at the previous time in step 1 and solves for a pressure increment in step 2. Used for semi-implicit or implicit schemes.

Step 1: Velocity Prediction

\[\mathbb{M}\frac{U^* - U^n}{\delta t^n} + \mathbb{A}U^* + \mathbb{B}^T P^n = F^{n+1} \]

Step 2: Pressure Correction

Solve for the pressure increment \(\delta P := P^{n+1} - P^n\):

\[\delta t^n\,\mathbb{B}\mathbb{M}^{-1}\mathbb{B}^T \delta P = \mathbb{B}U^* \]

Step 3: Update

\[\begin{aligned} U^{n+1} &= U^* + \delta t^n\,\mathbb{M}^{-1}\mathbb{B}^T \delta P \\ P^{n+1} &= P^n + \delta P \end{aligned} \]


SIMPLE Algorithm

Semi-Implicit Method for Pressure Linked Equations [25] [3]. Similar to Chorin with pressure increment, but the mass matrix \(\mathbb{M}/\delta t^n\) in steps 2 and 3 is replaced by the diagonal of the convection-diffusion matrix:

\[\mathbb{D} := \text{diag}\!\left(\mathbb{A} + \frac{\mathbb{M}}{\delta t^n}\right) \]

Pressure correction:

\[\mathbb{B}\mathbb{D}^{-1}\mathbb{B}^T \delta P = \mathbb{B}U^* \]

Update:

\[\begin{aligned} U^{n+1} &= U^* + \mathbb{D}^{-1}\mathbb{B}^T \delta P \\ P^{n+1} &= P^n + \delta P \end{aligned} \]

A relaxation can be applied to the pressure (or velocity) at the update step. Implementation details: Simple.h.


SIMPLER Algorithm

SIMPLE Revised [26] — adds a pre-computed pressure step before the prediction step.

Step 0: Pre-compute the Pressure

Define \(\mathbb{E} := \mathbb{A} + \mathbb{M}/\delta t^n - \mathbb{D}\). Find intermediate velocity \(U^p\):

\[\mathbb{D}(U^n)\,U^p - \mathbb{E}U^n = F^{n+1} \]

Then solve for the pre-computed pressure:

\[\mathbb{B}\mathbb{D}^{-1}\mathbb{B}^t P^{n+1} = \mathbb{B}U^p \]

Step 1: SIMPLE on \((U^{n+1}, P^{n+1})\)

Apply the standard SIMPLE algorithm (velocity prediction → pressure correction → update). Implementation details: Simpler.h.


PISO Algorithm

Pressure-Implicit with Splitting of Operators [18] — a two-step projection method extending SIMPLE with a second correction that considers the non-diagonal part of \(\mathbb{A}\).

Step 1: SIMPLE Step

Velocity prediction:

\[\mathbb{M}\frac{U^* - U^n}{\delta t^n} + \mathbb{A}U^* + \mathbb{B}^T P^n = F^{n+1} \]

First pressure increment:

\[\mathbb{B}\mathbb{D}^{-1}\mathbb{B}^T \delta P^{p1} = \mathbb{B}U^* \]

First update:

\[\begin{aligned} U^{p1} &= U^* + \mathbb{D}^{-1}\mathbb{B}^T \delta P^{p1} \\ P^{p1} &= P^n + \delta P^{p1} \end{aligned} \]

Step 2: Second Pressure Correction

The second correction considers the non-diagonal part \(\mathbb{E}_A\) of the convection-diffusion matrix:

\[\mathbb{B}\mathbb{D}^{-1}\mathbb{B}^t \delta P^{p2} = \mathbb{B}\mathbb{D}^{-1}\mathbb{E}_A U^{p1} \]

Final update:

\[\begin{aligned} U^{n+1} &= \mathbb{E}_A U^{p1} - \mathbb{B}^t \delta P^{p2} \\ P^{n+1} &= P^{p1} + \delta P^{p2} \end{aligned} \]

Algebraic details are presented in [18] or in Piso.h.