23. Classical Cartesian Pressure-Correction Derivation#

For ease of illustration, the derivation below uses two-dimensional laminar flow equations on a Cartesian grid together with first-order Euler implicit time integration. Stream itself is formulated for generalized unstructured grids. The unstructured momentum-interpolation construction is developed in Chapter 5, and the resulting pressure-correction row is assembled in Chapter 6.

The continuity equation can be written as:

(23.1)#\[\frac{\partial \rho}{\partial t} + \nabla \cdot \left( \rho \vec{u} \right) = 0\]

Consider a control volume (cell) labeled P in the figure below which is bounded by NF=4 number of faces – labelled as e (east face), w (west face), n (north face) and s (south face). The immediate neighbors of the control point P are labelled as E (east neighbor), W (west neighbor), N (north neighbor) and S (south neighbor).

../_images/2d_cartesian_grid.png

Fig. 23.1 Control point (cell) P and its neighboring cells on a 2D Cartesian grid.#

Eq. (23.1) can be written in discrete form for cell P for a first-order implicit time integration as:

(23.2)#\[\left( \frac{\rho^{n+1} - \rho^n}{\Delta t} \right) \Omega_P + \sum_{f=1}^{NF} \dot{m}_f = 0\]

where \(\Omega_P\) is the volume of cell P, and the summation is over all faces f bounding control volume P. The mass flux at any face is given by

(23.3)#\[\dot{m}_f = \left[ \rho \left( \vec{u} \cdot \vec{A} \right) \right]_f\]

where \(\vec{A}\) is the area vector computed at the face centroid.

For the illustrative derivation below, the momentum equation is written as follows:

(23.4)#\[\frac{\partial}{\partial t} \left( \rho \vec{u} \right) + \nabla \cdot \left( \rho \vec{u} \otimes \vec{u} \right) = -\nabla p + \nabla \cdot \boldsymbol{\tau}\]

where \(\boldsymbol{\tau}\) is the viscous stress tensor.

23.1. The SIMPLE algorithm on non-staggered grids#

In this textbook derivation, unstarred variables denote the corrected value produced by one SIMPLE update. They become the final solution only after the nonlinear iterations converge.

The momentum equations given by Eq.(23.4) at the control volume P shown above below can be written, after discretization, as:

(23.1.1)#\[a_P u_P = \sum a_{\text{nbr}} u_{\text{nbr}} - \left( p_e - p_w \right) A_x + {}^{(u)}\!b\]
(23.1.2)#\[a_P v_P = \sum a_{\text{nbr}} v_{\text{nbr}} - \left( p_n - p_s \right) A_y + {}^{(v)}\!b\]

In the above equations, the coefficients \(a_*\) result from the discretization procedure – expressions for these coefficients are derived in Chapter 4. For now, suffice it to say that the equations above are discretized versions of the momentum equations which relate the control point P to its neighbors (E, W, N and S). An initial guess for the pressure field \(p^*\) is used to start the solution process. The above equations are solved using the guessed pressure field to yield velocity components \(u^*\) and \(v^*\) as follows:

(23.1.3)#\[a_P u^*_P = \sum a_{\text{nbr}} u^*_{\text{nbr}} - \left( p^*_e - p^*_w \right) A_x + {}^{(u)}\!b\]
(23.1.4)#\[a_P v^*_P = \sum a_{\text{nbr}} v^*_{\text{nbr}} - \left( p^*_n - p^*_s \right) A_y + {}^{(v)}\!b\]

