title: Shock-capturing method
text: # Shock-capturing method
  
  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.
  
  ## Method
  
  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
  
  ${\frac {\partial {\mathbf {U} }}{\partial t}}+{\frac {\partial {\mathbf {F} }}{\partial x}}+{\frac {\partial {\mathbf {G} }}{\partial y}}+{\frac {\partial {\mathbf {H} }}{\partial z}}=0$
  
  where the vectors U, F, G, and H are given by
  
  $\mathbf {U} ={\begin{bmatrix}\rho \\\rho u\\\rho v\\\rho w\\\rho e_{t}\\\end{bmatrix}},\quad \mathbf {F} ={\begin{bmatrix}\rho u\\\rho u^{2}+p\\\rho uv\\\rho uw\\(\rho e_{t}+p)u\\\end{bmatrix}},\quad \mathbf {G} ={\begin{bmatrix}\rho v\\\rho vu\\\rho v^{2}+p\\\rho vw\\(\rho e_{t}+p)v\\\end{bmatrix}},\quad \mathbf {H} ={\begin{bmatrix}\rho w\\\rho wu\\\rho wv\\\rho w^{2}+p\\(\rho e_{t}+p)w\\\end{bmatrix}}$
  
  where $e_{t}$ is the total energy (internal energy + kinetic energy + potential energy) per unit mass. That is
  
  $e_{t}=e+{\frac {u^{2}+v^{2}+w^{2}}{2}}+gz$
  
  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.
  
  