5. Momentum-Weighted Interpolation on Collocated Unstructured Grids#

The momentum equations provide cell-centered velocities. Continuity and convection require flow rates through the cell faces. Momentum-weighted interpolation uses the discrete momentum equation to construct these face fluxes while preserving their response to pressure differences between neighboring cells.

The face area vector \(\vec A_f\) points from the designated left cell to the right cell. The volumetric and mass fluxes use this same orientation:

(5.1)#\[\dot{\Omega}_f = \vec{u}_f\cdot\vec{A}_f, \qquad \dot m_f = \rho_f\dot{\Omega}_f\]

Here \(\vec{u}_f\) is the face-averaged velocity. On a collocated grid, pressure and velocity are stored at cell centers. We estimate \(\vec{u}_f\) from the cell-centered momentum solution.

In a cell balance, the incidence sign \(\sigma_{Pf}\) is \(+1\) when \(P\) is the left cell of face \(f\) and \(-1\) when it is the right cell. An ordinary boundary face uses \(+1\) for its physical owner. These are the face-orientation conventions used below. On a fixed grid, continuity for cell \(P\) sums over its faces \(\mathcal F_P\):

(5.2)#\[\frac{\partial(\rho_P\Omega_P)}{\partial t} + \sum_{f\in\mathcal F_P}\sigma_{Pf}\rho_f\dot{\Omega}_f =0\]

The same mass flux carries momentum, energy, species, and other transported quantities through the face. For example, the convective flux of velocity component \(u_i\) is \(\dot m_f u_{i,f}\), where \(u_{i,f}\) is the reconstructed face value.

Momentum interpolation first constructs a provisional face flux \(\dot{\Omega}_f^*\) from the solved cell velocities. The star marks this provisional value. Pressure correction then adjusts the flux to satisfy continuity. The classical construction is also called Rhie–Chow interpolation [RC83].

The derivation starts with an orthogonal face and an unrelaxed momentum equation. Later sections add general face geometry, velocity under-relaxation, time history, balanced momentum sources, variable density, and moving grids. The face-flux formula also supplies the coefficient \(d_f\) used in the pressure-correction equation.

5.1. Formulations#

For the standard first- and second-order upwind fluxes, momentumInterpolationOptions selects the formulation. The default setting, momentumInterpolationOptions: <form=new>, selects Pascau interpolation. The names are case-sensitive. This chapter develops the four formulations listed below.

A formulation specifies the momentum coefficients, density weighting and iteration and time histories used to construct the provisional face flux. These coupled choices distinguish the four methods.

Pressure reconstruction supplies the cell pressure force used in that construction. Its gradient estimate, limiting and geometric weights are additional discretization choices, subject to the assumptions of the selected method. The face-pressure reconstructions below distinguish these choices from the direct pressure difference between adjacent cells.

SIMPLE and SIMPLEC then approximate the cell-velocity change caused by a pressure correction. Substituting that change into the selected face formula gives the flux correction and the pressure equation, as derived in Connection to the Pressure-Correction Equation. This approximation affects iterative convergence; at full convergence the selected momentum and face-flux equations still determine the solution.

Time-integration scope

The complete comparisons below use BDF1 on a fixed mesh. The multistep and Crank–Nicolson section extends the Pascau construction specifically. An extension of another form must use its own cell and face histories with the same time discretization; changing the temporal diagonal alone is insufficient.

The conservativePressure modifier is described in Consistency with Momentum Source Terms. Denner’s skewnessCorrection, highOrder, and modified options are described in Geometry and Source Modifiers.

5.2. Why Cell-Velocity Interpolation Is Insufficient#

For a single interior face \(f\), label its left cell \(P\) and its right cell \(N\). The face area vector is

(5.2.1)#\[\vec{A}_f=A_f\hat{\vec{n}}_f\]

Here \(A_f\) is the face area and \(\hat{\vec{n}}_f\) is the stored unit normal. Interpolating the cell velocities with weights \(w_P\) and \(w_N\) gives

(5.2.2)#\[\vec{u}_f = \mathcal{I}_f(\vec{u}) = w_P\vec{u}_P+w_N\vec{u}_N, \qquad w_P+w_N=1\]

On a uniform one-dimensional mesh with spacing \(\Delta x\), let the cell pressures alternate between \(p_0+\Delta p\) and \(p_0-\Delta p\):

(5.2.3)#\[p_i=p_0+(-1)^i\Delta p\]

The cells on either side of cell \(i\) have the same pressure, so the centered pressure gradient is zero:

(5.2.4)#\[\frac{p_{i+1}-p_{i-1}}{2\Delta x}=0\]

This pattern produces no cell pressure gradient and hence no pressure-gradient contribution to the cell velocity. The interpolated face flux cannot detect it. The pattern can persist while the flux satisfies continuity; this is called pressure checkerboarding.

The pressure difference between adjacent cells is

(5.2.5)#\[p_{i+1}-p_i=-2(-1)^i\Delta p\ne0\]

This difference captures the alternating pattern. Momentum-weighted interpolation uses it to make the face flux respond to that pattern. Starting from the discrete momentum equation, it removes the interpolated cell pressure-gradient term and replaces it with a term based on \(p_N-p_P\). The resulting face flux has the form

(5.2.6)#\[\dot{\Omega}_f^* = \underbrace{ \mathcal{I}_f(\vec{u})\cdot\vec{A}_f }_{\text{volumetric flux from interpolated velocity}} + \underbrace{ \text{momentum-interpolation term using }p_N-p_P }_{\text{direct pressure coupling}}\]

The next section derives this face-flux correction from the discrete momentum equation.

5.3. From the Momentum Row to the Face Flux#

Our goal is the face-flux formula outlined in Eq. (5.2.6): an interpolated cell-velocity flux plus a pressure-dependent correction. We first assemble the cell momentum equation, separate its pressure-gradient term, and then use those quantities to construct the face flux.

Start with a fixed grid, BDF1 time integration, and an unrelaxed momentum equation with no mass source. The velocity \(\vec u_P\) is the current cell velocity; the superscript \(n\) identifies the previous physical time level. In the cell-row assembly, \(P\) denotes the cell being assembled and \(\sigma_{Pf}\) supplies the sign of each incident face.

5.3.1. From the Transport Row to the Momentum Row#

Set \(\phi=u_i\) in the transport chapter’s algebraic row:

(5.3.1.1)#\[{}^{(u_i)}\!a_P (u_i)_P =\sum_{N\in\mathcal N(P)}{}^{(u_i)}\!a_{P,N}(u_i)_N +{}^{(u_i)}\!b_P\]

Here \({}^{(u_i)}\!a_P\) is the diagonal coefficient, \({}^{(u_i)}\!a_{P,N}\) multiplies the velocity in neighbor \(N\), and \({}^{(u_i)}\!b_P\) is the complete known right-hand side (RHS).

Use the componentwise viscous treatment developed in Chapter 4: the two-point diffusion term is implicit, and the remaining stress terms are explicit. With scalar implicit sources, all three velocity components share the same diagonal and neighbor coefficients. Denote these shared coefficients by \({}^{(u)}\!a_P\) and \({}^{(u)}\!a_{P,N}\), and collect the component right-hand sides into \({}^{(u)}\!\vec b_P\). The vector row is

(5.3.1.2)#\[{}^{(u)}\!a_P\vec u_P =\sum_{N\in\mathcal N(P)}{}^{(u)}\!a_{P,N}\vec u_N +{}^{(u)}\!\vec b_P\]

To obtain the transport chapter’s continuity-added form, subtract \(\vec u_P\) times the discrete continuity equation from the momentum equation. The temporal part becomes

(5.3.1.3)#\[\frac{\Omega_P}{\Delta t} (\rho_P^{n+1}\vec u_P-\rho_P^n\vec u_P^n) -\vec u_P\frac{\Omega_P}{\Delta t} (\rho_P^{n+1}-\rho_P^n) =\frac{\rho_P^n\Omega_P}{\Delta t}(\vec u_P-\vec u_P^n)\]

Expand the velocity difference to identify the temporal diagonal and known time-history term:

(5.3.1.4)#\[\frac{\rho_P^n\Omega_P}{\Delta t}(\vec u_P-\vec u_P^n) =\frac{\rho_P^n\Omega_P}{\Delta t}\vec u_P -\frac{\rho_P^n\Omega_P}{\Delta t}\vec u_P^n\]

The coefficient of \(\vec u_P\) is \({}^{(u)}\!a_{P,\mathrm{time}}\). Moving the old-time term to the RHS gives the positive contribution \({}^{(u)}\!\vec b_{P,\mathrm{time}}\).

The same continuity subtraction changes each face’s convection contribution to \(\sigma_{Pf}\dot m_f(\vec u_f-\vec u_P)\). Here \(\dot m_f\) retains the stored left-to-right orientation. With first-order upwinding and \(N\) denoting the cell across this face,

(5.3.1.5)#\[\sigma_{Pf}\dot m_f(\vec u_f-\vec u_P) =\max(-\sigma_{Pf}\dot m_f,0) (\vec u_P-\vec u_N)\]

The factor \(\max(-\sigma_{Pf}\dot m_f,0)\) is the incoming mass-flux magnitude for \(P\). It equals \(\max(-\dot m_f,0)\) for \(P\) on the left and \(\max(\dot m_f,0)\) for \(P\) on the right. Moving the neighbor term to the RHS adds this magnitude to both the diagonal and the neighbor coefficient. The implicit viscous flux \(\mathcal K_f(\vec u_N-\vec u_P)\) contributes \(\mathcal K_f\) to each coefficient in the same way. Here \(\mathcal K_f\) is the two-point diffusion coefficient in Eq. (4.2.1.24), evaluated with the momentum diffusivity.

Collecting the interior-face contributions gives

(5.3.1.6)#\[\begin{split}{}^{(u)}\!a_P &={}^{(u)}\!a_{P,\mathrm{time}} +{}^{(u)}\!a_{P,\mathrm{spatial}} \\ {}^{(u)}\!a_{P,\mathrm{time}} &=\frac{\rho_P^n\Omega_P}{\Delta t} \\ {}^{(u)}\!a_{P,\mathrm{spatial}} &=\sum_{f\in\mathcal F_P^{\mathrm{int}}} \left[\max(-\sigma_{Pf}\dot m_f,0)+\mathcal K_f\right] +{}^{(u)}\!a_{P,\mathrm{src}} \\ {}^{(u)}\!a_{P,N} &=\sum_{f\in\mathcal F(P,N)} \left[\max(-\sigma_{Pf}\dot m_f,0)+\mathcal K_f\right]\end{split}\]

Here \(\mathcal F_P^{\mathrm{int}}\) is the set of interior faces of \(P\), and \(\mathcal F(P,N)\) contains the faces connecting \(P\) to \(N\). An integrated source \(-c_P\vec u_P+\vec s_P\) adds \(c_P\) to the diagonal and \(\vec s_P\) to the known RHS. Boundary conditions supply the corresponding boundary-face contributions.

The complete unrelaxed RHS is

(5.3.1.7)#\[{}^{(u)}\!\vec b_P =\frac{\rho_P^n\Omega_P}{\Delta t}\vec u_P^n +{}^{(u)}\!\vec b_{P,\mathrm{conv}} +{}^{(u)}\!\vec b_{P,\mathrm{diff}} +{}^{(u)}\!\vec b_{P,\mathrm{src}} -\vec{\mathcal P}_P\]

The integrated pressure-gradient contribution is \(\vec{\mathcal P}_P\); its force in the momentum equation is \(-\vec{\mathcal P}_P\). Pressure is held at its current outer-iteration estimate during the momentum solve. The convection correction \({}^{(u)}\!\vec b_{P,\mathrm{conv}}\) contains the higher-order reconstruction terms. The viscous correction \({}^{(u)}\!\vec b_{P,\mathrm{diff}}\) contains the non-orthogonal and remaining stress terms. Both are evaluated from lagged reconstructed values. The term \({}^{(u)}\!\vec b_{P,\mathrm{src}}\) collects the known sources.

Contributions to the Momentum Row

The table collects the contributions to the momentum row in Eq. (5.3.1.2) for the unrelaxed BDF1 equation after continuity subtraction. Add the entries in each column to assemble the corresponding coefficient or RHS. The first-order convection and two-point viscous rows sum contributions from interior faces.

Contribution

Adds to diagonal \({}^{(u)}\!a_P\)

Adds to neighbor coefficient \({}^{(u)}\!a_{P,N}\)

Adds to known RHS \({}^{(u)}\!\vec b_P\)

BDF1 storage

\(\rho_P^n\Omega_P/\Delta t\)

\(0\)

\((\rho_P^n\Omega_P/\Delta t)\vec u_P^n\)

First-order convection

\(\sum_{f\in\mathcal F_P^{\mathrm{int}}}\max(-\sigma_{Pf}\dot m_f,0)\)

\(\sum_{f\in\mathcal F(P,N)}\max(-\sigma_{Pf}\dot m_f,0)\)

\(0\)

Two-point viscous flux

\(\sum_{f\in\mathcal F_P^{\mathrm{int}}}\mathcal K_f\)

\(\sum_{f\in\mathcal F(P,N)}\mathcal K_f\)

\(0\)

Higher-order convection correction

\(0\)

\(0\)

\({}^{(u)}\!\vec b_{P,\mathrm{conv}}\)

Explicit viscous correction

\(0\)

\(0\)

\({}^{(u)}\!\vec b_{P,\mathrm{diff}}\)

Integrated source \(-c_P\vec u_P+\vec s_P\)

\(c_P\)

\(0\)

\(\vec s_P\)

Pressure

\(0\)

\(0\)

\(-\vec{\mathcal P}_P\)

For the diagonal, each face sum covers all interior faces of \(P\). For the neighbor coefficient, it covers only the faces connecting \(P\) to that neighbor \(N\).

Boundary-face convection and viscous contributions are added according to the boundary condition. Prescribed boundary values enter the known RHS, while any coefficient multiplying the cell velocity enters the diagonal.

The diagonal and neighbor coefficients have units of mass per time. Every term in the vector row, including its RHS, has units of force.

These contributions supply the diagonal, neighbor coefficients, and known RHS in Eq. (5.3.1.2). We can now use that assembled equation to identify the pressure-gradient term in the cell velocity.

5.3.2. Collecting the Nonpressure Contribution#

To separate the pressure term, substitute the complete RHS from Eq. (5.3.1.7) into the vector momentum row. Collect the neighbor-velocity terms and the nonpressure RHS terms into \(\vec H_P\):