Next, a correction to pressure, \(p^{'}\), is defined as the difference between the correct pressure field \(p\) and the guessed pressure field \(p^*\), such that:

(23.1.5)#\[p = p^* + p^{\prime}\]

Similarly, velocity corrections \(u^{\prime}\) and \(v^{\prime}\) are defined to relate the correct velocities \(u\) and \(v\) to the guessed velocities \(u^*\) and \(v^*\), as follows:

(23.1.6)#\[u = u^* + u^{\prime} \quad \text{,} \quad v = v^* + v^{\prime}\]

Substitution of the correct pressure field \(p\) into the momentum equations yields the correct velocity field \((u, v)\). Subtracting equations (23.1.3) and (23.1.4) from equations (23.1.1) and (23.1.2) respectively, gives:

(23.1.7)#\[a_P(u_P - u^*_P) = \sum a_{\text{nbr}} (u_{\text{nbr}} - u^*_{\text{nbr}}) - \left[ (p_e - p^*_e) - (p_w - p^*_w) \right] A_x\]
(23.1.8)#\[a_P(v_P - v^*_P) = \sum a_{\text{nbr}} (v_{\text{nbr}} - v^*_{\text{nbr}}) - \left[ (p_n - p^*_n) - (p_s - p^*_s) \right] A_y\]

Using the pressure and velocity decomposition definitions in (23.1.5) and (23.1.6), the above equations can be rewritten as:

(23.1.9)#\[a_P u_P^{\prime} = \sum a_{\text{nbr}} u_{\text{nbr}}^{\prime} - \left( p_e^{\prime} - p_w^{\prime} \right) A_x\]
(23.1.10)#\[a_P v_P^{\prime} = \sum a_{\text{nbr}} v_{\text{nbr}}^{\prime} - \left( p_n^{\prime} - p_s^{\prime} \right) A_y\]

At this point, an approximation is introduced: \(\sum a_{\text{nbr}} u_{\text{nbr}}^{\prime} = 0\) and \(\sum a_{\text{nbr}} v_{\text{nbr}}^{\prime} = 0\). This simplifies the equations for the velocity corrections. This is a key approximation unique to the SIMPLE algorithm which yields the following:

(23.1.11)#\[u^{\prime}_P = -{}^{(u)}\!C \left( p^{\prime}_e - p^{\prime}_w \right) \quad \text{,} \quad v^{\prime}_P = -{}^{(v)}\!C \left( p^{\prime}_n - p^{\prime}_s \right)\]

where \({}^{(u)}\!C\) and \({}^{(v)}\!C\) are coefficients that depend on the discretization scheme used. The are defined as:

(23.1.12)#\[{}^{(u)}\!C = \frac{A_x}{a_P} \quad \text{and} \quad {}^{(v)}\!C = \frac{A_y}{a_P}\]

Using Eq. (23.1.6), the velocities can be expressed as

(23.1.13)#\[u_P = u^*_P - {}^{(u)}\!C \left( p_e^{\prime} - p_w^{\prime} \right) \quad \text{,} \quad v_P = v^*_P - {}^{(v)}\!C \left( p_n^{\prime} - p_s^{\prime} \right)\]

23.1.1. Cell Face Velocities: Momentum Interpolation Technique#

Next, we will illustrate the estimation of control volume interface velocities along the x direction using the so-called momentum interpolation technique (Rhie and Chow[RC83] ). From Eq. (23.1.1), if we assume a uniform mesh and interpolate the pressure at control volume interfaces linearly from the nodal values, the velocities at nodes on either side of the west face can be written as:

(23.1.1.1)#\[u_P = \frac{\left( \sum a_{\text{nbr}} u_{\text{nbr}} + {}^{(u)}\!b \right)_P}{\left( a_P \right)_P} - \frac{A_x}{a_P} \frac{\left( p_E - p_W \right)}{2}\]
(23.1.1.2)#\[u_W = \frac{\left( \sum a_{\text{nbr}} u_{\text{nbr}} + {}^{(u)}\!b \right)_W}{\left( a_P \right)_W} - \frac{A_x}{\left( a_P \right)_W} \frac{\left( p_P - p_{WW} \right)}{2}\]

which can be written as:

(23.1.1.3)#\[u_P = \hat{u}_P - \frac{A_x}{\left( a_P \right)_P} \frac{\left( p_E - p_W \right)}{2}, \quad u_W = \hat{u}_W - \frac{A_x}{\left( a_P \right)_W} \frac{\left( p_P - p_{WW} \right)}{2}\]

where:

(23.1.1.4)#\[\hat{u}_P = \frac{\left( \sum a_{\text{nbr}} u_{\text{nbr}} + {}^{(u)}\!b \right)_P}{\left( a_P \right)_P}, \quad \hat{u}_W = \frac{\left( \sum a_{\text{nbr}} u_{\text{nbr}} + {}^{(u)}\!b \right)_W}{\left( a_P \right)_W}\]

If the velocity at the west face, \(u_w\) , is computed by linearly interpolating \(u_P\) and \(u_W\), we get:

(23.1.1.5)#\[u_w = \frac{\hat{u}_P + \hat{u}_W}{2} - \frac{A_x}{\left( a_P \right)_P} \frac{\left( p_E - p_W \right)}{4} - \frac{A_x}{\left( a_P \right)_W} \frac{\left( p_P - p_{WW} \right)}{4}\]

This formulation of interface velocities allows pressure checkerboarding, i.e, it allows odd-even pressure oscillations which are not felt by the velocity field. In order to make the collocated arrangement of velocity and pressure effective, a pressure-velocity coupling mechanism needs to be devised which can suppress the odd-even pressure oscillations. A common approach employed is the so-called momentum interpolation technique. The crux of this technique is to estimate the interface velocity using the momentum equation similar to the nodal momentum equation with the pressure gradient computed using the pressure values at adjacent nodes:

(23.1.1.6)#\[u_w = \hat{u}_w - \frac{A_x}{\left( a_P \right)_w} \left( p_P - p_W \right)\]

In the above equation, \(\hat{u}_w\) and \(\left( a_P \right)_w\) are computed by interpolating between the adjacent nodal values. Specifically, we use:

(23.1.1.7)#\[\hat{u}_w = \frac{1}{2} \left( \hat{u}_P + \hat{u}_W \right), \quad \frac{1}{\left( a_P \right)_w} = \frac{1}{\left( a_P \right)_P} + \frac{1}{\left( a_P \right)_W}\]

Using Eq. (23.1.1.3), we can write the equation above as follows:

(23.1.1.8)#\[u_w = \frac{u_P + u_W}{2} - \frac{A_x}{\left( a_P \right)_w} \left( p_P - p_W \right) + \frac{A_x}{\left( a_P \right)_P} \frac{\left( p_E - p_W \right)}{4} + \frac{A_x}{\left( a_P \right)_W} \frac{\left( p_P - p_{WW} \right)}{4}\]

The face velocities are designed to be driven by pressure differences between adjacent nodes, not alternate ones. Thus, these velocities are sensitive to checkerboarding and do not allow a checkerboard pressure field. It can be shown that the above expression is equivalent to the following:

(23.1.1.9)#\[u_e = \frac{u_E + u_P}{2} + \frac{A_x}{4 \left( a_P \right)_P} \left( \frac{\partial^3 p}{\partial x^3} \right)_e \Delta x^3 + O \left( \Delta x^2 \right)\]

Thus, the added dissipation term, which is third-order accurate, does not alter the formal second-order accuracy of the estimation of interface velocities.

To summarize, the momentum interpolation technique provides pressure-velocity coupling via a fourth-derivative pressure dissipation term in the formula for face velocities. Both cell-centered (nodal) and cell face velocities are stored. The nodal velocities satisfy the momentum equations whereas the cell face velocities satisfy mass continuity.

23.1.2. Face Velocity Corrections and Pressure Correction Equation#

Similar to the nodal velocity corrections, the face velocity corrections can be defined as follows:

(23.1.2.1)#\[u_w = u_w^* + u_w^{\prime}, \quad v_s = v_s^* + v_s^{\prime}\]

The corrected face velocities can be written as:

(23.1.2.2)#\[u_w = u_w^* - {}^{(u)}\!C_w \left( p_P^{\prime} - p_W^{\prime} \right), \quad v_s = v_s^* - {}^{(v)}\!C_s \left( p_P^{\prime} - p_S^{\prime} \right)\]

where:

(23.1.2.3)#\[C_w = \frac{A_w}{\left( a_P \right)_w}, \quad C_s = \frac{A_s}{\left( a_P \right)_s}\]

Similar expressions can be derived for \(u_e\) and \(v_e\).

So far, we have only considered the momentum equations but, as mentioned earlier, the velocity field is also subject to the constraint that it should satisfy the continuity equation. Continuity is satisfied in discretized form for the control volume shown in the control volume as:

(23.1.2.4)#\[\left[ (\rho u A)_e - (\rho u A)_w \right] + \left[ (\rho v A)_n - (\rho v A)_s \right] = 0\]

Substituting the corrected velocities given by Eq. (23.1.2.1) into the discretized continuity equation (23.2), we get:

(23.1.2.5)#\[\begin{split}\left[ (\rho A)_e \cdot \left( u_e^* - C_e (p_E^{\prime} - p_P^{\prime}) \right) - (\rho A)_w \cdot \left( u_w^* - C_w (p_P^{\prime} - p_W^{\prime}) \right) \right] \\ + \left[ (\rho A)_n \cdot \left( v_n^* - C_n (p_N^{\prime} - p_P^{\prime}) \right) - (\rho A)_s \cdot \left( v_s^* - C_s (p_P^{\prime} - p_S^{\prime}) \right) \right] = 0\end{split}\]

The above equation can be rearranged as follows:

(23.1.2.6)#\[\begin{split}\left[ (\rho C A)_e + (\rho C A)_w + (\rho C A)_n + (\rho C A)_s \right] p_P^{\prime} = (\rho C A)_e p_E^{\prime} + (\rho C A)_w p_W^{\prime} + (\rho C A)_n p_N^{\prime} + (\rho C A)_s p_S^{\prime} \\ + \left[ (\rho u^* A)_w - (\rho u^* A)_e + (\rho v^* A)_s - (\rho v^* A)_n \right]\end{split}\]

and can be further re-written as:

(23.1.2.7)#\[a_P^{\prime} p_P^{\prime} = a_E^{\prime} p_E^{\prime} + a_W^{\prime} p_W^{\prime} + a_N^{\prime} p_N^{\prime} + a_S^{\prime} p_S^{\prime} + b^{\prime}\]

where

(23.1.2.8)#\[a^{\prime}_P = a^{\prime}_E + a^{\prime}_W + a^{\prime}_N + a^{\prime}_S\]

and the coefficients are given below:

(23.1.2.9)#\[\begin{split}a_E^{\prime} &= (\rho C A)_e, \quad a_W^{\prime} = (\rho C A)_w, \\ a_N^{\prime} &= (\rho C A)_n, \quad a_S^{\prime} = (\rho C A)_s, \\ b^{\prime} &= -\left[ (\rho u^* A)_e - (\rho u^* A)_w + (\rho v^* A)_n - (\rho v^* A)_s \right]\end{split}\]

Equation (23.1.2.9) is the equation for pressure correction \(p^{\prime}\) and replaces the discretized continuity equation. It should be noted that we have used primes for the coefficients in Eq. (23.1.2.9) to distinguish them from the coefficients of the discretized momentum equations. The source term \(b^{\prime}\) in the above equation is the continuity imbalance arising from the incorrect velocity field \(u^{*}\), \(v^{*}\). By solving equation (23.1.2.7), the pressure correction field \(p^{\prime}\) can be obtained at all points. Once the pressure correction field is known, the corrected pressure field is obtained using Eq. (23.1.5) and velocity components through the velocity correction equation, Eq. (23.1.6). The omission of terms such as in the derivation does not affect the final solution because the pressure correction and velocity corrections will all be zero in a converged solution giving \(p^{*}= p\), \(u^{*}= u\), and \(v^{*}= v\).

23.1.3. Under-relaxation of Pressure and Velocity#

From the original correction equations, it can be seen that velocity correction consists of two parts: one from the neighboring velocity corrections and the other from the pressure correction field. Dropping the \(\sum a_{nbr} u^{\prime}_nbr\) and \(\sum a_{nbr} v^{\prime}_nbr\) terms places the entire burden of velocity correction on the pressure correction. The pressure correction equation derived with this approximation is susceptible to producing large values of pressure corrections. The corrected velocities always satisfy continuity, regardless of this approximation; however, if the pressure field is updated with the computed pressure correction field it is susceptible to divergence during the course of outer iterations unless some under-relaxation is used during the iterative process. Thus, the pressure values are obtained from the following:

(23.1.3.1)#\[p = p^{*} + \alpha_P p^{\prime}\]

where \(\alpha_P\) is the pressure under-relaxation factor. If we select \(\alpha_p=1\), the guessed pressure field \(p^{*}\) is corrected by \(p^{\prime}\). However, the corrections \(p^{\prime}\), in particular when the guessed field \(p^{*}\) is far away from the final solution, is often too large for stable computations. A value of \(\alpha_P=0\) would imply no correction at all, which is also undesirable. Taking \(\alpha_P\) between 0 and 1 allows us to add to the guessed field \(p^{*}\) a fraction of the correction field \(p^{\prime}\) that is large enough to move the iterative improvement process forward, but small enough to ensure stable computation.

The corrections to the velocity field, however, should not be under-relaxed or else the corrected velocities will not satisfy mass continuity. However, because of non-linearity, it is necessary to under-relax momentum equations while they are being solved using a linear solver. The iteratively improved velocity components \(u^{\text{new}}\) and \(v^{\text{new}}\) are obtained from:

(23.1.3.2)#\[u^{\text{new}} = \alpha_u u + \left( 1 - \alpha_u \right) u^{n-1}\]
(23.1.3.3)#\[v^{\text{new}} = \alpha_v v + \left( 1 - \alpha_v \right) v^{n-1}\]

where \(\alpha_u\) and \(\alpha_v\) are the under-relaxation factors for the \(u\) and \(v\) components. These factors have values between 0 and 1. \(u\) and \(v\) are the corrected velocity components without relaxation and \(u^{n-1}\) and \(v^{n-1}\) represent their values obtained in the previous iteration. However, under-relaxation for the velocity field is implemented implicitly in the discretized momentum equations. After some algebra it can be shown that with under-relaxation the discretized \(u\) momentum equation takes the form:

(23.1.3.4)#\[\frac{a_P}{\alpha_u} u_P = \sum a_{\text{nbr}} u_{\text{nbr}} - (p_e - p_w) A_x + {}^{(u)}\!b + \left[ \left( 1 - \alpha_u \right) \frac{a_P}{\alpha_u} \right] u_P^{(n-1)}\]

and the discretized v-momentum equation:

(23.1.3.5)#\[\frac{a_P}{\alpha_v} v_P = \sum a_{\text{nbr}} v_{\text{nbr}} - (p_n - p_s) A_y + {}^{(v)}\!b + \left[ \left( 1 - \alpha_v \right) \frac{a_P}{\alpha_v} \right] v_P^{(n-1)}\]

It can be observed from the above equations that velocity under-relaxation serves to enhance the diagonal dominance in the coefficient matrix by increasing the magnitude of the central coefficient \(\alpha_P\) by a factor of \(\alpha_u\) and \(\alpha_v\) for \(u\) and \(v\) momentum equations, respectively. The pressure correction equation is also affected by the velocity under-relaxation and it can be shown that the \(C\) terms of the pressure correction equation become:

(23.1.3.6)#\[C_w = \frac{A_w \alpha_u}{\left( a_P \right)_w}, \quad C_e = \frac{A_e \alpha_u}{\left( a_P \right)_e}, \quad d_s = \frac{A_s \alpha_v}{\left( a_P \right)_s}, \quad d_n = \frac{A_n \alpha_v}{\left( a_P \right)_n}\]

Note that in these formulae \((a_P)_w\), \((a_P)_e\), \((a_P)_s\) and \((a_P)_n\) are the central coefficients of discretized velocity equations at the west, east, south and north faces of the control volume centered around \(P\), respectively.

A correct choice of under-relaxation factors \(\alpha\) is essential for cost-effective simulations. Too large a value of \(\alpha\) may lead to oscillatory or even divergent iterative solutions and a value which is too small will cause extremely slow convergence. The optimum values of under-relaxation factors are flow dependent.

23.1.4. Outline of the method#

The SIMPLE algorithm gives a method of calculating pressure and velocities. The method is iterative and when other scalars are coupled to the momentum equations, the calculation needs to be conducted sequentially. The sequence of operations in the SIMPLE algorithm is shown below.

../_images/simple_algorithm.png

Fig. 23.1.4.1 Sequence of operations in the SIMPLE algorithm.#

23.2. The SIMPLEC algorithm#

The SIMPLEC (SIMPLE-Consistent) algorithm of Van Doormal and Raithby[VDR84] follows the same steps as the SIMPLE algorithm, with the difference that the momentum equations are manipulated so that the SIMPLEC velocity correction equations use an approximation for omitted terms that are less significant than those omitted in SIMPLE.

Note

The equations in this section give the classical steady-grid SIMPLEC derivation and are included to show the origin of the method. Stream uses the same underlying SIMPLEC idea in a collocated unstructured all-speed solver, but with additional momentum-interpolation, unsteady/compressible, and robustness terms in the pressure-correction update. Those additions do not make the method “non-SIMPLEC”; they are implementation refinements of the same SIMPLEC family.

The SIMPLE algorithm neglects the effect of the neighbor velocity corrections, i.e, it uses the following equations for the \(u\) and \(v\) velocity corrections at a node:

(23.2.1)#\[a_P u_P^{\prime} = \sum_{\text{nbr}} a_{\text{nbr}} u_{\text{nbr}}^{\prime} - (p_e^{\prime} - p_w^{\prime}) A_x\]
(23.2.2)#\[a_P v_P^{\prime} = \sum_{\text{nbr}} a_{\text{nbr}} v_{\text{nbr}}^{\prime} - (p_n^{\prime} - p_s^{\prime}) A_y\]

The summation term in the equation above is roughly zero in the SIMPLE method. The SIMPLEC algorithm seeks to mitigate the effects of dropping velocity neighbor correction terms. It retains the neighbor velocity correction terms, but approximates them in the following manner:

(23.2.3)#\[\sum a_{\text{nbr}} u_{\text{nbr}}^{\prime} \approx u_P^{\prime} \sum a_{\text{nbr}}, \quad \sum a_{\text{nbr}} v_{\text{nbr}}^{\prime} \approx v_P^{\prime} \sum a_{\text{nbr}}\]

Thus, the velocity corrections in SIMPLEC are given by:

(23.2.4)#\[\left( a_P - \sum_{\text{nbr}} a_{\text{nbr}} \right) u_P^{\prime} = -\left( p_e^{\prime} - p_w^{\prime} \right) A_x\]
(23.2.5)#\[\left( a_P - \sum_{\text{nbr}} a_{\text{nbr}} \right) v_P^{\prime} = -\left( p_n^{\prime} - p_s^{\prime} \right) A_y\]

Similarly, the face velocities can be written as:

(23.2.6)#\[u_e^{\prime} = -{}^{(u)}\!C_e \left( p_E^{\prime} - p_P^{\prime} \right), \quad v_n^{\prime} = -d_n \left( p_N^{\prime} - p_P^{\prime} \right)\]

where:

(23.2.7)#\[{}^{(u)}\!C_e = \frac{A_e}{a_P - \sum a_{\text{nbr}}}, \quad {}^{(v)}\!C_n = \frac{A_n}{a_P - \sum a_{\text{nbr}}}\]

Note that momentum under-relaxation is still required in the momentum equations so that the denominator remains finite in the steady limit. The discretized pressure-correction equation has the same general structure as in SIMPLE, except that the \(C\) terms are calculated from Eq. (23.2.7) instead of Eq. (23.1.3.6). The sequence of operations is otherwise identical to that of SIMPLE.

Classically, because the neighbor-correction contribution is retained in approximate form, SIMPLEC often requires less pressure under-relaxation than SIMPLE and usually converges faster. In Stream, pressure-correction relaxation and limiting may still be retained as robustness controls, so the implementation should be viewed as a practical SIMPLEC-family formulation rather than the strict textbook special case.

SIMPLE and SIMPLEC can be shown to be closely related to each other. Recall that pressure correction for SIMPLE is given by:

(23.2.8)#\[p = p^* + \alpha_P p^{\prime}\]

In the classical steady SIMPLEC derivation, one often writes the pressure update without an additional pressure under-relaxation:

(23.2.9)#\[p = p^* + p^{\prime}\]

We can think of the SIMPLEC algorithm as solving for a variable \(\bar{p}^{\prime}= \alpha_P p^{\prime}\) and then the pressure correction equation employed by the SIMPLEC algorithm can be written as:

(23.2.10)#\[\sum_{nbr} a^{'}_P \bar{p}^{\prime}_P = \sum_{nbr} a^{'}_{nbr} \bar{p}^{\prime}_{nbr} + b\]

with coefficients of the form:

(23.2.11)#\[a^{\prime}_{nbr} = \frac{\rho A_e^2}{a_P - \sum a_{nbr}}\]

Recall that the coefficient \(a\) with the prime belongs to the pressure correction equation and those without the prime belong to the momentum equation. Consider the case when \(S_P=0\) for which the central coefficient for the momentum equations is given by:

(23.2.12)#\[a_P = \frac{1}{\alpha_u} \sum_{nbr} a_{nbr}\]

Thus, neighbor coefficients in the pressure correction equation of the SIMPLEC algorithm are of the following form:

(23.2.13)#\[a_{\text{nbr}}^{\prime} = \frac{\rho \left( A_e \right)^2}{\left( \frac{1 - \alpha_u}{\alpha_u} \right) \sum a_{\text{nbr}}}\]

The \(p^{\prime}\) equation for the SIMPLE algorithm is the following:

(23.2.14)#\[a_P P_P^{\prime} = \sum_{\text{nbr}} a_{\text{nbr}} P_{\text{nbr}}^{\prime} + b\]

Multiplying and dividing by \(\alpha_P\) , we can write the above as:

(23.2.15)#\[\left( \frac{a_P}{\alpha_P} \right) \left( \alpha_P P_P' \right) = \sum_{\text{nbr}} \left( \frac{a_{\text{nbr}}}{\alpha_P} \right) \left( \alpha_P P_{\text{nbr}}' \right) + b\]

which can be written in terms of \(\bar{p}^{\prime}\) as:

(23.2.16)#\[\left( \frac{a_P}{\alpha_P} \right) P_P^{\prime} = \sum_{\text{nbr}} \left( \frac{a_{\text{nbr}}}{\alpha_P} \right) P_{\text{nbr}}^{\prime} + b\]

Therefore, we can write:

(23.2.17)#\[a_{\text{nbr}} = \frac{\rho C_e \Delta y}{a_P} = \frac{\rho \Delta y^2}{\left( \sum_{\text{nbr}} a_{\text{nbr}} \right)_P / \alpha_u}\]

which can be further written as:

(23.2.18)#\[\frac{a_{\text{nbr}}}{\alpha_P} = \frac{\rho \Delta y^2}{\frac{\alpha_P}{\alpha_u} \left( \sum_{\text{nbr}} a_{\text{nbr}} \right)_P}\]

Now, let us compare the coefficients of SIMPLE and SIMPLEC. If we choose:

(23.2.19)#\[\alpha_P = 1 - \alpha_u\]

in the classical steady-grid SIMPLE algorithm, we would effectively get the same corrected pressure each iteration for both SIMPLE and SIMPLEC. With this viewpoint, it can be seen that the two algorithms are closely related. If one uses the SIMPLE algorithm with \(\alpha_P = 1 - \alpha_u\), then the classical textbook update resembles SIMPLEC when \(S_P=0\). Stream retains this same basic SIMPLEC idea, while using implementation-specific coefficient and correction forms suited to the all-speed collocated solver.

23.3. References#

[RC83]

C.L. Rhie and W.L. Chow. A numerical study of the turbulent flow past an isolated airfoil with trailing edge separation. AIAA Journal, 21:1525–1532, 1983.

[VDR84]

J.P. Van Doormaal and G.D. Raithby. Enhancements of the simple method for predicting incompressible fluid flows. Numerical Heat Transfer, 7(2):147–163, 1984. URL: https://www.tandfonline.com/doi/abs/10.1080/01495728408961817, doi:10.1080/01495728408961817.