The equations presented in the preceding Chapters, 2 and 3, are solved in the finite volume framework, where the solution domain is discretized into a finite number of non-overlapping volumes. The transport and conservation equations can be solved for each of these finite volumes. Local values are computed for cell centers and appropriate in-terpolation schemes need to be used to obtain values at the volume surfaces to compute fluxes.
The starting point of the discretization of the transport and conservation equations is to write these equations in integral form, i.e., to integrate them over an arbitrary finite volume ∆V (here, for the arbitrary scalar φ):
Z
Then, the Gauß theorem is applied to conveniently rewrite transport terms in terms of fluxes over the volume surface (i.e., to relate a volume integral of a divergence of a field to the flux normal to the volume’s surface, R
∆V ∇ · φdV =R
Equation 4.2 can be integrated on a numerical grid. In this work, the numerical grid is composed of equally sized cubic cells. A sketch of the setup of a representative cell and its neighbors is given in Fig. 4.1 exemplarily in 2D.
The equations are solved for each of the finite volume cells. The computed value of a quantity is hence volume-averaged over the cell volume, and this averaged value is equal to the value at the cell center. The task of the discretization methods is to approximate derivatives and cell face values of the terms of the transport/conservation equations.
Figure 4.1: Sketch of the setup of a cell and its neighbors in 2D.
4.1.1 Discretization of Volume Integrals
The computation of source terms and the accumulation term requires the evaluation of an integral over the cell volume. Generally, computed cell values of φ are assumed to be equal to the value at the cell center. Hence, volume integrals are simply computed as (here at the example of the source term in Eq. 4.1 for cell C):
Z
∆V
ρ ˙SφdV = ρCS˙φ,C∆3. (4.3)
4.1.2 Discretization of the Convective Fluxes
The convective flux is described as an integral over a cell’s surfaces. Using cubic cells, this integral can hence be approximated by a sum over all six cell faces, which can be
written as: Z
∆A
ρφujnjdA≈X
f
ρfφfufnf∆Af. (4.4) The main task of the discretization schemes is to give an approximation to the cell face value of ρfφf. There are different methods to choose from and commonly there has to be a trade-off between accuracy, stability and cost. The different methods used in this work are presented in the following discussion.
Central Differencing Scheme
The central differencing scheme approximates cell face values from cell center values of neighboring cells, such that:
φi+1/2,j,k = 1
2(φi+1,j,k+ φi,j,k) , (4.5)
for the eastern face of cell i,j,k. The central differencing scheme is used to compute convective fluxes of momentum. The scheme is of second order but prone to oscillations
if the fields are not smooth enough. This requires scalars in the large eddy simulation (LES) to be treated with a different scheme that ensures that no oscillations evolve. In the direct numerical simulation (DNS), as the fields are well resolved, the central differencing scheme (CDS) is used for convective fluxes of all scalars. In the LES, treating momentum fluxes with the central differencing scheme is appropriate since the pressure solver is able to remove oscillations.
Total Variation Diminishing Scheme
The total variation diminishing (TVD) scheme ensures that no oscillations evolve. It is used for convective fluxes of scalars in the LES. The TVD scheme blends CDS and the upwind differencing scheme (UDS) such that the accurate CDS is used where possible (i.e., where the solution is smooth enough) to maintain accuracy and the UDS where required to ensure a bounded non-oscillating solution. The TVD flux is computed as:
φi+1/2,j,k = φi+u,j,k+1
2B(r) (φi+u,j,k− φi+uu,j,k) . (4.6) The function B(r) is called the flux limiter function that requires the input of r:
r = φi+d,j,k− φi+u,j,k
φi+u,j,k− φi+uu,j,k
. (4.7)
In the above equations u and uu indicate the two upstream cell centers (uu indicating the farther upstream cell), and d indicates the downstream cell center. If the velocity on the cell face is positive, u takes the value of 0, uu of−1 and d of 1. If the velocity on the cell face is negative, u takes the value of 1, uu of 2 and d of 0. The so-called CHARM limiter [269] has been applied in this work, based on earlier investigations of different limiter functions [95, 220].
4.1.3 Discretization of the Diffusive Fluxes
The computation of diffusive fluxes requires the approximation of derivatives on the cell faces. In this work, all diffusive fluxes are treated by a central differencing scheme. First, the diffusive flux is written as a sum of the fluxes over all faces:
Z
The expression within brackets containing the derivative then needs to be approximated at the cell face:
4.1.4 Pressure Correction
As outlined in Chapter 2, the governing equations solved in this work are based on a low-Mach approximation (see [125]). This means that density and pressure are treated in a decoupled manner (see [28] for incompressible flows). All computations involving pressure assume a constant specified thermodynamic background pressure, which in all investigations reported in this work is equal to the atmospheric pressure. The only excep-tion to this is the pressure gradient term in the momentum equaexcep-tions, which represents the gradient of the dynamic pressure. In the low-Mach context, this pressure gradient term can be understood as the pressure gradient required for the velocities to satisfy continuity [45] and has to be obtained to accurately solve the momentum equations.
An equation for the pressure and hence for the pressure gradient can be obtained by discretizing the momentum conservation equations to solve for a predicted momentum field first. This predicted momentum contains the yet unknown pressure gradient term.
Substituting the difference of predicted momentum and pressure gradient term (i.e., the corrected momentum at the new time step) into the continuity equation allows to write an equation of Poisson type for the pressure [95, 220]. This equation can then be solved by iterative methods, for example, such as the Gauß-Seidel method with successive over-relaxation used in this work.
Defining momentum and pressure in a collocated fashion, and computing pressure gradients at cell centers gives rise to a velocity-pressure decoupling and checkerboarding [155]. This is alleviated by applying the momentum interpolation method by Rhie &
Chow [196], such that the pressure gradient is computed on the cell faces to correct the cell face-based velocities that enter the flux computation in the discretized momentum equations. More information on the pressure correction algorithm can be found in the work by Proch [185].
4.1.5 Time Discretization
The time-advancement of the flow fields is done exclusively by a Runge-Kutta scheme of third order in a low-storage implementation in this work. However, operator splitting is employed in some parts of this work (Chapter 8) such that chemical source terms are integrated in time using a different scheme. The time integration of the flow solver and chemistry solvers is described in the following.
Runge-Kutta Scheme for Time-Advancement
The Runge-Kutta scheme is based on consecutive explicit Euler steps. To describe an explicit Euler step, Eq. 4.2, is re-arranged such that everything except the accumulation term is on the RHS of the equation:
Z
∆V
∂ρφ
∂t dV = RHS∗(ρφ). (4.10)
With the volume integral approximation discussed above and including ∆3 into RHS* to give RHS, this yields:
∂ρφ
∂t = RHS(ρφ). (4.11)
Using the explicit Euler integration, Eq. 4.11, the value of ρφ at the new time step [ρφ]n+1 can be computed from the old time step [ρφ]n by:
[ρφ]n+1 ≈ [ρφ]n+ ∆tRHS([ρφ]n). (4.12) This approximation is only of first order and not suitable for LES let alone DNS. The Runge-Kutta scheme combines explicit Euler steps to yield higher-order time integration.
A third-order scheme is applied, which combines three explicit Euler steps in a low-storage fashion [261], meaning that not all sub-steps have to be stored in the memory. The three consecutive steps (the three sub-step levels indicated by the subscripts a,b and c) are:
[ρφ]na = [ρφ]n+ ∆t[αaRHS([ρφ]n)] (4.13)
The coefficients can, for example, be found in the work by Kempf [95].
Implicit and Semi-Implicit Schemes for Combustion Chemistry
The system of ordinary differential equations (ODE) describing chemistry usually involves stiffness. Hence, integrating the system in time with the same method as the flow solver would often require time steps much smaller than that of the flow solver, especially in the context of low-Mach flows dealt with in this work. Implicit or semi-implicit methods can relax the time step restriction and in combination with operator splitting permit to solve flow and chemistry at a large time step (governed by the Courant–Friedrichs–Lewy (CFL) criterion of the flow).
The implicit method used in this work is the method by Hindmarsh et al. based on a backward differentiation formula [74]. The equations describing the chemical system can be written as:
Y˙α = ˙ωα(Yγ, H) = RHS(Yγ, H), with γ ∈ [1, .., Ns]. (4.14) Applying the backward difference to this system yields a non-linear algebraic system that is solved using the Newton–Raphson method.
For smaller time steps, the full implicit method might incur an unnecessary penalty on the computational cost. To reduce this, a semi-implicit method can be used. In this work, the point implicit ODE solver [90, 266] has been applied. This solver decomposes the RHS of Eq. 4.14 into a production, Pα, and destruction part, Dα, such that:
Y˙α = Pα− Dα. (4.15)
This equation can be discretized based on the explicit Euler scheme with an additional introduction of implicity by multiplying Dα by the ratio of Yαn+1/Yαn [117]:
Yαn+1− Yαn = ∆t
Re-arranging this to give the new mass fraction Yαn+1 yields:
Yαn+1 = Yαn+ ∆tPαn 1 + ∆YtDnαn
α
. (4.17)
The new mass fraction at n + 1 can then be solved iteratively, solving from one iteration step m to the next m + 1 by (starting from Yαn,m = Yαn for m = 1):
Yαn,m+1 = Yαn+ ∆tPαn,m 1 + ∆YtDn,mαn,m
α
. (4.18)
This is done until the change from m to m + 1 is smaller than a specified tolerance, which here is the same as in the work by Yang et al. [267]. The new mass fractions Yαn+1 are then the mass fractions of the last iteration, i.e., Yαn+1 = Yαn,m=last. This scheme proved to work well if overall small time steps are employed (i.e., ≈ 0.1µs), such as in the direct numerical simulation presented in Chapter 8.