(5.3.2.1)#\[{}^{(u)}\!a_P\vec u_P =\underbrace{\begin{gathered} \sum_{N\in\mathcal N(P)}{}^{(u)}\!a_{P,N}\vec u_N + {}^{(u)}\!\vec b_{P,\mathrm{time}} +{}^{(u)}\!\vec b_{P,\mathrm{conv}} + {}^{(u)}\!\vec b_{P,\mathrm{diff}} + {}^{(u)}\!\vec b_{P,\mathrm{src}} \end{gathered}}_{\vec H_P} -\vec{\mathcal P}_P\]

After solving the momentum equations, evaluate \(\vec H_P\) from the neighbor velocities and known RHS terms. The cell relation becomes

(5.3.2.2)#\[{}^{(u)}\!a_P\vec{u}_P = \vec{H}_P-\vec{\mathcal{P}}_P\]
../_images/momentum_row_to_face.svg

Fig. 5.3.2.1 The momentum row supplies a cell velocity. Momentum interpolation replaces its cell pressure-gradient term with a face pressure-difference term. Pressure correction then adjusts the face flux to satisfy continuity.#

For the classical gradient form,

(5.3.2.3)#\[\vec{\mathcal{P}}_P = \Omega_P\nabla p_P\]

Substitute this pressure contribution into the row and divide every term by \({}^{(u)}\!a_P\):

(5.3.2.4)#\[\vec{u}_P = \frac{\vec{H}_P}{{}^{(u)}\!a_P} - \frac{\Omega_P}{{}^{(u)}\!a_P}\nabla p_P\]

The second term is the pressure-gradient term in the cell velocity equation. Its coefficient, \(\Omega_P/{}^{(u)}\!a_P\), comes from dividing the momentum row by its diagonal. To see how this coefficient relates changes in the two quantities, hold \(\Omega_P\), \({}^{(u)}\!a_P\), and \(\vec H_P\) fixed. A change in the pressure gradient then gives

(5.3.2.5)#\[\Delta\vec u_P =-\frac{\Omega_P}{{}^{(u)}\!a_P}\Delta(\nabla p_P)\]

Here \(\Delta\) denotes a change. The pressure-gradient change is the input; the cell-velocity change is the output. This is the sensitivity of cell velocity to the pressure gradient for the fixed momentum row. The minus sign gives the direction of the velocity change, and \(\Omega_P/{}^{(u)}\!a_P\) sets its magnitude. We use this coefficient when constructing the pressure term at the face.

Define the momentum pseudovelocity as the nonpressure velocity contribution:

(5.3.2.6)#\[\hat{\vec{u}}_P \equiv \frac{\vec{H}_P}{{}^{(u)}\!a_P}\]

Rearrange Eq. (5.3.2.4) to evaluate it from the solved cell velocity:

(5.3.2.7)#\[\hat{\vec{u}}_P = \vec{u}_P + \frac{\Omega_P}{{}^{(u)}\!a_P}\nabla p_P\]

We now have the pseudovelocity \(\hat{\vec u}_P\) and the coefficient \(\Omega_P/{}^{(u)}\!a_P\) multiplying the pressure gradient. The face construction uses both quantities from each adjacent cell.

5.3.3. Constructing the Flux on an Orthogonal Face#

To construct the face-normal velocity from the cell relation in Eq. (5.3.2.4), we need a face value of the pseudovelocity, a coefficient multiplying the pressure gradient, and an estimate of the face-normal pressure gradient.

For the face construction, label the left cell \(P\) and the right cell \(N\). Take an orthogonal face, whose cell-center line is parallel to its stored normal. First interpolate the nonpressure velocity from the two cells:

(5.3.3.1)#\[\hat{\vec{u}}_f \approx w_P\hat{\vec{u}}_P+w_N\hat{\vec{u}}_N, \qquad w_P+w_N=1\]

Interpolate the coefficient \(\Omega/{}^{(u)}\!a\) multiplying the pressure gradient using the same weights:

(5.3.3.2)#\[\left(\frac{\Omega}{{}^{(u)}\!a}\right)_f \approx w_P\frac{\Omega_P}{{}^{(u)}\!a_P} + w_N\frac{\Omega_N}{{}^{(u)}\!a_N}\]

These interpolations supply the first two quantities. For the remaining quantity, the face-normal pressure gradient, use the pressure difference between the two cells. Let \(\vec x_P\) and \(\vec x_N\) be their center positions, with

(5.3.3.3)#\[\vec{r}_{PN} \equiv \vec{x}_N-\vec{x}_P\]

The center spacing on this orthogonal face is

(5.3.3.4)#\[\ell_f \equiv \vec{r}_{PN}\cdot\hat{\vec{n}}_f\]

On this orthogonal face, \(\ell_f\) is also the center-to-center distance.

Approximate the face-normal pressure gradient by the pressure difference divided by that distance:

(5.3.3.5)#\[\left(\frac{\partial p}{\partial n}\right)_f \approx \frac{p_N-p_P} {\ell_f}\]

This gives the exact gradient for a linear pressure field. Equations (5.3.3.1), (5.3.3.2), and (5.3.3.5) now supply all three quantities. Using these three approximations in the face form of Eq. (5.3.2.4) gives

(5.3.3.6)#\[\vec{u}_f\cdot\hat{\vec{n}}_f \approx \left( w_P\hat{\vec{u}}_P+w_N\hat{\vec{u}}_N \right)\cdot\hat{\vec{n}}_f -\left(w_P\frac{\Omega_P}{{}^{(u)}\!a_P} + w_N\frac{\Omega_N}{{}^{(u)}\!a_N} \right) \frac{p_N-p_P} {\ell_f}\]

Multiply the normal velocity by the face area to obtain volume flow rate:

(5.3.3.7)#\[\dot{\Omega}_f = A_f\left(\vec{u}_f\cdot\hat{\vec{n}}_f\right)\]

Substituting the reconstructed normal velocity defines the provisional flux:

(5.3.3.8)#\[\dot{\Omega}_f^* = \left(w_P\hat{\vec{u}}_P+w_N\hat{\vec{u}}_N \right)\cdot\vec{A}_f - A_f \left( w_P\frac{\Omega_P}{{}^{(u)}\!a_P} + w_N\frac{\Omega_N}{{}^{(u)}\!a_N} \right) \frac{p_N-p_P} {\ell_f}\]

5.3.4. Writing the Flux in Terms of Cell Velocities#

Equation (5.3.3.8) gives the provisional flux in terms of pseudovelocities. Substituting their definitions expresses the same flux using the solved cell velocities and identifies the momentum-interpolation correction. The two cell relations are

(5.3.4.1)#\[\begin{split}\hat{\vec{u}}_P &= \vec{u}_P + \frac{\Omega_P}{{}^{(u)}\!a_P}\nabla p_P \\ \hat{\vec{u}}_N &= \vec{u}_N + \frac{\Omega_N}{{}^{(u)}\!a_N}\nabla p_N\end{split}\]

Substitute these expressions into the interpolated pseudovelocity term in Eq. (5.3.3.8) and collect the velocity and pressure terms:

(5.3.4.2)#\[\left(w_P\vec{u}_P+w_N\vec{u}_N\right)\cdot\vec{A}_f + A_f \left[ w_P\frac{\Omega_P}{{}^{(u)}\!a_P}\nabla p_P + w_N\frac{\Omega_N}{{}^{(u)}\!a_N}\nabla p_N \right]\cdot\hat{\vec{n}}_f\]

The first term is the interpolated cell flux. The second adds back the cell pressure-gradient term, removing that term from the interpolated velocity. Substitute this expansion into Eq. (5.3.3.8):

Provisional Face Flux

(5.3.4.3)#\[\begin{split}\dot{\Omega}_f^* ={}& \left(w_P\vec{u}_P+w_N\vec{u}_N\right)\cdot\vec{A}_f + \underbrace{ A_f \left[ w_P\frac{\Omega_P}{{}^{(u)}\!a_P}\nabla p_P + w_N\frac{\Omega_N}{{}^{(u)}\!a_N}\nabla p_N \right]\cdot\hat{\vec{n}}_f }_{\text{remove cell pressure-gradient term}} \\ &- \underbrace{ A_f \left( w_P\frac{\Omega_P}{{}^{(u)}\!a_P} + w_N\frac{\Omega_N}{{}^{(u)}\!a_N} \right) \frac{p_N-p_P} {\ell_f} }_{\text{insert face pressure-difference term}}\end{split}\]

This completes the construction outlined in Eq. (5.2.6). The first term interpolates the cell velocities; the remaining two terms form the momentum-interpolation correction.

Multiply the volume flux by the face density to obtain the mass flux:

(5.3.4.4)#\[\dot m_f^*=\rho_f\dot{\Omega}_f^*\]

5.3.5. A Compact Pressure-Difference Form#

Equation (5.3.4.3) contains two pressure terms: the positive term formed from the reconstructed cell gradients and the negative term formed from \(p_N-p_P\). We now combine them to express the correction as a difference between two estimates of the pressure change across the face.

To give these terms a common coefficient on the orthogonal face, interpolate the coefficient \(\Omega/{}^{(u)}\!a\) and the pressure gradient separately, then multiply the two interpolated quantities. This gives the product approximation:

(5.3.5.1)#\[w_P\frac{\Omega_P}{{}^{(u)}\!a_P}\nabla p_P+w_N\frac{\Omega_N}{{}^{(u)}\!a_N}\nabla p_N \approx \left(w_P\frac{\Omega_P}{{}^{(u)}\!a_P}+w_N\frac{\Omega_N}{{}^{(u)}\!a_N}\right) \left(w_P\nabla p_P+w_N\nabla p_N\right)\]

Use \(\mathcal I_f(q)=w_Pq_P+w_Nq_N\) to write these interpolations more compactly. The center-to-center vector on this face is \(\vec r_{PN}=\ell_f\hat{\vec n}_f\). The component of the interpolated gradient normal to the face can therefore be written as

(5.3.5.2)#\[\mathcal I_f(\nabla p)\cdot\hat{\vec n}_f =\frac{\mathcal I_f(\nabla p)\cdot\vec r_{PN}}{\ell_f}\]

Apply the product approximation and substitute this geometric identity into the cell pressure term:

(5.3.5.3)#\[A_f\mathcal I_f\left(\frac{\Omega}{{}^{(u)}\!a}\nabla p\right)\cdot\hat{\vec n}_f \approx\frac{A_f}{\ell_f}\mathcal I_f\left(\frac{\Omega}{{}^{(u)}\!a}\right) \left[\mathcal I_f(\nabla p)\cdot\vec r_{PN}\right]\]

The two pressure terms now share a coefficient and denominator:

(5.3.5.4)#\[\begin{split}&\frac{A_f}{\ell_f}\mathcal I_f\left(\frac{\Omega}{{}^{(u)}\!a}\right) \left[\mathcal I_f(\nabla p)\cdot\vec r_{PN}\right] \\ &\quad-\frac{A_f}{\ell_f}\mathcal I_f\left(\frac{\Omega}{{}^{(u)}\!a}\right) (p_N-p_P)\end{split}\]

Factor out the common coefficient. The bracket compares the direct pressure change \(p_N-p_P\) with the change \(\mathcal I_f(\nabla p)\cdot\vec r_{PN}\) obtained from the cell gradients:

(5.3.5.5)#\[-\frac{A_f}{\ell_f}\mathcal I_f\left(\frac{\Omega}{{}^{(u)}\!a}\right) \Bigl[ p_N-p_P -\mathcal I_f(\nabla p)\cdot\vec r_{PN} \Bigr]\]

Substitute this combined pressure term into Eq. (5.3.4.3):

(5.3.5.6)#\[\begin{split}\dot\Omega_f^* \approx{}&A_f\mathcal I_f(\vec u)\cdot\hat{\vec n}_f \\ &-\underbrace{\frac{A_f}{\ell_f}\mathcal I_f\left(\frac{\Omega}{{}^{(u)}\!a}\right) \left[(p_N-p_P)-\mathcal I_f(\nabla p)\cdot\vec r_{PN}\right]} _{\text{momentum-interpolation correction}}\end{split}\]

This is the compact form of the flux in Eq. (5.3.4.3), using the product approximation in Eq. (5.3.5.1). Its correction compares the adjacent-cell pressure difference with the pressure change obtained from the reconstructed cell gradients.

For a linear pressure field with exact reconstructed gradients, the two pressure changes agree and the correction is zero. For the alternating field in the checkerboard example, the cell gradients are zero, and the adjacent-cell pressure difference produces a nonzero face-flux correction.

The product approximation is the additional step that made this compact form possible. The difference between the original interpolated product and its approximation is

(5.3.5.7)#\[\begin{split}&\mathcal I_f\left(\frac{\Omega}{{}^{(u)}\!a}\nabla p\right) -\mathcal I_f\left(\frac{\Omega}{{}^{(u)}\!a}\right)\mathcal I_f(\nabla p) \\ &\quad=w_Pw_N\left(\frac{\Omega_P}{{}^{(u)}\!a_P} -\frac{\Omega_N}{{}^{(u)}\!a_N}\right)(\nabla p_P-\nabla p_N)\end{split}\]

This approximation is exact when either the coefficient \(\Omega/{}^{(u)}\!a\) or the reconstructed pressure gradient is the same in both cells.

The classical Cartesian derivation develops the uniform-grid expression and its Taylor expansion, which describes the accuracy of the face interpolation for smooth pressure fields.

5.3.6. Geometry and the Two Pressure Reconstructions#

The preceding construction assumes that the cell-center line is parallel to the face normal. For a non-orthogonal face, we must account for their different directions when reconstructing the normal pressure gradient.

For a general face, use the transport chapter’s center-line geometry: \(d_{PN}=\lVert\vec r_{PN}\rVert\), \(\hat{\vec r}_{PN}=\vec r_{PN}/d_{PN}\), and \(\ell_f=\vec r_{PN}\cdot\hat{\vec n}_f>0\), with \(P\) and \(N\) in the stored left-to-right order. The angle between \(\hat{\vec r}_{PN}\) and \(\hat{\vec n}_f\) measures non-orthogonality. Face-center skewness is the displacement of the face centroid from the chosen interpolation point on the center line.

../_images/momentum_face_geometry.svg

Fig. 5.3.6.1 Cell-center direction, face normal, and face-centroid displacement.#

Let \(\vec r_t=\vec r_{PN}-\ell_f\hat{\vec n}_f\) be the transverse part of the center-to-center vector. For a linear pressure field,

(5.3.6.1)#\[p_N-p_P =\ell_f\nabla p\cdot\hat{\vec n}_f+\nabla p\cdot\vec r_t\]

Divide by \(\ell_f\) and subtract the transverse term to obtain the normal pressure gradient. Using interpolated cell gradients for that term gives

