Appendix: Inviscid Fluxes and Gradient Limiting

Numerical treatment of the convection terms in the governing equations is of primary concern regarding both accuracy and stability of the computation. Selection of the convection scheme is made using the run control file variable inviscidFlux.

inviscidFlux: SOU

Three numerical treatments are available, a first-order scheme (FOU), a second-order scheme (SOU) and a second-order scheme intended for use in compressible flows with shock waves (SLAU2). The FOU and SOU schemes may be used for both incompressible and compressible simulations. The SLAU2 scheme is only available for compressible simulations. These schemes as well as the associated limiters are briefly detailed in the following sections.

First-Order Upwinding

This scheme is selected by specifying the value FOU for the inviscidFlux variable. With first-order upwinding, face values for the dependent variables are obtained by a simple zeroth-order extrapolation from the upwind associated cell center. Overall, this scheme results in a calculation which is first-order accurate in space. In general, one should not use first-order upwinding for production runs where grid independent solutions are required as a prohibitive number of grid cells would be required to achieve grid-independence. The generally dissipative nature of this scheme can be advantageous for starting simulations from scratch with a poor initial condition if it is found that second-order schemes have difficulty at start-up due to their relatively less dissipative nature.

Second-Order Upwinding

This scheme is selected by specifying the value SOU for the inviscidFlux variable in the run control file. With second-order upwinding, face values for the dependent variables are obtained via a linear extrapolation from the upwind associated cell center using both the value and gradient of the dependent variable. The linear extrapolation can be limited for stability purposes so that no extrema are introduced by the extrapolation using the limiters discussed here. This is generally a requirement for numerical stability when simulating flows on engineering meshes. Overall, this scheme results in a calculation which is second-order accurate in space and is the preferred scheme for production simulations that do not involve the presence of shock waves.

SLAU/SLAU2

The Simple Low-dissipation Advection-Upstream-splitting-method (SLAU) scheme should be used in compressible simulations that contain shock waves. This scheme is selected by specifying the value SLAU or SLAU2 for the inviscidFlux variable in the run control file. The scheme maintains formal second-order accuracy in regions away from the shocks and degenerates to lower order in the immediate vicinity of the shocks to maintain monotonicity in transitioning from the state on one side of the shock to the state on the other side of the shock. Similar to the second-order upwinding scheme, the SLAU scheme also involves extrapolation operations which require the use of the limiters discussed here. An example showing the specification of the SLAU scheme is shown below.

inviscidFlux: SLAU

A hybrid SLAU scheme is also available in Stream. This hybrid scheme is a blend of SLAU or SLAU2 with a vanLeer Hanel Scheme. This allows for users to have more control of the numerical stability with simulations of flows that have strong shockwaves. Note: To activate the hybrid SLAU scheme, the user must still specify either SLAU or SLAU2 for the inviscidFlux variable in the run control file. To activate this scheme, add the slau_hybrid variable to the run control file as shown below (default shown):

slau_hybrid: 0

The default value for this variable is 0 if slau_hybrid is not included in the run control file, this defaults to the non-hybrid SLAU scheme that was set by the inviscidFlux variable. Other options for the variable are 1 and 2. Specifying 1 only hybridizes the momentum flux and specifying 2 hybridizes both the momentum and energy fluxes.

Inviscid Flux for Turbulence Equations

There may be instances in which one may suspect that the turbulence equations are the source of nonlinear instability within a time step. This could be due to any number of factors, including a poor initial condition or some flow feature that takes the calibration of the turbulence models far out of the range of their intended validity. In such circumstances, in order to achieve stability, one may be required to bring the turbulence equations down to first-order. This is accomplished using the run control file variable turbulenceInviscidFlux as shown below (default shown):

turbulenceInviscidFlux: SOU

The default value for this variable is SOU. One should attempt to use SOU whenever possible, as the use of FOU results in excessively smeared shear layers, recirculation regions and separated flow features. Often it is sufficient just to use FOU to get past a bad initial condition, and then restart to SOU.

Limiters

Limiters are used in conjunction with the second-order convection schemes discussed above as well as throughout the code where projection of cell gradient information to the cell faces is required.

limiter: venkatakrishnan

The venkatakrishnan (default) option can be specified for the Venkatakrishnan limiter [Venk1993] to be used. The barth option will activate the Barth limiter [BaJe1989]. If the value none is specified, no limiting will be performed. The mlp option can be specified to activate a limiter that is based on the multidimensional limiting process [Zhan2018], which is a limiter that is more robust than the Venkatakrishnan limiter for flows with shockwaves. A second, even more tuned limiter [Zhan2018] for flows with shockwaves can be specified by using mlp_pw. This is an MLP limiter that uses a pressure function to detect shockwaves and utilizes a larger stencil of cell and node information in order to determine an appropriate limiter value. It is important to note that at the current time the only variable that controls limiting is the limiter variable. Thus, the same limiter will be used for limiting the convection schemes as well as other terms in the governing equations. Often, a user may think that they can use the value zero to select first-order upwinding. In Stream, one should not use this option, as this turns off all limiting throughout the code. The proper way to select first-order upwinding is with the variable inviscidFlux.

The venkatakrishnan, mlp, and mlp_pw limiters utilize something called the Venkatakrishnan limiting function. This is a simple algebraic quantity that controls the sensitivity of the limiter. It has a parameter that can be set to tune the sensitivity of the limiters for regions of smooth flows. The run control file variable for setting this parameter is Kl, and an example of its specification is shown below (default shown).

Kl: 1.0

A rule of thumb for this variable is that if a limiter seems to be limiting the flow field in smooth regions and causing disturbances in the smooth field, to try and increase this value. For very larger values of this variable, say greater than 20, this essentially begins to turn off the limiter completely and will result in numerical instability and eventual crashing of the code. The optimal value is often problem-dependent, but the default value is a good starting choice most of the time.

Limiters available in Stream

Option

Description

Default

venkatakrishnan

Standard Venkatakrishnan limiter

Y

barth

Barth-Jespersen limiter

N

NB

Nodal Barth-Jespersen limiter

N

none

No limiting on any equations

N

mlp

Multi-dimensional limiting process

N

mlp_pw

Multi-dimensional limiting process with pressure-weighting

N

References

[Venk1993]

V. Venkatakrishnan, “On the Accuracy of Limiters and Convergence to Steady-State Solutions,” 31st Aerospace Sciences Meeting, Reno, 1993.

[BaJe1989]

T. Barth and D. Jespersen, “The Design and Application of Upwind Schemes on Unstructured Meshes,” 27th Aerospace Sciences Meeting, Reno, 1989.

[Zhan2018] (1,2)

J. L. B. C. Fan Zhang, “Modified multi-dimensional limiting process with enhanced shock stability on unstructured grids,” Computers & Fluids, vol. 161, pp. 171-188, 2018.