Shock capturing method

From HandWiki
Revision as of 21:24, 8 February 2024 by JOpenQuest (talk | contribs) (over-write)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

In computational fluid dynamics, shock-capturing methods are a class of techniques for computing inviscid flows with shock waves. The computation of flow containing shock waves is an extremely difficult task because such flows result in sharp, discontinuous changes in flow variables such as pressure, temperature, density, and velocity across the shock.


In shock-capturing methods, the governing equations of inviscid flows (i.e. Euler equations) are cast in conservation form and any shock waves or discontinuities are computed as part of the solution. Here, no special treatment is employed to take care of the shocks themselves, which is in contrast to the shock-fitting method, where shock waves are explicitly introduced in the solution using appropriate shock relations (Rankine–Hugoniot relations). The shock waves predicted by shock-capturing methods are generally not sharp and may be smeared over several grid elements. Also, classical shock-capturing methods have the disadvantage that unphysical oscillations (Gibbs phenomenon) may develop near strong shocks.

Euler equations

The Euler equations are the governing equations for inviscid flow. To implement shock-capturing methods, the conservation form of the Euler equations are used. For a flow without external heat transfer and work transfer (isoenergetic flow), the conservation form of the Euler equation in Cartesian coordinate system can be written as

[math]\displaystyle{ \frac{\partial {\bold U}}{\partial t} + \frac{\partial {\bold F}}{\partial x} + \frac{\partial {\bold G}}{\partial y} + \frac{\partial {\bold H}}{\partial z} = 0 }[/math]

where the vectors U, F, G, and H are given by

[math]\displaystyle{ {\bold U} = \left[ \begin{array}{c} \rho \\ \rho u \\ \rho v \\ \rho w \\ \rho e_t \\ \end{array} \right] \quad {\bold F} = \left[ \begin{array}{c} \rho u\\ \rho u^2 + p \\ \rho uv \\ \rho uw \\ (\rho e_t + p)u \\ \end{array} \right] \quad {\bold G} = \left[ \begin{array}{c} \rho v\\ \rho vu \\ \rho v^2 + p \\ \rho vw \\ (\rho e_t + p)v \\ \end{array} \right] \quad {\bold H} = \left[ \begin{array}{c} \rho w\\ \rho wu \\ \rho wv \\ \rho w^2 + p \\ (\rho e_t + p)w \\ \end{array} \right] \qquad }[/math]

where [math]\displaystyle{ e_t }[/math] is the total energy (internal energy + kinetic energy + potential energy) per unit mass. That is

[math]\displaystyle{ e_t = e + \frac{u^2 + v^2 + w^2}{2} + gz }[/math]

The Euler equations may be integrated with any of the shock-capturing methods available to obtain the solution.

Classical and modern shock capturing methods

From a historical point of view, shock-capturing methods can be classified into two general categories: classical methods and modern shock capturing methods (also called high-resolution schemes). Modern shock-capturing methods are generally upwind biased in contrast to classical symmetric or central discretizations. Upwind-biased differencing schemes attempt to discretize hyperbolic partial differential equations by using differencing based on the direction of the flow. On the other hand, symmetric or central schemes do not consider any information about the direction of wave propagation.

Regardless of the shock-capturing scheme used, a stable calculation in the presence of shock waves requires a certain amount of numerical dissipation, in order to avoid the formation of unphysical numerical oscillations. In the case of classical shock-capturing methods, numerical dissipation terms are usually linear and the same amount is uniformly applied at all grid points. Classical shock-capturing methods only exhibit accurate results in the case of smooth and weak shock solutions, but when strong shock waves are present in the solution, non-linear instabilities and oscillations may arise across discontinuities. Modern shock-capturing methods usually employ nonlinear numerical dissipation, where a feedback mechanism adjusts the amount of artificial dissipation added in accord with the features in the solution. Ideally, artificial numerical dissipation needs to be added only in the vicinity of shocks or other sharp features, and regions of smooth flow must be left unmodified. These schemes have proven to be stable and accurate even for problems containing strong shock waves.

Some of the well-known classical shock-capturing methods include the MacCormack method (uses a discretization scheme for the numerical solution of hyperbolic partial differential equations), Lax–Wendroff method (based on finite differences, uses a numerical method for the solution of hyperbolic partial differential equations), and Beam–Warming method. Examples of modern shock-capturing schemes include higher-order total variation diminishing (TVD) schemes first proposed by Harten, flux-corrected transport scheme introduced by Boris and Book, Monotonic Upstream-centered Schemes for Conservation Laws (MUSCL) based on Godunov approach and introduced by van Leer, various Essentially Non-Oscillatory schemes (ENO) proposed by Harten et al., and the Piecewise Parabolic Method (PPM) proposed by Colella and Woodward. Another important class of high-resolution schemes belongs to the approximate Riemann solvers proposed by Roe and by Osher. The schemes proposed by Jameson and Baker, where linear numerical dissipation terms depend on nonlinear switch functions, fall in between the classical and modern shock-capturing methods.



  • Anderson, J. D., "Modern Compressible Flow with Historical Perspective", McGraw-Hill (2004).
  • Hirsch, C., "Numerical Computation of Internal and External Flows", Vol. II, 2nd ed., Butterworth-Heinemann (2007).
  • Laney, C. B., "Computational Gasdynamics", Cambridge Univ. Press 1998).
  • LeVeque, R. J., "Numerical Methods for Conservation Laws", Birkhauser-Verlag (1992).
  • Tannehill, J. C., Anderson, D. A., and Pletcher, R. H., "Computational Fluid Dynamics and Heat Transfer", 2nd ed., Taylor & Francis (1997).
  • Toro, E. F., "Riemann Solvers and Numerical Methods for Fluid Dynamics", 2nd ed., Springer-Verlag (1999).

Technical papers

  • Boris, J. P. and Book, D. L., "Flux-Corrected Transport III. Minimal Error FCT Algorithms", J. Comput. Phys., 20, 397–431 (1976).
  • Colella, P. and Woodward, P., "The Piecewise parabolic Method (PPM) for Gasdynamical Simulations", J. Comput. Phys., 54, 174–201 (1984).
  • Godunov, S. K., "A Difference Scheme for Numerical Computation of Discontinuous Solution of Hyperbolic Equations", Math. Sbornik, 47, 271–306 (1959).
  • Harten, A., "High Resolution Schemes for Hyperbolic Conservation Laws", J. Comput. Phys., 49, 357–293 (1983).
  • Harten, A., Engquist, B., Osher, S., and Chakravarthy, S. R., "Uniformly High Order Accurate Essentially Non-Oscillatory Schemes III", J. Comput. Phys., 71, 231–303 (1987).
  • Jameson, A. and Baker, T., "Solution of the Euler Equations for Complex Configurations", AIAA Paper, 83–1929 (1983).
  • MacCormack, R. W., "The Effect of Viscosity in Hypervelocity Impact Cratering", AIAA Paper, 69–354 (1969).
  • Roe, P. L., "Approximate Riemann Solvers, Parameter Vectors and Difference Schemes", J. Comput. Phys. 43, 357–372 (1981).
  • Shu, C.-W., Osher, S., "Efficient Implementation of Essentially Non-Oscillatory Shock Capturing Schemes", J. Comput. Phys., 77, 439–471 (1988).
  • van Leer, B., "Towards the Ultimate Conservative Difference Scheme V; A Second-order Sequel to Godunov's Sequel", J. Comput. Phys., 32, 101–136, (1979).