(5.3.6.2)#\[\left(\frac{\partial p}{\partial n}\right)_f \approx\frac{p_N-p_P}{\ell_f} -\frac{\mathcal I_f(\nabla p)\cdot\vec r_t}{\ell_f}\]

The first term uses the adjacent-cell pressure difference. The second is the transverse correction, evaluated from lagged reconstructed cell gradients. Keeping only the first term gives the two-point reconstruction in Eq. (5.3.3.5) [FP02].

The normal derivative and the face pressure used in the cell momentum balance are different quantities. A transverse correction to the derivative does not correct a pressure value interpolated away from the face centroid. The latter requires a face-value reconstruction, developed below. In either construction, the two pressure derivatives subtracted in the MI term must be measured in the same direction.

The classical, Pascau and Choi derivations below use orthogonal face geometry. Their relaxation and time-history algebra does not specify a unique extension to nonorthogonal faces. Such an extension must state how both the cell and face pressure terms are projected. Denner’s construction in Denner Unified Momentum-Weighted Interpolation makes this choice explicitly by comparing both terms along the center line.

5.3.7. Face Pressure and the Cell Pressure Force#

The pressure term in the cell momentum balance approximates a surface integral. With one pressure value \(p_f\) per face, define the integrated pressure gradient as

(5.3.7.1)#\[\vec{\mathcal P}_P =\sum_{f\in\mathcal F_P}\sigma_{Pf}p_f\vec A_f\]

Its contribution to momentum is \(-\vec{\mathcal P}_P\). A shared face pressure gives equal and opposite contributions to its two cells. The choice of \(p_f\) determines the accuracy of this force.

Central interpolation (pressureReconstruction=CD) uses

(5.3.7.2)#\[p_f=w_Pp_P+w_Np_N \qquad w_P+w_N=1\]

The ordinary CD weights use the distances from each cell center to the face: \(w_N=\lVert\vec x_f-\vec x_P\rVert/ (\lVert\vec x_f-\vec x_P\rVert+\lVert\vec x_N-\vec x_f\rVert)\). Denner instead uses the projected-distance weights in Eq. (5.8.1.5). In each case, these are the weights used in \(\mathcal I_f\) for the pressure reconstruction.

For a linear pressure field, central interpolation gives the exact pressure at \(w_P\vec x_P+w_N\vec x_N\). This point need not be the face centroid. Taylor expansion from that point to \(\vec x_f\) gives the corrected form

(5.3.7.3)#\[\vec r_f=\vec x_f-(w_P\vec x_P+w_N\vec x_N) \qquad p_f=w_Pp_P+w_Np_N+\mathcal I_f(\nabla p)\cdot\vec r_f\]

For a linear field with constant gradient, \(w_Pp_P+w_Np_N=p(\vec x_f)-\nabla p\cdot\vec r_f\). The added term therefore recovers \(p(\vec x_f)\) when the reconstructed gradients are exact. Denner’s highOrder option uses this correction with its CD weights.

The MUSCL pressure reconstruction first extrapolates from each neighboring cell and then averages the two face values:

(5.3.7.4)#\[\begin{split}p_{f,P}&=p_P+\Psi_P\nabla p_P\cdot(\vec x_f-\vec x_P) \\ p_{f,N}&=p_N+\Psi_N\nabla p_N\cdot(\vec x_f-\vec x_N) \\ p_f&=\frac12(p_{f,P}+p_{f,N})\end{split}\]

Here \(\Psi\) is the gradient limiter used in the transport chapter. The value \(\Psi=1\) leaves the gradient unchanged. With exact gradients and \(\Psi_P=\Psi_N=1\), both extrapolations equal \(p(\vec x_f)\) for a linear field. Unlimited MUSCL and corrected CD thus agree for that field, even with unequal geometric weights. They generally differ for curved pressure fields, approximate gradients or active limiting. Setting both MUSCL limiters to zero gives the arithmetic mean of the cell pressures, which equals distance-weighted CD only for equal weights or equal pressures. The option pressureReconstruction=MUSCL selects this averaged pressure; it is the default in momentumEquationOptions.

Substitute the selected \(p_f\) into Eq. (5.3.7.1) to obtain the cell pressure contribution. On a planar face, a linear pressure also satisfies

(5.3.7.5)#\[\int_{A_f}p\hat{\vec n}_f\,dA=p(\vec x_f)\vec A_f \qquad \vec x_f=\frac1{A_f}\int_{A_f}\vec x\,dA\]

Thus exact reconstruction at the area centroid integrates a linear pressure exactly. Exact reconstruction at an arbitrary face point does not have this property. Curved pressure fields still incur quadrature error, and a nonplanar face requires its varying normal to be included in the surface integration. These spatial approximations affect the converged momentum balance, independent of how accurately the pressure-correction iteration is solved.

5.4. Classical Rhie–Chow Form and Under-Relaxation#

This section describes momentumInterpolationOptions: <form=old>, including its Majumdar iteration-history term.

Iteration and Stage Notation

The superscript \(k\) identifies a completed outer, or Picard, iteration, while \(k+1\) identifies the iteration being advanced. A star identifies the provisional momentum-predictor stage before pressure correction, and a prime identifies the correction obtained from the pressure-correction equation. The basic algorithmic sequence is

(5.4.1)#\[\left(\vec{u}^{\,k},\dot{\Omega}_f^{\,k}\right) \;\longrightarrow\; \left(\vec{u}^{*,k+1},\dot{\Omega}_f^{*,k+1}\right) \;\longrightarrow\; \left(\vec{u}^{\,k+1},\dot{\Omega}_f^{\,k+1}\right)\]

A superscript \(n\) identifies a physical time level, independently of \(k\). When only the predictor stage matters, \(\vec u^*\) and \(\dot\Omega_f^*\) stand for \(\vec u^{*,k+1}\) and \(\dot\Omega_f^{*,k+1}\).

5.4.1. Relaxation of the Momentum Row#

Let \({}^{(u)}\!a_P\) and \({}^{(u)}\!\vec b_P\) denote the unrelaxed assembled row, and let \(0<\alpha_v\leq1\) be the velocity relaxation factor. Add \([(1-\alpha_v)/\alpha_v]{}^{(u)}\!a_P (\vec u_P^*-\vec u_P^k)\) to the left side of that row. This addition vanishes when the iteration stops changing. Moving its known \(\vec u_P^k\) term to the right gives

(5.4.1.1)#\[\frac{{}^{(u)}\!a_P}{\alpha_v}\vec u_P^{*,k+1} =\sum_N{}^{(u)}\!a_{P,N}\vec u_N^{*,k+1} +{}^{(u)}\!\vec b_P +\underbrace{\frac{1-\alpha_v}{\alpha_v}{}^{(u)}\!a_P\vec u_P^k} _{\text{known relaxation source}}\]

The diagonal is divided by \(\alpha_v\); the neighbor coefficients are unchanged. The last term is a known source that restores the original row when the iteration converges. In the algorithm chapter’s notation,

(5.4.1.2)#\[{}^{(u)}\!a_P^{\mathrm{pred}} =\frac{{}^{(u)}\!a_P}{\alpha_v} \qquad {}^{(u)}\!\vec b_P^{\mathrm{pred}} ={}^{(u)}\!\vec b_P +\frac{1-\alpha_v}{\alpha_v}{}^{(u)}\!a_P\vec u_P^k\]

Dividing Eq. (5.4.1.1) by its diagonal, and collecting the nonpressure neighbor and source terms into \(\vec H_P\), gives the velocity relation below. Neighbor velocities inside \(\vec H_P\) are those of the implicit predictor solution, not a separately relaxed explicit update.

The resulting provisional cell velocity is

(5.4.1.3)#\[\vec{u}_P^{*,k+1} = \alpha_v \left[ \frac{\vec{H}_P}{{}^{(u)}\!a_P} - \frac{\Omega_P}{{}^{(u)}\!a_P}\nabla p_P \right] + \left(1-\alpha_v\right)\vec{u}_P^{\,k}\]

The bracket is the same momentum relation as Eq. (5.3.2.4), evaluated with the new predictor’s neighbor velocities. With \(\alpha_v=1\), the previous-iteration term disappears. With \(\alpha_v<1\), part of the previous corrected velocity is retained.

The volumetric flux obtained by interpolating the previous cell velocities is

(5.4.1.4)#\[\left( w_P\vec{u}_P^{\,k}+w_N\vec{u}_N^{\,k} \right)\cdot\vec{A}_f\]

This interpolation generally differs from the stored face flux \(\dot{\Omega}_f^{\,k}\). Their difference is

(5.4.1.5)#\[\dot{\Omega}_f^{\,k} - \left( w_P\vec{u}_P^{\,k}+w_N\vec{u}_N^{\,k} \right)\cdot\vec{A}_f\]

The difference is already known from iteration \(k\). It contains the face-specific contribution that is not reproduced by simply interpolating the cell velocities. Majumdar’s construction carries the fraction \(1-\alpha_v\) of this previous face-flux difference into the new provisional flux [Maj88].

The new predictor already contains the interpolated part of the previous cell velocity. Carry the remaining previous face-flux difference separately. Combining it with the two pressure terms gives the expanded form=old result:

(5.4.1.6)#\[\begin{split}\dot\Omega_f^{*,k+1} ={}&A_f\mathcal I_f(\vec u^{*,k+1})\cdot\hat{\vec n}_f \\ &+\alpha_v A_f\mathcal I_f\left(\frac{\Omega}{{}^{(u)}\!a}\nabla p\right) \cdot\hat{\vec n}_f -\frac{\alpha_v A_f}{\ell_f}\mathcal I_f\left(\frac{\Omega}{{}^{(u)}\!a}\right) (p_N-p_P) \\ &+(1-\alpha_v)\left[ \dot\Omega_f^k-A_f\mathcal I_f(\vec u^k)\cdot\hat{\vec n}_f\right]\end{split}\]

Each coefficient \(\Omega/{}^{(u)}\!a\) uses the complete unrelaxed diagonal. Integrated pressure and body-source replacements are developed in Consistency with Momentum Source Terms.

At convergence, the predictor and corrected quantities agree between iterations. Denote the remaining difference between the face flux and the interpolated cell flux by

(5.4.1.7)#\[E_f=\underbrace{\dot\Omega_f-A_f\mathcal I_f(\vec u)\cdot\hat{\vec n}_f} _{\text{face flux minus interpolated cell flux}}\]

Subtract the interpolated velocity term from Eq. (5.4.1.6). The same difference now occurs on both sides:

(5.4.1.8)#\[E_f=\alpha_v A_f\left[ \mathcal I_f\left(\frac{\Omega}{{}^{(u)}\!a}\nabla p\right)\cdot\hat{\vec n}_f -\mathcal I_f\left(\frac{\Omega}{{}^{(u)}\!a}\right)\frac{p_N-p_P}{\ell_f} \right]+(1-\alpha_v)E_f\]

Move the last term to the left. Its coefficient becomes \(1-(1-\alpha_v)=\alpha_v\). Dividing by \(\alpha_v>0\) leaves

(5.4.1.9)#\[E_f=A_f\left[ \mathcal I_f\left(\frac{\Omega}{{}^{(u)}\!a}\nabla p\right)\cdot\hat{\vec n}_f -\mathcal I_f\left(\frac{\Omega}{{}^{(u)}\!a}\right)\frac{p_N-p_P}{\ell_f} \right]\]

This is the unrelaxed pressure contribution. The previous face-flux difference is therefore what removes the explicit relaxation factor from the converged relation. Its temporal dependence is addressed next.

We now combine the two pressure terms in the expanded flux, Eq. (5.4.1.6), using the steps from A Compact Pressure-Difference Form. Interpolate the coefficient and pressure gradient separately, then multiply them. Use the interpolated gradient to estimate the pressure change between cell centers. These substitutions give the compact flux formula:

(5.4.1.10)#\[\begin{split}\dot{\Omega}_f^{*,k+1} &= \underbrace{ \left( w_P\vec{u}_P^{*,k+1}+w_N\vec{u}_N^{*,k+1} \right)\cdot\vec{A}_f }_{\text{volumetric flux from provisional cell velocities}} \\ &\quad - \overbrace{ \alpha_v A_f \left( w_P\frac{\Omega_P}{{}^{(u)}\!a_P} + w_N\frac{\Omega_N}{{}^{(u)}\!a_N} \right) \frac{ \left(p_N-p_P\right) - \left(w_P\nabla p_P+w_N\nabla p_N\right)\cdot\vec{r}_{PN} }{ \vec{r}_{PN}\cdot\hat{\vec{n}}_f } }^{\text{current momentum-interpolation correction}} \\ &\quad + \underbrace{ \left(1-\alpha_v\right) \left[ \dot{\Omega}_f^{\,k} - \left( w_P\vec{u}_P^{\,k}+w_N\vec{u}_N^{\,k} \right)\cdot\vec{A}_f \right] }_{\text{previous face-flux difference}}\end{split}\]

The history term is unchanged. The pressure terms carry the additional approximations used to obtain the compact form.

Let \(\vec x_f\) be the face-center position. For this family, the interpolation weights are based on the cell-center-to-face distances:

(5.4.1.11)#\[w_N = \frac{\lVert\vec{x}_f-\vec{x}_P\rVert} {\lVert\vec{x}_f-\vec{x}_P\rVert + \lVert\vec{x}_N-\vec{x}_f\rVert}, \qquad w_P=1-w_N\]

5.4.2. Relaxing Only the Spatial Diagonal#

An alternative is to relax only the non-temporal part of the row. Write \(\widetilde a_P={}^{(u)}\!a_{P,\mathrm{spatial}}\) and let \(T_P={}^{(u)}\!a_{P,\mathrm{time}}\). Whole-diagonal relaxation and spatial-only relaxation then give, respectively,

(5.4.2.1)#\[{}^{(u)}\!a_P^{\mathrm{pred,whole}} =\frac{\widetilde a_P+T_P}{\alpha_v} \qquad {}^{(u)}\!a_P^{\mathrm{pred,spatial}} =\frac{\widetilde a_P}{\alpha_v}+T_P\]

The deferred relaxation source is respectively \((1-\alpha_v)(\widetilde a_P+T_P)\vec u_P^k/\alpha_v\) or \((1-\alpha_v)\widetilde a_P\vec u_P^k/\alpha_v\). Their different predictor diagonals give different coefficients multiplying the pressure gradient in the velocity equation at finite iteration. The derivations here use whole-diagonal relaxation. Spatial-only relaxation is an algebraic alternative, not another form selector in the table above.

5.5. Time-Consistent Momentum Interpolation#

The Pascau construction in this section corresponds to momentumInterpolationOptions: <form=new>. The complete one-step derivation uses a fixed grid and the continuity-subtracted BDF1 momentum row. Time-step independence below refers to the converged steady limit; transient solutions still have the truncation error of their time discretization.

The classical momentum-interpolation construction uses the assembled momentum diagonal in the coefficient multiplying the cell pressure gradient. In a transient calculation, that diagonal contains a contribution from the time derivative as well as contributions from convection, diffusion, and any other terms treated implicitly. The temporal contribution can be seen directly from the discretized momentum storage term.

For a representative BDF1 step, after the continuity-consistent velocity form has been obtained and with \(\rho_P\Omega_P\) evaluated at the previous physical time level, the temporal contribution is

(5.5.1)#\[\rho_P^n\Omega_P^n \frac{ \vec{u}_P^{*,k+1}-\vec{u}_P^n }{ \Delta t } = \underbrace{ \frac{\rho_P^n\Omega_P^n}{\Delta t} }_{\text{coefficient added to the momentum diagonal}} \vec{u}_P^{*,k+1} - \underbrace{ \frac{\rho_P^n\Omega_P^n}{\Delta t}\vec{u}_P^n }_{\text{known old-time contribution}}\]

The current physical-time index on \(\vec{u}_P^{*,k+1}\) is suppressed; the star and \(k+1\) identify the momentum predictor within that time step. When the momentum row is assembled, the coefficient multiplying \(\vec{u}_P^{*,k+1}\) is placed on the left-hand side. The known term containing \(\vec{u}_P^n\) is moved to the right-hand side. Thus BDF1 adds \(\rho_P^n\Omega_P^n/\Delta t\) to the diagonal of every velocity-component row.

Within this continuity-subtracted temporal split, let \(\lambda_0\) denote the coefficient of the current-time contribution retained implicitly. BDF1 has \(\lambda_0=1/\Delta t\); the multistep split is developed below. The complete momentum diagonal is then

(5.5.2)#\[{}^{(u)}\!a_P = \underbrace{ \widetilde a_P }_{\text{non-temporal momentum diagonal}} + \underbrace{ \rho_P^n\Omega_P^n\lambda_0 }_{\text{temporal momentum diagonal}}\]

The shorthand \(\widetilde a_P={}^{(u)}\!a_{P,\mathrm{spatial}}\) is what remains after the current-time temporal contribution is removed. It contains the convective, diffusive, and other non-temporal contributions treated implicitly in the momentum row.

The temporal coefficient in this split belongs to the stated momentum-row form. It is not a universal replacement for the conservative or multistep temporal diagonal. Also, \(\widetilde a_N\) is the non-temporal diagonal of cell \(N\), not the coupling \({}^{(u)}\!a_{P,N}\) in the row for \(P\).

Using the complete \({}^{(u)}\!a_P\) in the classical coefficient \(\Omega_P/{}^{(u)}\!a_P\) introduces a temporal contribution into the face interpolation. The coefficient depends on the time step:

(5.5.3)#\[\frac{\Omega_P}{{}^{(u)}\!a_P} = \frac{\Omega_P}{ \widetilde a_P+\rho_P^n\Omega_P^n\lambda_0 }\]

For BDF1, reducing \(\Delta t\) increases \(\lambda_0=1/\Delta t\) and therefore reduces \(\Omega_P/{}^{(u)}\!a_P\) when the other quantities are held fixed. If no matching face-flux history is carried, a converged nominally steady result can retain a residual dependence on the time step used to reach it. Time-consistent formulations use \(\Omega_P/\widetilde a_P\) and carry the corresponding physical-time history at the same face location as the new flux [Cho99, Pas11].

The ratio of the temporal diagonal to the non-temporal diagonal is

(5.5.4)#\[\delta_P \equiv \frac{\rho_P^n\Omega_P^n\lambda_0} {\widetilde a_P}\]

For BDF1, this becomes \(\delta_P=(\rho_P^n\Omega_P^n/\Delta t)/\widetilde a_P\). The ratio therefore measures the temporal contribution to the diagonal relative to the non-temporal contribution. The complete diagonal can be written

(5.5.5)#\[{}^{(u)}\!a_P = \widetilde a_P\left(1+\delta_P\right)\]

For the face shared by cells \(P\) and \(N\), the same geometric weights used in the momentum interpolation give

(5.5.6)#\[\delta_f = w_P\delta_P+w_N\delta_N\]

5.5.1. Deriving the Complete One-Step Face Relation#

The nonpressure group \(\vec H_P\) contains the old-time momentum as well as the spatial terms. Expose those two pieces before dividing the row:

(5.5.1.1)#\[\begin{split}\vec H_P =\underbrace{\begin{gathered} \sum_N{}^{(u)}\!a_{P,N}\vec u_N^* +{}^{(u)}\!\vec b_{P,\mathrm{conv}} \\ +{}^{(u)}\!\vec b_{P,\mathrm{diff}}+{}^{(u)}\!\vec b_{P,\mathrm{src}} \end{gathered}}_{\text{spatial neighbor and nonpressure terms}} +\underbrace{{}^{(u)}\!a_{P,\mathrm{time}}\vec u_P^n}_{\text{old-time momentum}}\end{split}\]

Divide the spatial group by \(\widetilde a_P\) and call the resulting velocity \(\vec h_P\):

(5.5.1.2)#\[\vec h_P =\frac{\vec H_P-{}^{(u)}\!a_{P,\mathrm{time}}\vec u_P^n}{\widetilde a_P}\]

Thus \(\vec H_P=\widetilde a_P\vec h_P+ {}^{(u)}\!a_{P,\mathrm{time}}\vec u_P^n\). Substitute this and \({}^{(u)}\!a_P=\widetilde a_P+{}^{(u)}\!a_{P,\mathrm{time}}\) into the relaxed momentum row:

(5.5.1.3)#\[\begin{split}\frac{\widetilde a_P+{}^{(u)}\!a_{P,\mathrm{time}}}{\alpha_v}\vec u_P^* ={}&\widetilde a_P\vec h_P-\Omega_P\nabla p_P +{}^{(u)}\!a_{P,\mathrm{time}}\vec u_P^n \\ &+\frac{1-\alpha_v}{\alpha_v} (\widetilde a_P+{}^{(u)}\!a_{P,\mathrm{time}})\vec u_P^k\end{split}\]

Multiply by \(\alpha_v/\widetilde a_P\). The two ratios that appear are

(5.5.1.4)#\[\underbrace{\frac{{}^{(u)}\!a_{P,\mathrm{time}}}{\widetilde a_P}} _{\delta_P:\ \text{time-to-spatial ratio}} \qquad \underbrace{\frac{\widetilde a_P+{}^{(u)}\!a_{P,\mathrm{time}}}{\widetilde a_P}} _{1+\delta_P}\]

Replacing these ratios by their names gives

(5.5.1.5)#\[(1+\delta_P)\vec u_P^{*,k+1} =\alpha_v\vec h_P -\alpha_v\frac{\Omega_P}{\widetilde a_P}\nabla p_P +\alpha_v\delta_P\vec u_P^n +(1-\alpha_v)(1+\delta_P)\vec u_P^k\]

For the face, interpolate \(\vec h\), \(\delta\), and \(\Omega/\widetilde a\) with the selected geometric weights. Use the face’s own old-time and old-iteration fluxes in its history terms. The analogous face relation is defined by

(5.5.1.6)#\[\begin{split}(1+\delta_f)\dot\Omega_f^{*,k+1} ={}&\alpha_v A_f\mathcal I_f(\vec h)\cdot\hat{\vec n}_f -\alpha_v A_f\mathcal I_f\left(\frac{\Omega}{\widetilde a}\right) \frac{p_N-p_P}{\ell_f} \\ &+\alpha_v\delta_f\dot\Omega_f^n +(1-\alpha_v)(1+\delta_f)\dot\Omega_f^k\end{split}\]

This is an interpolation model for the face, not a new equation solved on a face control volume. Eliminate \(\mathcal I_f(\vec h)\) using the two cell rows. Rearranging and interpolating Eq. (5.5.1.5) gives

(5.5.1.7)#\[\begin{split}\alpha_v\mathcal I_f(\vec h) ={}&\mathcal I_f\left[(1+\delta)\vec u^{*,k+1}\right] +\alpha_v\mathcal I_f\left(\frac{\Omega}{\widetilde a}\nabla p\right) \\ &-\alpha_v\mathcal I_f(\delta\vec u^n) -(1-\alpha_v)\mathcal I_f\left[(1+\delta)\vec u^k\right]\end{split}\]

The ratios remain inside the interpolation of each cell velocity. For example, the provisional-velocity term expands as

(5.5.1.8)#\[\frac{\mathcal I_f[(1+\delta)\vec u^*]}{1+\delta_f} =\frac{w_P(1+\delta_P)\vec u_P^* +w_N(1+\delta_N)\vec u_N^*}{1+w_P\delta_P+w_N\delta_N}\]

It reduces to ordinary interpolation if \(\delta_P=\delta_N\). For unequal ratios, each cell velocity retains its own multiplier.

Now multiply Eq. (5.5.1.7) by \(A_f\), project onto the face normal, and substitute it into the face relation. Collect terms from the same time or iteration level:

(5.5.1.9)#\[\begin{split}(1+\delta_f)\dot\Omega_f^* ={}&\underbrace{A_f\mathcal I_f[(1+\delta)\vec u^*]\cdot\hat{\vec n}_f} _{\text{weighted predictor}} \\ &+\underbrace{\alpha_v A_f\mathcal I_f\left(\frac{\Omega}{\widetilde a}\nabla p\right) \cdot\hat{\vec n}_f}_{\text{remove cell pressure-gradient term}} \\ &-\underbrace{\alpha_v A_f\mathcal I_f\left(\frac{\Omega}{\widetilde a}\right) \frac{p_N-p_P}{\ell_f}}_{\text{insert face pressure-difference term}} \\ &+(1-\alpha_v)\underbrace{\left[(1+\delta_f)\dot\Omega_f^k -A_f\mathcal I_f[(1+\delta)\vec u^k]\cdot\hat{\vec n}_f\right]} _{\text{previous-iteration face and cell difference}} \\ &+\alpha_v\underbrace{\left[\delta_f\dot\Omega_f^n -A_f\mathcal I_f(\delta\vec u^n)\cdot\hat{\vec n}_f\right]} _{\text{previous-time face and cell difference}}\end{split}\]

The positive history terms came from the face relation. The negative ones came from eliminating the cell quantity \(\vec h\). Their subtraction replaces the history already carried by the cell velocities with the face’s own history.

5.5.2. Face-Flux History Terms#

Call the last bracket \(\eta_f^n\), the weighted difference between the previous-time face flux and the flux represented by the cell velocities:

(5.5.2.1)#\[\eta_f^n \equiv \delta_f\dot{\Omega}_f^n - A_f \mathcal{I}_f\left(\delta\vec{u}^{\,n}\right) \cdot\hat{\vec{n}}_f\]

Call the previous-iteration bracket \(\eta_f^k\):

(5.5.2.2)#\[\eta_f^k \equiv \left(1+\delta_f\right)\dot{\Omega}_f^k - A_f \mathcal{I}_f\left[\left(1+\delta\right)\vec{u}^{\,k}\right] \cdot\hat{\vec{n}}_f\]

After division by \(1+\delta_f\), the two history groups contribute

(5.5.2.3)#\[\mathcal{C}_{f,\mathrm{hist}} = \frac{ \left(1-\alpha_v\right)\eta_f^k + \alpha_v\eta_f^n }{ 1+\delta_f }\]

The cell and face histories are therefore treated as one discrete temporal system. With these definitions, the full one-step result is

(5.5.2.4)#\[\begin{split}\dot\Omega_f^{*,k+1} ={}&\frac{A_f}{1+\delta_f} \mathcal I_f[(1+\delta)\vec u^{*,k+1}]\cdot\hat{\vec n}_f \\ &+\frac{\alpha_v A_f}{1+\delta_f} \mathcal I_f\left(\frac{\Omega}{\widetilde a}\nabla p\right) \cdot\hat{\vec n}_f \\ &-\frac{\alpha_v A_f}{1+\delta_f} \mathcal I_f\left(\frac{\Omega}{\widetilde a}\right) \frac{p_N-p_P}{\ell_f} +\mathcal C_{f,\mathrm{hist}}\end{split}\]

Complete Pascau Construction

The four terms are the weighted provisional velocity, removal of the cell pressure-gradient term, insertion of the face pressure-difference term, and matched iteration/time history. Changing only the pressure coefficient does not produce this construction. A conservative pressure replacement changes the cell pressure term as described in Consistency with Momentum Source Terms.

5.5.3. Reading the Pressure Coefficient from the Flux#

In the completed face formula, hold the predictor, histories, gradients, and coefficients fixed. Only the direct pressure-difference term changes when \(p_N-p_P\) changes. Multiply its volume-flux coefficient by \(\rho_f\) to obtain the direct mass-flux coefficient \(d_f^{\mathrm{dir}}\). The signed sensitivity of face mass flux to \(p_N-p_P\) is \(-d_f^{\mathrm{dir}}\); increasing that pressure difference decreases the flux in the stored direction.

The classical old selection uses the complete momentum diagonal in its direct pressure coefficient, while the one-step time-consistent new selection uses the non-temporal diagonal together with \(1+\delta_f\):

(5.5.3.1)#\[\begin{split}d_f^{\mathrm{dir,old}} &= \frac{\rho_f\alpha_v A_f}{\ell_f} \left( w_P\frac{\Omega_P}{{}^{(u)}\!a_P} + w_N\frac{\Omega_N}{{}^{(u)}\!a_N} \right) \\ d_f^{\mathrm{dir,new}} &= \frac{\rho_f\alpha_v A_f}{ \left(1+\delta_f\right)\ell_f } \left( w_P\frac{\Omega_P}{\widetilde a_P} + w_N\frac{\Omega_N}{\widetilde a_N} \right)\end{split}\]

The superscript \(\mathrm{dir}\) identifies the direct pressure-difference term. The coefficient \(d_f\) used in the pressure-correction equation may also include a stated approximation to the cell-velocity change, as derived in Connection to the Pressure-Correction Equation. The superscripts \(\mathrm{old}\) and \(\mathrm{new}\) identify the Stream momentum-interpolation selections; they are not physical-time levels. Both expressions give the magnitude of the face mass-flux sensitivity to the adjacent-cell pressure difference, with the remaining predictor quantities held fixed. The new coefficient makes two changes: it uses the non-temporal cell ratios \(\Omega/\widetilde a\), and it divides the resulting face coefficient by \(1+\delta_f\).

5.5.4. Checking the Steady Limit#

To check the steady limit, define the spatial pressure contribution

(5.5.4.1)#\[\mathcal C_{p,f} =A_f\left[ \mathcal I_f\left(\frac{\Omega}{\widetilde a}\nabla p\right) \cdot\hat{\vec n}_f -\mathcal I_f\left(\frac{\Omega}{\widetilde a}\right) \frac{p_N-p_P}{\ell_f}\right]\]

At a converged steady state, the old-time, old-iteration, and provisional velocities all equal \(\vec u\), and the corresponding face fluxes equal \(\dot\Omega_f\). Insert these equalities into the expanded substitution. Move the history terms containing face flux to the left, and collect the cell-velocity terms on the right:

(5.5.4.2)#\[\begin{split}&\underbrace{[(1+\delta_f)-(1-\alpha_v)(1+\delta_f)-\alpha_v\delta_f]} _{\alpha_v}\dot\Omega_f \\ &\quad=A_f\mathcal I_f\!\Bigl( \underbrace{[(1+\delta)-(1-\alpha_v)(1+\delta)-\alpha_v\delta]} _{\alpha_v}\vec u\Bigr)\cdot\hat{\vec n}_f +\alpha_v\mathcal C_{p,f}\end{split}\]

Both brackets reduce to \(\alpha_v\), even when the two cell ratios differ. Dividing by \(\alpha_v>0\) gives

(5.5.4.3)#\[\dot\Omega_f =A_f\mathcal I_f(\vec u)\cdot\hat{\vec n}_f+\mathcal C_{p,f}\]

Neither the temporal ratio nor the relaxation factor remains in this steady-limit relation. This cancellation uses the weighted predictor as well as both history terms; the history terms alone do not vanish separately for unequal cell ratios.

5.5.5. Multistep and Crank–Nicolson Extensions#

For constant step and fixed cell mass \(M_P=\rho_P\Omega_P\), start with the usual BDF2 storage term. Regroup its three velocity values as two increments:

(5.5.5.1)#\[\frac{M_P}{2\Delta t}(3\vec u_P-4\vec u_P^n+\vec u_P^{n-1}) =\underbrace{\frac{2M_P}{\Delta t}(\vec u_P-\vec u_P^n)} _{\text{leading increment}} -\underbrace{\frac{M_P}{2\Delta t}(\vec u_P-\vec u_P^{n-1})} _{\text{older-history increment}}\]

The first current-velocity term is implicit; the second current-velocity term is lagged during assembly. At convergence this is the usual BDF2 derivative. It gives \(\delta_P=2M_P/(\Delta t\widetilde a_P)\) and \(\epsilon_P=M_P/(2\Delta t\widetilde a_P)\). The fully implicit BDF2 diagonal \(3M_P/(2\Delta t)\) must not be substituted for the leading split diagonal while retaining these history terms.

In the face construction, the older increment contributes a current-velocity term as well as an old-time term. Collecting the current terms gives the face multiplier

(5.5.5.2)#\[\Xi_f^{\mathrm{BDF2}} =\underbrace{1+\delta_f}_{\text{leading contribution}} -\underbrace{\alpha_v\epsilon_f}_{\text{older-increment contribution}}\]

Here \(\epsilon_f=\mathcal I_f(\epsilon)\) uses the older-history coefficient just defined; it is not a stored value of \(\delta\).

With \(\Xi_P=1+\delta_P-\alpha_v\epsilon_P\) and \(\Xi_f=\mathcal I_f(\Xi)\), the corresponding assembled face result is

(5.5.5.3)#\[\begin{split}\Xi_f\dot\Omega_f^* ={}&A_f\mathcal I_f(\Xi\vec u^*)\cdot\hat{\vec n}_f +\alpha_v\mathcal C_{p,f} +(1-\alpha_v)\eta_f^k \\ &+\alpha_v\left[\eta_f^n -\epsilon_f\dot\Omega_f^{n-1} +A_f\mathcal I_f(\epsilon\vec u^{n-1})\cdot\hat{\vec n}_f\right]\end{split}\]

The definitions of \(\eta_f^k\) and \(\eta_f^n\) retain the current \(\delta\) coefficients. The face construction evaluates the split current-level contribution with the predictor velocity; the cell momentum assembly may lag that contribution during its solve. This additional face choice agrees with the cell split at outer-iteration convergence. This formula displays all three changes from BDF1: the predictor weighting, denominator, and older-history difference. For variable steps, with \(h=\Delta t_n\) and \(k_t=\Delta t_{n-1}\), the corresponding split coefficients are

(5.5.5.4)#\[\delta_P=\frac{M_P^n}{\widetilde a_P}\frac{h+k_t}{hk_t} \qquad \epsilon_P=\frac{M_P^{n-1}}{\widetilde a_P}\frac{h}{k_t(h+k_t)}\]

Each history carries its own mass. Subtracting the two current-level coefficients recovers the usual leading BDF2 coefficient at constant mass. The variable-step derivative and continuity subtraction are developed in (10.3.2.6) and (10.3.3.1). The time-step symbol \(k_t\) here is unrelated to the outer-iteration index \(k\).

Crank–Nicolson can be normalized by dividing its half-weighted current spatial residual by \(1/2\). The temporal coefficient is then \(2M_P/\Delta t\) and the known old spatial residual also enters the RHS. This has the one-step face-history structure above with its correctly assembled \(\widetilde a_P\) and \(\delta_P\); it has no \(n-1\) history. In particular, \(\Delta t\delta_P/\rho_P=2\Omega_P/\widetilde a_P\) in this normalization. Replacing \(\Omega/\widetilde a\) by \(\Delta t\delta/\rho\) without that factor of two would change the coefficients multiplying the pressure terms. See (10.3.2.11) for the temporal normalization.

5.6. Choi-Style Face History#

The selection momentumInterpolationOptions: <form=Choi> retains the classical relaxed flux and adds a previous-time face–cell flux difference. The variant developed here uses one common temporal ratio at the face. This averaging choice is part of the formulation; it is not an exact rearrangement of cell-specific temporal weights.

5.6.1. Constructing the History Weight#

For BDF1 at fixed cell mass, the fraction of the unrelaxed momentum diagonal supplied by storage is

(5.6.1.1)#\[\frac{M_P/\Delta t}{{}^{(u)}\!a_P} =\frac{M_P/\Delta t}{\widetilde a_P+M_P/\Delta t} =\frac{\delta_P}{1+\delta_P}\]

The previous cell velocity therefore contributes \(\alpha_v\delta_P\vec u_P^n/(1+\delta_P)\) to the relaxed predictor. The Choi variant uses the interpolated ratio \(\delta_f=\mathcal I_f(\delta)\) to weight an additional history term:

(5.6.1.2)#\[\mathcal C_{f,\mathrm{Choi}} =\alpha_v\frac{\delta_f}{1+\delta_f} \left[\dot\Omega_f^n-\mathcal I_f(\vec u^n)\cdot\vec A_f\right]\]

The same face coefficient multiplies both stored quantities in the bracket. The predictor still contains its cell-specific history weights. Combining that contribution with the added correction gives

(5.6.1.3)#\[\begin{split}&\alpha_v\mathcal I_f\left(\frac{\delta}{1+\delta}\vec u^n\right) \cdot\vec A_f+\mathcal C_{f,\mathrm{Choi}} \\ &\quad=\alpha_v\frac{\delta_f}{1+\delta_f}\dot\Omega_f^n +\alpha_v\mathcal I_f\left[ \left(\frac{\delta}{1+\delta}-\frac{\delta_f}{1+\delta_f}\right) \vec u^n\right]\cdot\vec A_f\end{split}\]

When \(\delta_P=\delta_N\), the last term vanishes, leaving only the weighted previous face flux. For unequal ratios, part of the cell history generally remains. The added term therefore replaces the full interpolated cell history only when the weights agree or the remaining term happens to cancel for the particular velocity field.

Adding \(\mathcal C_{f,\mathrm{Choi}}\) to Eq. (5.4.1.6) gives the complete one-step formula, with momentum sources omitted:

(5.6.1.4)#\[\begin{split}\dot\Omega_f^* ={}&\mathcal I_f(\vec u^*)\cdot\vec A_f +\alpha_v\mathcal I_f\left( \frac{\Omega}{{}^{(u)}\!a}\nabla p\right)\cdot\vec A_f \\ &-\frac{\alpha_v A_f}{\ell_f} \mathcal I_f\left(\frac{\Omega}{{}^{(u)}\!a}\right)(p_N-p_P) \\ &+(1-\alpha_v)\left[\dot\Omega_f^k -\mathcal I_f(\vec u^k)\cdot\vec A_f\right] \\ &+\alpha_v\frac{\delta_f}{1+\delta_f} \left[\dot\Omega_f^n-\mathcal I_f(\vec u^n)\cdot\vec A_f\right]\end{split}\]

The direct pressure coefficient is unchanged from old. The predictor and cell-pressure term still use the complete cell diagonal. Pascau instead retains the cell-specific temporal ratios in both its weighted predictor and histories, as derived in Time-Consistent Momentum Interpolation.

5.6.2. Steady Limit of the Choi Form#

At a converged steady state, both stored face–cell flux differences equal \(E_f=\dot\Omega_f-\mathcal I_f(\vec u)\cdot\vec A_f\). Move those history terms to the left of Eq. (5.6.1.4):

(5.6.2.1)#\[\underbrace{\left[1-(1-\alpha_v) -\alpha_v\frac{\delta_f}{1+\delta_f}\right]} _{\alpha_v/(1+\delta_f)}E_f =\alpha_v A_f\left[ \mathcal I_f\left(\frac{\Omega}{{}^{(u)}\!a}\nabla p\right) \cdot\hat{\vec n}_f -\mathcal I_f\left(\frac{\Omega}{{}^{(u)}\!a}\right) \frac{p_N-p_P}{\ell_f}\right]\]

Divide by \(\alpha_v/(1+\delta_f)\) and substitute \({}^{(u)}\!a=\widetilde a(1+\delta)\):

(5.6.2.2)#\[E_f=A_f\left[ \mathcal I_f\left(\frac{\Omega}{\widetilde a} \frac{1+\delta_f}{1+\delta}\nabla p\right)\cdot\hat{\vec n}_f -\mathcal I_f\left(\frac{\Omega}{\widetilde a} \frac{1+\delta_f}{1+\delta}\right)\frac{p_N-p_P}{\ell_f} \right]\]

For equal temporal ratios, the ratio inside each interpolation is one, and the result is the spatial pressure contribution \(\mathcal C_{p,f}\) of Eq. (5.5.4.1). For unequal ratios, those factors generally retain timestep dependence. The explicit relaxation factor cancels in either case. Pascau’s steady cancellation holds for unequal ratios as well, because its predictor and both histories carry the matching cell-specific weights.

5.7. Consistency with Momentum Source Terms#

Equation (5.3.2.3) represents the integrated pressure gradient as \(\Omega_P\nabla p_P\). A momentum balance using the face-pressure sum in Eq. (5.3.7.1) instead contains \(\vec{\mathcal P}_P\). A gradient reconstructed independently need not satisfy \(\Omega_P\nabla p_P=\vec{\mathcal P}_P\). Removing a different pressure contribution from the cell velocity introduces a discrepancy between the cell momentum balance and the face construction.

Use the same integrated pressure gradient when separating the cell velocity:

(5.7.1)#\[\vec{u}_P = \frac{\vec{H}_P}{{}^{(u)}\!a_P} - \frac{\vec{\mathcal{P}}_P}{{}^{(u)}\!a_P}\]

Interpolate \(\vec{\mathcal{P}}_P/{}^{(u)}\!a_P\) when removing the pressure contribution already contained in the cell velocities. The same principle applies to a discrete body-force source \(\vec{\mathcal{B}}_P\).

The conservativePressure modifier selects this integrated pressure contribution for old, new, and Choi, while retaining their direct adjacent-cell pressure difference. Denner uses the integrated contribution as part of its formulation.

For a stationary state with no remaining momentum terms,

(5.7.2)#\[-\vec{\mathcal{P}}_P+\vec{\mathcal{B}}_P=\vec{0}\]

the face-pressure and body-force corrections should cancel when their direct face reconstructions also satisfy the corresponding balance. This requires compatible interpolation and geometry at both locations. A mismatch can generate a nonzero face flux even when the cell momentum residual is zero. This condition applies to hydrostatic, rotating-frame, and other stationary source-balanced solutions.

Discrete Compatibility Condition

Preserving an equilibrium requires both cancellation of the integrated cell forces and compatible direct pressure/source reconstructions at the face. Cell cancellation alone is insufficient. These are discrete balance conditions, beyond agreement in the continuum limit.

5.7.1. Removing and Replacing a Source Contribution#

First consider a body force supplied explicitly to the momentum equation. Let \(\vec S_P\) be this force per unit volume, and let \(\vec{\mathcal B}_P\) be its integrated contribution to the cell momentum row. In the divided Pascau row, this source contributes

(5.7.1.1)#\[(1+\delta_P)\vec u_P^* =\text{remaining terms} +\underbrace{\alpha_v\frac{\vec{\mathcal B}_P}{\widetilde a_P}} _{\text{cell body-source contribution}}\]

Therefore the weighted predictor in the face formula already carries \(\alpha_v A_f\mathcal I_f(\vec{\mathcal B}/\widetilde a) \cdot\hat{\vec n}_f\). A separate face source must replace this contribution.

To construct that face source, start with the pressure change needed to balance it. Integrate along the two segments from \(P\) to the face center and from the face center to \(N\). With a constant source on each segment,

(5.7.1.2)#\[\int_{P\to f\to N}\vec S\cdot d\vec x \approx\underbrace{\vec S_P\cdot(\vec x_f-\vec x_P)}_{\text{change from }P\text{ to }f} +\underbrace{\vec S_N\cdot(\vec x_N-\vec x_f)}_{\text{change from }f\text{ to }N} \equiv L_f(\vec S)\]

The line estimate \(L_f(\vec S)\) has pressure units. Dividing by \(\ell_f\) gives the direct face source used in the normal-velocity relation. The Pascau flux therefore needs the following change:

(5.7.1.3)#\[\begin{split}\Delta\dot\Omega_{S,f} ={}&-\underbrace{\frac{\alpha_v A_f}{1+\delta_f} \mathcal I_f\left(\frac{\vec{\mathcal B}}{\widetilde a}\right) \cdot\hat{\vec n}_f}_{\text{remove the source already in the predictor}} \\ &+\underbrace{\frac{\alpha_v A_f}{1+\delta_f} \mathcal I_f\left(\frac{\Omega}{\widetilde a}\right) \frac{L_f(\vec S)}{\ell_f}}_{\text{insert the direct face source}}\end{split}\]

Call this pair \(\mathcal C_{S,f}(1+\delta_f)\). Other formulations use the same removal and replacement with a different face denominator. Writing that denominator as \(\Xi_f\) gives the reusable expression

(5.7.1.4)#\[\mathcal C_{S,f}(\Xi_f) =\frac{\alpha_v A_f}{\Xi_f} \left[ \mathcal I_f\left(\frac{\Omega}{\widetilde a}\right) \frac{L_f(\vec S)}{\ell_f} -\mathcal I_f\left(\frac{\vec{\mathcal B}}{\widetilde a}\right) \cdot\hat{\vec n}_f\right]\]

For Pascau, \(\Xi_f=1+\delta_f\). For the classical formulation, replace \(\widetilde a\) by the complete diagonal and use \(\Xi_f=1\).

The pressure contribution with integrated cell pressure is

(5.7.1.5)#\[\mathcal C_{p,f}^{\mathrm{int}}(\Xi_f) =\frac{\alpha_v A_f}{\Xi_f} \left[ \mathcal I_f\left(\frac{\vec{\mathcal P}}{\widetilde a}\right) \cdot\hat{\vec n}_f -\mathcal I_f\left(\frac{\Omega}{\widetilde a}\right) \frac{p_N-p_P}{\ell_f}\right]\]

Add the pressure and source corrections and collect their cell and face terms separately:

(5.7.1.6)#\[\begin{split}\mathcal C_{p,f}^{\mathrm{int}}(\Xi_f)+\mathcal C_{S,f}(\Xi_f) ={}&\frac{\alpha_v A_f}{\Xi_f} \mathcal I_f\Bigl(\frac{\overbrace{\vec{\mathcal P}-\vec{\mathcal B}}^{\text{cell imbalance}}} {\widetilde a}\Bigr)\cdot\hat{\vec n}_f \\ &-\frac{\alpha_v A_f}{\Xi_f}\mathcal I_f\left(\frac{\Omega}{\widetilde a}\right) \frac{\overbrace{(p_N-p_P)-L_f(\vec S)}^{\text{face imbalance}}}{\ell_f}\end{split}\]

The first line vanishes when the integrated forces balance in each cell. The second vanishes when the adjacent pressure difference equals the source line estimate. Both are required to preserve the equilibrium. For a velocity-dependent force, the face correction must be specified together with the source linearization. In the porous construction, the positive implicit resistance remains in the momentum diagonal, while the pressure–source correction uses the complete physical force. The linearization remainder defines the momentum RHS; it is distinct from the force used in that face balance. Equation (19.4.1) gives the porous correction and Eq. (19.4.2) shows its cancellation with pressure.

5.8. Denner Unified Momentum-Weighted Interpolation#

This section describes momentumInterpolationOptions: <form=Denner>. The Bartholomew–Denner construction uses the same basic operation as the preceding sections: remove the pressure and source contributions carried by the cell velocities and insert their direct face counterparts. Its distinct choices concern the shared face coefficient, density weighting, and face history [BDAA+18].

The derivation below uses BDF1, a fixed grid, the continuity-subtracted momentum row, and central interpolation of pressure for the cell force. The pressure reconstruction is a separate choice in Stream: selecting form=Denner selects its source weighting, but does not select central pressure interpolation. The ordinary MUSCL pressure reconstruction remains the default. Its cell force can be used in the face-pressure difference below, but the central-interpolation equilibrium argument then needs to be re-examined. The three reconstruction choices are distinguished in Geometry and Source Modifiers.

5.8.1. From Cell Forces to a Shared Face Coefficient#

Use the fixed-grid temporal split already introduced. Removing the implicit time contribution from each complete diagonal gives

(5.8.1.1)#\[\widetilde a_P={}^{(u)}\!a_P-\rho_P^n\Omega_P^n\lambda_0 \qquad \widetilde a_N={}^{(u)}\!a_N-\rho_N^n\Omega_N^n\lambda_0\]

This subtraction follows from the assembled momentum row. In general, \(\widetilde a_P={}^{(u)}\!a_P-{}^{(u)}\!a_{P,\mathrm{time}}\); the value \(\rho_P^n\Omega_P^n\lambda_0\) above is the temporal diagonal for the stated row. For a different time discretization or a different use of continuity in momentum, the temporal diagonal must be identified again from that row. This algebraic requirement is separate from deriving the corresponding face history.

The cell pressure contribution to velocity is \(-\vec{\mathcal P}_P/\widetilde a_P\). Multiply and divide its magnitude by the cell mass to expose an acceleration:

(5.8.1.2)#\[\frac{\vec{\mathcal P}_P}{\widetilde a_P} =\underbrace{\frac{\rho_P^k\Omega_P}{\widetilde a_P}} _{\text{velocity per unit acceleration}} \quad \underbrace{\frac{\vec{\mathcal P}_P}{\rho_P^k\Omega_P}} _{\text{pressure acceleration}}\]

The same identity holds for the body source \(\vec{\mathcal B}_P\). The first factor converts an acceleration contribution into a velocity contribution in this row split. It has time units; the second factor has acceleration units. Their product has velocity units.

Denner uses one coefficient \(\mathcal D_f\) for the face pressure and body-source terms. It is the arithmetic mean of the two volume-to-diagonal ratios:

(5.8.1.3)#\[\mathcal D_f=\frac12\left( \frac{\Omega_P^n}{\widetilde a_P} +\frac{\Omega_N^n}{\widetilde a_N}\right)\]

This mean remains arithmetic even when the geometric interpolation weights are unequal. Replacing the two cell ratios by a shared face coefficient is a face approximation; it does not follow from factoring an arbitrary interpolation exactly.

The geometry uses the center-line direction

(5.8.1.4)#\[\vec r_{PN}=\vec x_N-\vec x_P \qquad d_{PN}=\lVert\vec r_{PN}\rVert \qquad \hat{\vec r}_{PN}=\frac{\vec r_{PN}}{d_{PN}}\]

and the projected-distance weights

(5.8.1.5)#\[w_N=\frac{\hat{\vec n}_f\cdot(\vec x_f-\vec x_P)} {\hat{\vec n}_f\cdot\vec r_{PN}} \qquad w_P=1-w_N\]

These are the weights in \(\mathcal I_f\). On an orthogonal face they reduce to the usual opposite-distance weights.

The density used to convert the interpolated cell accelerations back to force per unit volume is the current harmonic density, \(\rho_{h,f}^k=[w_P/\rho_P^k+w_N/\rho_N^k]^{-1}\). Its normalization is

(5.8.1.6)#\[\rho_{h,f}^k\mathcal I_f\left(\frac1{\rho^k}\right)=1\]

For example, if the two cells have the same pressure gradient, this weighting preserves that value even when their densities differ. The face time coefficient uses the corresponding density at the previous physical time level:

(5.8.1.7)#\[\rho_{h,f}^n=\left(\frac{w_P}{\rho_P^n}+\frac{w_N}{\rho_N^n}\right)^{-1}\]

The transported face density \(\rho_f\) has a third role: it converts volume flux to mass flux. It need not equal either harmonic density.

5.8.2. Removing Cell Pressure and Sources, Then Inserting Face Values#

For pressure, the direct face value is \((p_N-p_P)/d_{PN}\). The cell value is obtained from the integrated pressure gradients, divided by cell mass, interpolated, and multiplied by \(\rho_{h,f}^k\). Their difference is

(5.8.2.1)#\[\mathscr R_{p,f} =\underbrace{\frac{p_N-p_P}{d_{PN}}}_{\text{direct face pressure gradient}} -\underbrace{\rho_{h,f}^k\left[ w_P\frac{\vec{\mathcal P}_P}{\rho_P^k\Omega_P} +w_N\frac{\vec{\mathcal P}_N}{\rho_N^k\Omega_N} \right]\cdot\hat{\vec r}_{PN}}_{\text{pressure contribution represented by the cells}}\]

Thus \(-\mathcal D_f A_f\mathscr R_{p,f}\) adds back the pressure term represented by the cells and subtracts the face pressure-difference term, with the same signs as in the classical construction.

For a body source, the cell contribution enters velocity with a positive sign. Its replacement therefore has the opposite order: remove the cell contribution and add the direct face source. Define

(5.8.2.2)#\[\mathscr R_{b,f} =\underbrace{\vec S_f\cdot\hat{\vec r}_{PN}}_{\text{direct face source}} -\underbrace{\rho_{h,f}^k\left[ w_P\frac{\vec{\mathcal B}_P}{\rho_P^k\Omega_P} +w_N\frac{\vec{\mathcal B}_N}{\rho_N^k\Omega_N} \right]\cdot\hat{\vec r}_{PN}}_{\text{source contribution represented by the cells}}\]

Both differences have pressure-gradient units. Their combined spatial contribution to volume flux is \(\mathcal D_f A_f(-\mathscr R_{p,f}+\mathscr R_{b,f})\). The term residual here means a difference between two reconstructions; it is not the residual of a separate equation solved on the face.

For the gravity source, the direct face estimate uses the complementary weights

(5.8.2.3)#\[\vec S_f=w_N\vec S_P+w_P\vec S_N\]

Their role follows from the source line estimate. On an orthogonal face, let \(h_P\) and \(h_N\) be the distances from each center to the face. Then \(w_N=h_P/d_{PN}\) and \(w_P=h_N/d_{PN}\), giving

(5.8.2.4)#\[d_{PN}\vec S_f\cdot\hat{\vec r}_{PN} =\underbrace{h_P\vec S_P\cdot\hat{\vec r}_{PN}}_{\text{source on the }P\text{ segment}} +\underbrace{h_N\vec S_N\cdot\hat{\vec r}_{PN}}_{\text{source on the }N\text{ segment}} =L_f(\vec S)\]

The velocity weights would exchange the two segment lengths in this source estimate. For gravity with a consistently subtracted reference density, \(\vec S_P=(\rho_P-\rho_{\mathrm{ref}})\vec g\).

The integrated cell forces must use the matching reconstruction. With \(p_f=w_Pp_P+w_Np_N\), the pressure-gradient contribution is \(\vec{\mathcal P}_P=\sum_{f\in\mathcal F_P}\sigma_{Pf}p_f\vec A_f\). The corresponding interior-face additions to the body source are

(5.8.2.5)#\[\Delta\vec{\mathcal B}_P=w_N(\vec S_f\cdot\vec r_{PN})\vec A_f \qquad \Delta\vec{\mathcal B}_N=w_P(\vec S_f\cdot\vec r_{PN})\vec A_f\]

Both expressions use the same stored area vector. Reversing the center line and area together leaves the physical source unchanged. At a physical boundary, the one-sided addition is \([\vec S_P\cdot(\vec x_f-\vec x_P)]\vec A_f\) for the physical owner. These source contributions are the ones removed in Eq. (5.8.2.2).

For a closed cell, \(\sum_f\sigma_{Pf}\vec A_f=\vec0\). Subtracting \(p_P\sum_f\sigma_{Pf}\vec A_f\) from the central pressure sum expresses it in terms of pressure differences. For a cell whose faces are all interior, with neighbor \(N\) across each face,

(5.8.2.6)#\[\begin{split}\vec{\mathcal P}_P &=\sum_{f\in\mathcal F_P}\sigma_{Pf}w_N(p_N-p_P)\vec A_f \\ \vec{\mathcal B}_P &=\sum_{f\in\mathcal F_P}\sigma_{Pf}w_N (\vec S_f\cdot\vec r_{PN})\vec A_f\end{split}\]

Here \(w_N\) is the weight of the neighboring cell in the face pressure, and \(\vec r_{PN}\) points from \(P\) to that neighbor; the incidence sign converts the stored area to the outward area of \(P\). Boundary rows use the corresponding one-sided pressure and source estimates. If \(p_N-p_P=\vec S_f\cdot\vec r_{PN}\) on every interior face, the cell sums agree. The direct face estimates then agree as well, so \(\mathscr R_{p,f}=\mathscr R_{b,f}\) and their flux contributions cancel. The skew correction below extends this pairing to corrected central pressure.

5.8.3. Including Face Time History#

First take \(\alpha_v=1\). As in the classical derivation, separate the face flux from the flux represented by the cell velocities. Write the current difference as \(E_f\) and the stored differences as \(E_f^j\):

(5.8.3.1)#\[\begin{split}E_f&=\underbrace{\dot\Omega_f^*-A_f\mathcal I_f(\vec u^*)\cdot\hat{\vec n}_f} _{\text{current face and cell flux difference}} \\ E_f^j&=\dot\Omega_f^j-A_f\mathcal I_f(\vec u^j)\cdot\hat{\vec n}_f \quad (j=k,n)\end{split}\]

Using the shared face coefficient, the face time coefficient is \(c_f=\rho_{h,f}^n\lambda_0\). Subtracting the interpolated cell storage increment from the face storage increment gives

(5.8.3.2)#\[\begin{split}&\underbrace{c_f(\dot\Omega_f^*-\dot\Omega_f^n)}_{\text{face storage increment}} -\underbrace{c_f A_f\mathcal I_f(\vec u^*-\vec u^n)\cdot\hat{\vec n}_f} _{\text{interpolated cell storage increment}} \\ &\qquad=c_f\left[ \underbrace{\dot\Omega_f^*-A_f\mathcal I_f(\vec u^*)\cdot\hat{\vec n}_f}_{E_f} -\underbrace{\dot\Omega_f^n-A_f\mathcal I_f(\vec u^n)\cdot\hat{\vec n}_f}_{E_f^n} \right]\end{split}\]

Storage is on the left of the momentum balance, so its contribution on the source side is \(-c_f(E_f-E_f^n)\). Combine it with the pressure and body-source differences. Let \(\beta_f\) be the common geometric multiplier on those two spatial terms; the default is \(\beta_f=1\), and the optional angular corrections are given below. The resulting face model is

(5.8.3.3)#\[E_f=\mathcal D_f\left[ \underbrace{\beta_f A_f(-\mathscr R_{p,f}+\mathscr R_{b,f})}_{\text{pressure and source replacement}} +\underbrace{c_fE_f^n-c_fE_f}_{\text{face time-history replacement}}\right]\]

The choice of a shared face coefficient and harmonic density enters in forming this model. The next steps are algebra. Move the term containing the unknown current difference to the left:

(5.8.3.4)#\[(1+c_f\mathcal D_f)E_f =\mathcal D_f\beta_f A_f(-\mathscr R_{p,f}+\mathscr R_{b,f}) +c_f\mathcal D_f E_f^n\]

Divide by \(1+c_f\mathcal D_f\) and label the two resulting factors:

(5.8.3.5)#\[E_f= \underbrace{\frac{\mathcal D_f}{1+c_f\mathcal D_f}}_{F_f} \beta_f A_f(-\mathscr R_{p,f}+\mathscr R_{b,f}) +\underbrace{\frac{c_f\mathcal D_f}{1+c_f\mathcal D_f}}_{G_f}E_f^n\]

Thus the coefficient multiplying the pressure and source terms is \(F_f\), and the old-time weight is \(G_f\):

(5.8.3.6)#\[c_f=\rho_{h,f}^n\lambda_0 \qquad F_f=\frac{\mathcal D_f}{1+c_f\mathcal D_f} \qquad G_f=c_fF_f\]

For under-relaxation, retain the fraction \(1-\alpha_v\) of the previous iteration’s flux difference and use \(\alpha_v\) of the new difference just derived. This is the same face-history construction used for the classical form:

(5.8.3.7)#\[\dot\Omega_f^{*,k+1}-A_f\mathcal I_f(\vec u^{*,k+1})\cdot\hat{\vec n}_f =(1-\alpha_v)E_f^k +\alpha_v\left[\beta_f F_f A_f(-\mathscr R_{p,f}+\mathscr R_{b,f})+G_fE_f^n\right]\]

Add back the interpolated predictor and expand the two stored differences:

(5.8.3.8)#\[\begin{split}\dot\Omega_f^{*,k+1} ={}&\underbrace{A_f\mathcal I_f(\vec u^{*,k+1})\cdot\hat{\vec n}_f}_{\text{interpolated predictor}} \\ &+\underbrace{(1-\alpha_v)\left[\dot\Omega_f^k -A_f\mathcal I_f(\vec u^k)\cdot\hat{\vec n}_f\right]}_{\text{previous-iteration history}} \\ &+\underbrace{\alpha_v G_f\left[\dot\Omega_f^n -A_f\mathcal I_f(\vec u^n)\cdot\hat{\vec n}_f\right]}_{\text{previous-time history}} \\ &-\underbrace{\alpha_v\beta_f F_f A_f\mathscr R_{p,f}}_{\text{pressure replacement}} +\underbrace{\alpha_v\beta_f F_f A_f\mathscr R_{b,f}}_{\text{source replacement}}\end{split}\]

For equal density, equal cell ratios \(\Omega/\widetilde a\), midpoint weights, and an orthogonal face, \(c_f\mathcal D_f=\delta_f\). The Denner and Pascau history and pressure factors then coincide. Equal spacing alone is insufficient when density or the ratio \(\Omega/\widetilde a\) differs between the cells.

At a converged steady state, all three face–cell flux differences coincide. Subtract the iteration-history term and divide by \(\alpha_v\) to get \((1-G_f)E_f=\beta_f F_f A_f(-\mathscr R_{p,f}+\mathscr R_{b,f})\). Since \(1-G_f=1/(1+c_f\mathcal D_f)\), the ratio \(F_f/(1-G_f)=\mathcal D_f\). The complete steady flux difference therefore uses the spatial coefficient \(\mathcal D_f\), with no remaining temporal factor.

5.8.4. Geometry and Source Modifiers#

The factor \(\beta_f\) scales the pressure and source terms in the face flux when the center line and normal are not parallel. The setting skewnessCorrection=1 uses \(\beta_f=1\); this is also the default. The choices skewnessCorrection=2 and skewnessCorrection=3 use, respectively,

(5.8.4.1)#\[\beta_f = \hat{\vec{n}}_f \cdot\hat{\vec{r}}_{PN} \qquad\text{or}\qquad \beta_f = \frac{1}{ \hat{\vec{n}}_f \cdot\hat{\vec{r}}_{PN} }\]

These factors depend on the angle between the face normal and the center line. All three coincide on an orthogonal face. The third changes \(A_f/d_{PN}\) into \(A_f/\ell_f\); the same factor multiplies both pressure and source residuals.

With central pressure interpolation and highOrder, use the corrected face pressure in Eq. (5.3.7.3) with the projected-distance weights in Eq. (5.8.1.5). This changes the integrated cell pressure contribution while retaining the direct adjacent-cell pressure difference.

The published force-balanced construction includes the same interpolation correction in the cell source (Bartholomew et al., Eqs. 72–73 [BDAA+18]). Define its integrated face contribution as

(5.8.4.2)#\[\vec k_f=[\mathcal I_f(\nabla p)\cdot\vec r_f]\vec A_f\]

The corresponding interior-face source additions are

(5.8.4.3)#\[\Delta\vec{\mathcal B}_P=w_N(\vec S_f\cdot\vec r_{PN})\vec A_f+\vec k_f \qquad \Delta\vec{\mathcal B}_N=w_P(\vec S_f\cdot\vec r_{PN})\vec A_f-\vec k_f\]

The pressure-gradient sum gains \(+\vec k_f\) in the left cell and \(-\vec k_f\) in the right cell. Each source addition gains the same term, so the correction cancels from \(-\vec{\mathcal P}+\vec{\mathcal B}\). This preserves the central pressure/source pairing. It does not establish that either reconstructed force is individually accurate away from equilibrium; the spatial accuracy of both forces remains a separate requirement. Because \(\vec k_f\) depends on pressure, its change also belongs in the pressure-correction derivation for this source construction.

Stream’s highOrder option applies Eq. (5.3.7.3) to pressure, but does not supply the matching cell-source addition in Eq. (5.8.4.3).

For the current Stream variants, the pressure choices are:

Cell pressure reconstruction

Effect on the Denner construction

CD

Eq. (5.3.7.2) with projected-distance weights; the pairing in Eq. (5.8.2.6) applies.

CD with highOrder

Eq. (5.3.7.3); the published balance additionally requires Eq. (5.8.4.3).

MUSCL

Eq. (5.3.7.4); highOrder has no effect. Its different pressure force requires a separate source-balance argument.

MUSCL’s agreement with corrected CD for an unlimited linear field does not extend this balance proof to arbitrary pressures or limiter values. Changing the gradient estimate or limiter changes the force reconstructed in the cells and therefore the pressure term removed in the face flux.

The pressure reconstruction and the interpolation of velocity to the face are also distinct. Bartholomew et al., Section 3.1, permit a velocity-gradient correction for the displacement between the interpolation point and face centroid, but make this correction optional [BDAA+18]. Stream’s Denner predictor and stored velocity histories use the linear interpolation shown in Eq. (5.8.3.8). The pressure highOrder modifier does not add that velocity correction.

The modified source estimate is a Stream variant. Its direct gravity/source estimate uses \(L_f(\vec S)/d_{PN}\) in place of \(\vec S_f\cdot\hat{\vec r}_{PN}\). The integrated cell source additions in Eq. (5.8.2.5) replace \(\vec S_f\cdot\vec r_{PN}\) by \(L_f(\vec S)\) at the same time. The pressure and cell-source removal remain projected along the center line. Both the direct source and the cell source must be changed together.

5.8.5. Direct Interior Pressure Coefficient#

Hold the cell velocities, reconstructed forces, histories and coefficients fixed. Varying only the direct face-pressure difference gives

(5.8.5.1)#\[d_f^{\mathrm{dir}} = \rho_f\alpha_v\beta_fF_f \frac{A_f}{d_{PN}}\]

The one-sided boundary construction is developed with the pressure-correction boundary conditions.

5.9. Connection to the Pressure-Correction Equation#

Changing pressure changes the cell velocity, the cell pressure contribution, and the direct face-pressure term. We add these three changes to obtain the flux correction for each form. SIMPLE and SIMPLEC supply the cell-velocity approximation; a further face approximation can restrict the pressure coupling to the two cells beside the face.

Assumptions for the face correction

Use an orthogonal, unskewed face on a fixed mesh, BDF1, and density fixed over the step. Hold the momentum coefficients, pressure-reconstruction weights, gradient-operator coefficients, limiter values and stored histories fixed during the correction. Body sources are pressure-independent in the following cell and face formulas. Relaxation applies to the complete momentum diagonal. Denner has \(\beta_f=1\), and its current and old-time harmonic densities agree.

5.9.1. Direct Pressure-Difference Coefficient#

Hold the predictor, cell forces, histories, density and momentum coefficients fixed. Varying only \(p_N-p_P\) defines

(5.9.1.1)#\[d_f^{\mathrm{dir}}=-\left. \frac{\partial\dot m_f^*}{\partial(p_N-p_P)} \right|_{\mathrm{other\ quantities\ fixed}}\]

A positive \(d_f^{\mathrm{dir}}\) means that increasing \(p_N-p_P\) reduces mass flux in the stored direction. Its value is given by Eqs. (5.5.3.1) and (5.8.5.1) for the preceding forms, with Choi using the old coefficient. This derivative includes only the direct face term.

5.9.2. The Four Face Formulas#

For old, Choi and new, use the integrated pressure contribution introduced in Consistency with Momentum Source Terms. If the face formula instead uses \(\Omega\nabla p\), the cancellation below requires that quantity to equal the pressure contribution used in the cell correction.

Denote the predictor interpolation by \(\mathcal U_f(\vec u)\) and the velocity contribution of an integrated cell force \(\vec X\) by \(\mathcal L_f(\vec X)\). The original face formulas give

Form

Predictor interpolation \(\mathcal U_f(\vec u)\)

Cell-force contribution \(\mathcal L_f(\vec X)\)

old, Choi

\(\mathcal I_f(\vec u)\)

\(\alpha_v\mathcal I_f(\vec X/{}^{(u)}\!a)\)

new

\(\mathcal I_f[(1+\delta)\vec u]/(1+\delta_f)\)

\(\alpha_v\mathcal I_f(\vec X/\widetilde a)/(1+\delta_f)\)

Denner

\(\mathcal I_f(\vec u)\)

\(\alpha_v\rho_{h,f}F_f\mathcal I_f(\vec X/M)\)

Let \(\mathcal C_{f,\mathrm{hist}}\) denote the selected form’s total history contribution. It is the iteration term in Eq. (5.4.1.6) for old, the two history terms in Eq. (5.6.1.4) for Choi, Eq. (5.5.2.3) for new, and the two history terms in Eq. (5.8.3.8) for Denner. With momentum sources omitted, the four flux formulas can be written as

(5.9.2.1)#\[\dot\Omega_f^* =\left[\mathcal U_f(\vec u^*) +\mathcal L_f(\vec{\mathcal P})\right]\cdot\vec A_f -\frac{d_f^{\mathrm{dir}}}{\rho_f}(p_N-p_P) +\mathcal C_{f,\mathrm{hist}}\]

Here \(d_f^{\mathrm{dir}}\) is the original coefficient for the selected form. Fixed body-source terms may be included; they contribute no change during the pressure correction.

5.9.3. Correcting the Cell Pressure Contribution#

Following the pressure–velocity algorithms chapter, use the raw pressure correction in the trial fields:

(5.9.3.1)#\[p^{\mathrm{corr}}=p^k+p' \qquad \vec u^{\mathrm{corr}}=\vec u^*+\vec u'\]

The later primary-pressure update may be relaxed. The velocity and flux corrections use the raw \(p'\) from the pressure equation.

Apply the pressure correction to the face pressure used in the momentum equation. The integrated change is

(5.9.3.2)#\[\vec{\mathcal P}_P' =\sum_{f\in\mathcal F_P}\sigma_{Pf}p_f'\vec A_f\]

For CD with fixed weights, \(p_f'=w_Pp_P'+w_Np_N'\). The corrected CD expression in Eq. (5.3.7.3) gives

(5.9.3.3)#\[p_f'=w_Pp_P'+w_Np_N'+\mathcal I_f(\nabla p')\cdot\vec r_f\]

For MUSCL, apply the same substitution to Eq. (5.3.7.4), holding \(\Psi_P\) and \(\Psi_N\) fixed:

(5.9.3.4)#\[\begin{split}p_f'=\frac12\big[&p_P'+p_N' +\Psi_P\nabla p_P'\cdot(\vec x_f-\vec x_P) \\ &+\Psi_N\nabla p_N'\cdot(\vec x_f-\vec x_N)\big]\end{split}\]

Here \(\nabla p'\) is computed by the same linear gradient operator as \(\nabla p\). These expressions give the exact change for the frozen reconstruction. A full linearization of an active limiter would also include its change with pressure. Omitting the gradient terms is a further approximation, beyond freezing the limiter. The omitted changes must then be recovered by updating the reconstruction in the outer iteration; this does not guarantee that the iteration converges.

Subtract the predictor momentum row from the trial corrected row:

(5.9.3.5)#\[{}^{(u)}\!a_P^{\mathrm{pred}}\vec u_P' =\sum_N{}^{(u)}\!a_{P,N}\vec u_N'-\vec{\mathcal P}_P'\]

SIMPLE omits the neighboring velocity corrections, giving the approximate cell row

(5.9.3.6)#\[{}^{(u)}\!a_P^{\mathrm{pred}}\vec u_P' =-\vec{\mathcal P}_P'\]

For SIMPLEC, rewrite the neighbor sum in Eq. (5.9.3.5) as a part proportional to \(\vec u_P'\) and a part containing differences:

(5.9.3.7)#\[\left({}^{(u)}\!a_P^{\mathrm{pred}} -\sum_N{}^{(u)}\!a_{P,N}\right)\vec u_P' =-\vec{\mathcal P}_P' +\sum_N{}^{(u)}\!a_{P,N}(\vec u_N'-\vec u_P')\]

This rearrangement is exact with the momentum coefficients held fixed. SIMPLEC neglects the weighted differences on the right, giving

(5.9.3.8)#\[\left({}^{(u)}\!a_P^{\mathrm{pred}} -\sum_N{}^{(u)}\!a_{P,N}\right)\vec u_P' =-\vec{\mathcal P}_P'\]

Solving the two approximate rows gives the cell corrections, with the coefficients \(D_P\) used in the algorithms chapter:

(5.9.3.9)#\[\begin{split}\vec u_P'=-\frac{D_P}{\Omega_P}\vec{\mathcal P}_P' \qquad D_P= \begin{cases} \Omega_P/{}^{(u)}\!a_P^{\mathrm{pred}} &\text{SIMPLE} \\ \Omega_P/\left({}^{(u)}\!a_P^{\mathrm{pred}}-\sum_N{}^{(u)}\!a_{P,N}\right) &\text{SIMPLEC} \end{cases}\end{split}\]

The SIMPLEC denominator must be nonzero. A positive denominator gives a velocity change opposite to the pressure-gradient change. Its value must come from the assembled momentum row, including implicit sources and boundary contributions.

Both expressions use \(\vec{\mathcal P}_P'\) from the momentum pressure reconstruction. An algorithm may approximate this change with a simpler pressure-correction gradient. That adds an approximation; the exact cancellations below then hold only where the two operators agree.

5.9.4. Adding the Three Face-Flux Changes#

Hold the stored time and iteration histories and any body-source terms fixed. Evaluate Eq. (5.9.2.1) at the trial corrected fields and subtract its predictor value. Linearity of \(\mathcal U_f\) and \(\mathcal L_f\) gives

(5.9.4.1)#\[\begin{split}\dot\Omega_f' ={}&\underbrace{\mathcal U_f(\vec u')\cdot\vec A_f} _{\text{cell-velocity change}} +\underbrace{\mathcal L_f(\vec{\mathcal P}')\cdot\vec A_f} _{\text{cell-pressure change}} \\ &-\underbrace{\frac{d_f^{\mathrm{dir}}}{\rho_f}(p_N'-p_P')} _{\text{direct face-pressure change}}\end{split}\]

This expression gives the change in face flux for either cell correction under the stated assumptions.

5.9.5. Classical, Choi and Pascau Corrections#

With SIMPLE, \(\vec u_P'=-\alpha_v\vec{\mathcal P}_P'/{}^{(u)}\!a_P\). For old and Choi, ordinary interpolation makes the first two terms cancel. For new, substitute \({}^{(u)}\!a=\widetilde a(1+\delta)\):

(5.9.5.1)#\[\mathcal U_f(\vec u') =-\frac{\alpha_v}{1+\delta_f} \mathcal I_f\left[ \frac{(1+\delta)\vec{\mathcal P}'}{\widetilde a(1+\delta)} \right] =-\mathcal L_f(\vec{\mathcal P}')\]

These three forms therefore leave only the direct face-pressure term, provided the cell correction and the force removal use the same pressure reconstruction.

For an interior momentum row with no implicit sources or boundary contributions, the continuity-subtracted form gives \(\sum_N{}^{(u)}\!a_{P,N}=\widetilde a_P\). Since \({}^{(u)}\!a_P^{\mathrm{pred}}=\widetilde a_P(1+\delta_P)/\alpha_v\), the SIMPLEC cell coefficient exceeds the SIMPLE coefficient by the factor

(5.9.5.2)#\[\frac{D_P^{\mathrm C}}{D_P^{\mathrm S}} =\frac{{}^{(u)}\!a_P^{\mathrm{pred}}} {{}^{(u)}\!a_P^{\mathrm{pred}}-\widetilde a_P} =\frac{1+\delta_P}{1+\delta_P-\alpha_v} =1+\kappa_P\]

Here

(5.9.5.3)#\[\kappa_P=\frac{\alpha_v}{1-\alpha_v+\delta_P}\]

For old, Choi and new, the part equal to the SIMPLE correction still cancels the cell-pressure term. The additional part gives

(5.9.5.4)#\[\dot\Omega_f' =-\frac{d_f^{\mathrm{dir}}}{\rho_f}(p_N'-p_P') -\mathcal L_f(\kappa\vec{\mathcal P}')\cdot\vec A_f\]

To obtain a correction using only \(p_P'\) and \(p_N'\), make two face approximations. First, replace the cell-dependent multipliers by one face value, evaluated from \(\delta_f=\mathcal I_f(\delta)\):

(5.9.5.5)#\[\mathcal L_f(\kappa\vec{\mathcal P}') \approx\kappa_f\mathcal L_f(\vec{\mathcal P}') \qquad \kappa_f=\frac{\alpha_v}{1-\alpha_v+\delta_f}\]

Evaluating this ratio after averaging \(\delta\) generally differs from averaging the cell values of \(\kappa\). Second, replace the interpolated cell-pressure term by the adjacent-cell pressure difference:

(5.9.5.6)#\[\kappa_f\mathcal L_f(\vec{\mathcal P}')\cdot\vec A_f \approx\kappa_f\frac{d_f^{\mathrm{dir}}}{\rho_f}(p_N'-p_P')\]

Substituting these two approximations into Eq. (5.9.5.4) gives

(5.9.5.7)#\[d_f=(1+\kappa_f)d_f^{\mathrm{dir}}\]

The compact coefficient therefore uses both the SIMPLEC cell approximation and the two face approximations above. Implicit sources or other momentum-row forms change the neighbor-coefficient sum used to derive \(D_P^{\mathrm C}\).

5.9.6. Denner with SIMPLE and SIMPLEC#

Denner interpolates the predictor normally but weights the cell force with a shared, density-dependent coefficient. Substitution of the SIMPLE cell correction leaves

(5.9.6.1)#\[\begin{split}\dot\Omega_f' ={}&-\frac{d_f^{\mathrm{dir}}}{\rho_f}(p_N'-p_P') \\ &+\alpha_v\mathcal I_f\left[ \left(\frac{\rho_{h,f}F_f}{M}-\frac{1}{{}^{(u)}\!a}\right) \vec{\mathcal P}'\right]\cdot\vec A_f\end{split}\]

The remaining cell term vanishes when the two coefficients agree in each cell. Otherwise, \(\vec{\mathcal P}'\) brings in pressure corrections from the other faces of those cells.

For SIMPLEC, substitute \(\vec u_P'=-(D_P^{\mathrm C}/\Omega_P)\vec{\mathcal P}_P'\) into Eq. (5.9.4.1) and combine the two cell terms under the same interpolation:

(5.9.6.2)#\[\begin{split}\dot\Omega_f' ={}&-\frac{d_f^{\mathrm{dir}}}{\rho_f}(p_N'-p_P') \\ &+\mathcal I_f\left[ \left(\frac{\alpha_v\rho_{h,f}F_f}{M} -\frac{D^{\mathrm C}}{\Omega}\right) \vec{\mathcal P}'\right]\cdot\vec A_f\end{split}\]

The remaining cell term vanishes for arbitrary pressure corrections if its coefficient vanishes in each cell:

(5.9.6.3)#\[\frac{\alpha_v\rho_{h,f}F_f}{M_P} =\frac{D_P^{\mathrm C}}{\Omega_P} \qquad \frac{\alpha_v\rho_{h,f}F_f}{M_N} =\frac{D_N^{\mathrm C}}{\Omega_N}\]

One shared face coefficient generally cannot satisfy these two cell conditions. The remainder may cancel for a particular pressure field without these coefficient equalities, but that is not a general identity.

Using \((1+\kappa_f)d_f^{\mathrm{dir}}\) as a compact coefficient for Denner requires an approximation to the entire remaining cell term in Eq. (5.9.6.2). The SIMPLEC cell approximation alone does not supply that face approximation.

5.9.7. Summary of the Pressure Corrections#

For the stated fixed-density, orthogonal scope, the cell contribution that remains after the direct term is

Form

SIMPLE

SIMPLEC

old, Choi, new

Zero when the same cell pressure contribution is used

\(-\mathcal L_f(\kappa\vec{\mathcal P}')\cdot\vec A_f\) for the interior row assumed above

Denner

Cell-pressure term in Eq. (5.9.6.1)

Cell-pressure term in Eq. (5.9.6.2)

5.9.8. Using the Selected Correction in Continuity#

When the cell terms cancel, \(d_f=d_f^{\mathrm{dir}}\). When their effect is approximated by a two-cell pressure difference, include that approximation in \(d_f\), as in Eq. (5.9.5.7). The selected compact correction is then

(5.9.8.1)#\[\dot\Omega_f'=-\frac{d_f}{\rho_f}(p_N'-p_P') \qquad \dot m_f'=-d_f(p_N'-p_P')\]

If the cell terms are retained instead, multiply Eq. (5.9.4.1) by \(\rho_f\):

(5.9.8.2)#\[\dot m_f' =-d_f^{\mathrm{dir}}(p_N'-p_P') +\rho_f\left[\mathcal U_f(\vec u') +\mathcal L_f(\vec{\mathcal P}')\right]\cdot\vec A_f\]

Insert the selected face correction into fixed-density continuity:

(5.9.8.3)#\[\sum_{f\in\mathcal F_P}\sigma_{Pf}\dot m_f' =-\sum_{f\in\mathcal F_P}\sigma_{Pf}\dot m_f^*\]

The pressure-correction chapter assembles the cell row and develops density corrections and boundary conditions. The pressure matrix and the applied flux correction must use the same face relation. Retaining the cell terms adds their pressure couplings; omitted changes remain to be resolved by the outer iteration.

For nonorthogonal faces, changes in transverse and skew corrections may be included or deferred to the outer iteration. A pressure-dependent body force contributes an additional change, as in the published corrected source construction in Eq. (5.8.4.3).

5.10. Moving Grids and Relative Flux#

On a moving control volume, continuity uses the fluid flux relative to the grid:

(5.10.1)#\[\dot{\Omega}_{\mathrm{rel},f} = \dot{\Omega}_f-\dot{\Omega}_{g,f}\]

where \(\dot{\Omega}_{g,f}\) is the swept grid-volume flux. Momentum interpolation constructs the fluid flux and its dependence on the adjacent-cell pressure difference. Continuity and its flux correction use the relative flux. At the predictor stage, the relative flux supplied to the pressure-correction equation is therefore

(5.10.2)#\[\dot{\Omega}_{\mathrm{rel},f}^{*,k+1} = \dot{\Omega}_f^{*,k+1}-\dot{\Omega}_{g,f}\]

The geometric conservation law also requires the same time-consistent face area representation in:

  • the transported face flux,

  • the pressure and source terms in the momentum-interpolation formula, and

  • the swept grid-volume flux.

Otherwise a uniform flow may acquire a nonzero discrete residual solely from mesh motion. The space–time area construction used for this purpose is developed in Geometric Conservation Law for Moving Meshes.

5.11. Comparing the Completed Constructions#

The fixed-grid, one-step forms combine the following momentum weights and histories, with the stated assumptions on spatial reconstruction.

Selection

Momentum weighting

History treatment

Reconstruction assumptions

old

Complete diagonal; ordinary velocity interpolation

Previous-iteration face–cell flux difference

Orthogonal derivation; integrated cell pressure is selected by conservativePressure.

Choi

Same as old

Classical iteration term plus old-time face–cell difference with a common ratio

Same spatial construction as old; the added history does not supply a geometric correction.

new

Non-temporal diagonal; predictor weighted by \(1+\delta\) and divided by \(1+\delta_f\)

Matching weighted cell and face histories

Orthogonal derivation; integrated cell pressure is selected by conservativePressure.

Denner

Shared \(\mathcal D_f\) and harmonic density; projected-distance velocity interpolation

Iteration term and \(G_f\)-weighted old-time difference

Center-line pressure/source comparison; central force pairing and its extensions are given in Geometry and Source Modifiers.

The face-pressure formulas specify CD, corrected CD and MUSCL. Their gradient estimates, limiting and face quadrature must satisfy the stated accuracy and source-balance conditions. The geometry discussion distinguishes a normal derivative correction from a correction to the face pressure. The pressure-correction derivation gives the flux change for SIMPLE and SIMPLEC, including the further approximations needed for a compact pressure equation. Neither a reconstruction choice nor a pressure-correction approximation replaces the selected method’s histories.

5.12. Properties of the Interpolation#

The preceding derivations establish several distinct properties:

  • Pressure coupling: the adjacent-cell pressure difference makes the face flux respond to a pressure pattern that centered cell gradients may miss.

  • Source balance: removing and replacing pressure and sources with compatible reconstructions preserves an equilibrium when both cell and face forces balance, as in Eq. (5.7.1.6).

  • Relaxation and time-step dependence: the classical steady relation retains the temporal diagonal. Choi removes that dependence for equal temporal ratios, but generally retains it for unequal ratios. Pascau and Denner cancel their explicit temporal factors at steady convergence under the assumptions used in their derivations.

  • Pressure correction: SIMPLE and SIMPLEC approximate the momentum response to pressure. The chosen face-flux correction must be used in both the pressure equation and the flux update.

  • Moving grids: fluid flux, pressure and source geometry, and swept grid-volume flux must use the same geometric conservation construction.

Preserving a balance does not determine the rate of nonlinear convergence. That also depends on the momentum and pressure-correction approximations. Boundary fluxes and one-sided corrections are developed in Boundary Conditions.

5.12.1. Small Timesteps and Velocity Relaxation#

For positive fixed \(\widetilde a_P\) and \(M_P\), decreasing \(\Delta t\) increases \(\delta_P=M_P/(\Delta t\widetilde a_P)\). The complete diagonal then becomes dominated by inertia. With whole-diagonal relaxation, the cell pressure-correction coefficients satisfy

(5.12.1.1)#\[D_P^{\mathrm S} =\frac{\alpha_v\Omega_P}{\widetilde a_P+M_P/\Delta t} \sim\frac{\alpha_v\Delta t}{\rho_P} \qquad \frac{D_P^{\mathrm C}}{D_P^{\mathrm S}} =1+\frac{\alpha_v}{1-\alpha_v+\delta_P}\longrightarrow1\]

The SIMPLEC ratio here assumes an interior row with no implicit sources or boundary contributions. The two cell approximations approach each other as storage dominates.

For a prescribed pressure correction, reducing \(\alpha_v\) reduces the local velocity correction. In the coupled iteration, however, \(p'\) is determined by a pressure equation whose coefficients also change. The resulting change in \(p'\) can offset the smaller velocity coefficient. The coefficient limits alone therefore do not determine the size of the applied correction or the rate of convergence.

Relaxation also retains the fraction \(1-\alpha_v\) of the previous iteration’s face–cell flux difference. As \(\Delta t\) decreases, Choi’s factor \(\delta_f/(1+\delta_f)\) and Denner’s \(G_f\) tend to one, so their complete physical-time history coefficients tend to \(\alpha_v\). This limit uses fixed positive \(\mathcal D_f\) and density for Denner. The histories must remain consistent with the cell time discretization even when temporal and relaxation factors cancel from the converged steady relation.

5.13. References#

[BDAA+18] (1,2,3)

Paul Bartholomew, Fabian Denner, Mohd Hazmil Abdol-Azis, Andrew Marquis, and Berend G. M. van Wachem. Unified formulation of the momentum-weighted interpolation for collocated variable arrangements. Journal of Computational Physics, 375:177–208, 2018. doi:10.1016/j.jcp.2018.08.030.

[Cho99]

Seok-Ki Choi. Note on the use of momentum interpolation method for unsteady flows. Numerical Heat Transfer, Part A: Applications, 36(5):545–550, 1999. doi:10.1080/104077899274679.

[FP02]

J.H. Ferziger and M. Peric. Computational Methods for Fluid Dynamics. Springer, 3rd edition, 2002.

[Maj88]

S. Majumdar. Role of underrelaxation in momentum interpolation for calculation of flow with nonstaggered grids. Numerical Heat Transfer, 13(1):125–132, 1988. doi:10.1080/10407788808913607.

[Pas11]

A. Pascau. Cell face velocity alternatives in a structured colocated grid for the unsteady navier–stokes equations. International Journal for Numerical Methods in Fluids, 65:812–833, 2011. doi:10.1002/fld.2215.

[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.