Godunov's scheme

From HandWiki
Revision as of 20:33, 6 February 2024 by Nautica (talk | contribs) (link)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

In numerical analysis and computational fluid dynamics, Godunov's scheme is a conservative numerical scheme, suggested by Sergei Godunov in 1959,[1] for solving partial differential equations. One can think of this method as a conservative finite volume method which solves exact, or approximate Riemann problems at each inter-cell boundary. In its basic form, Godunov's method is first order accurate in both space and time, yet can be used as a base scheme for developing higher-order methods.

Basic scheme

Following the classical finite volume method framework, we seek to track a finite set of discrete unknowns, [math]\displaystyle{ Q^{n}_i = \frac{1}{\Delta x} \int_{x_{i-1/2}} ^ { x_{i+1/2} } q(t^n, x)\, dx }[/math] where the [math]\displaystyle{ x_{i-1/2} = x_{\text{low}} + \left( i - 1/2 \right) \Delta x }[/math] and [math]\displaystyle{ t^n = n \Delta t }[/math] form a discrete set of points for the hyperbolic problem: [math]\displaystyle{ q_t + ( f( q ) )_x = 0, }[/math] where the indices [math]\displaystyle{ t }[/math] and [math]\displaystyle{ x }[/math] indicate the derivatives in time and space, respectively. If we integrate the hyperbolic problem over a control volume [math]\displaystyle{ [x_{i-1/2}, x_{i+1/2}], }[/math] we obtain a method of lines (MOL) formulation for the spatial cell averages: [math]\displaystyle{ \frac{\partial}{\partial t} Q_i( t ) = -\frac{1}{\Delta x} \left( f( q( t, x_{i+1/2} ) ) - f( q( t, x_{i-1/2} ) ) \right), }[/math] which is a classical description of the first order, upwinded finite volume method.[2]

Exact time integration of the above formula from time [math]\displaystyle{ t = t^n }[/math] to time [math]\displaystyle{ t = t^{n+1} }[/math] yields the exact update formula: [math]\displaystyle{ Q^{n+1}_i = Q^n_i - \frac{1}{\Delta x } \int_{ t^n }^{t^{n+1} } \left( f( q( t, x_{i+1/2} ) ) - f( q( t, x_{i-1/2} ) ) \right)\, dt. }[/math]

Godunov's method replaces the time integral of each [math]\displaystyle{ \int_{t^n}^{t^{n+1} } f( q( t, x_{i-1/2} ) )\, dt }[/math] with a forward Euler method which yields a fully discrete update formula for each of the unknowns [math]\displaystyle{ Q^n_i }[/math]. That is, we approximate the integrals with [math]\displaystyle{ \int_{t^n}^{t^{n+1} } f( q( t, x_{i-1/2} ) )\, dt \approx \Delta t f^\downarrow\left( Q^n_{i-1}, Q^n_i \right), }[/math] where [math]\displaystyle{ f^\downarrow\left( q_l, q_r \right) }[/math] is an approximation to the exact solution of the Riemann problem. For consistency, one assumes that [math]\displaystyle{ f^\downarrow( q_l , q_r ) = f( q_l ) \quad \text{ if } \quad q_l = q_r, }[/math] and that [math]\displaystyle{ f^\downarrow }[/math] is increasing in the first argument, and decreasing in the second argument. For scalar problems where [math]\displaystyle{ f'( q ) \gt 0 }[/math], one can use the simple Upwind scheme, which defines [math]\displaystyle{ f^\downarrow( q_l, q_r ) = f( q_l ) }[/math].

The full Godunov scheme requires the definition of an approximate, or an exact Riemann solver, but in its most basic form, is given by: [math]\displaystyle{ Q^{n+1}_i = Q^n_i - \lambda \left( \hat{f}^n_{i+1/2} - \hat{f}^n_{i-1/2} \right), \quad \lambda = \frac{\Delta t}{\Delta x}, \quad \hat{f}^n_{i-1/2} = f^\downarrow\left( Q^n_{i-1}, Q^n_i \right) }[/math]

Linear problem

In the case of a linear problem, where [math]\displaystyle{ f(q) = a q }[/math], and without loss of generality, we'll assume that [math]\displaystyle{ a \gt 0 }[/math], the upwinded Godunov method yields: [math]\displaystyle{ Q^{n+1}_i = Q^n_i - \nu \left( Q^{n}_i - Q^n_{i-1} \right), \quad \nu = a \frac{\Delta t } {\Delta x }, }[/math] which yields the classical first-order, upwinded Finite Volume scheme whose stability requires [math]\displaystyle{ \nu = \left| a \frac{\Delta t}{\Delta x} \right| \leq 1 }[/math].

Three-step algorithm

Following Hirsch,[3] the scheme involves three distinct steps to obtain the solution at [math]\displaystyle{ t = (n+1) \Delta t \, }[/math] from the known solution at [math]\displaystyle{ {t = n \Delta t} \, }[/math], as follows:

  1. Define piecewise constant approximation of the solution at [math]\displaystyle{ {t = (n+1) \Delta t} \, }[/math]. Since the piecewise constant approximation is an average of the solution over the cell of size [math]\displaystyle{ {\Delta x} \, }[/math], the spatial error is of order [math]\displaystyle{ {\Delta x} \, }[/math], and hence the resulting scheme will be first-order accurate in space. Note that this approximation corresponds to a finite volume method representation whereby the discrete values represent averages of the state variables over the cells. Exact relations for the averaged cell values can be obtained from the integral conservation laws.
  2. Obtain the solution for the local Riemann problem at the cell interfaces. This is the only physical step of the whole procedure. The discontinuities at the interfaces are resolved in a superposition of waves satisfying locally the conservation equations. The original Godunov method is based upon the exact solution of the Riemann problems. However, approximate solutions can be applied as an alternative.
  3. Average the state variables after a time interval [math]\displaystyle{ {\Delta t} \, }[/math]. The state variables obtained after Step 2 are averaged over each cell defining a new piecewise constant approximation resulting from the wave propagation during the time interval [math]\displaystyle{ {\Delta t} \, }[/math]. To be consistent, the time interval [math]\displaystyle{ {\Delta t} \, }[/math] should be limited such that the waves emanating from an interface do not interact with waves created at the adjacent interfaces. Otherwise the situation inside a cell would be influenced by interacting Riemann problems. This leads to the CFL condition [math]\displaystyle{ | a_\max | \Delta t \lt \Delta x/2 \, }[/math] where [math]\displaystyle{ | a_\max | \, }[/math] is the maximum wave speed obtained from the cell eigenvalue(s) of the local Jacobian matrix.

The first and third steps are solely of a numerical nature and can be considered as a projection stage, independent of the second, physical step, the evolution stage. Therefore, they can be modified without influencing the physical input, for instance by replacing the piecewise constant approximation by a piecewise linear variation inside each cell, leading to the definition of second-order space-accurate schemes, such as the MUSCL scheme.

See also


References

  1. Godunov, S. K. (1959). "Разностный метод численного расчета разрывных решений уравнений гидродинамики". Mat. Sbornik 47: 271–306.  Translated US Joint Publ. Res. Service, JPRS 7226, 1969.
  2. Leveque, Randy J. (2002). Finite Volume Methods for Hyperbolic Problems. Cambridge University Press. ISBN 0-521-81087-6. 
  3. Hirsch, C. (1990). Numerical Computation of Internal and External Flows. 2. Wiley. ISBN 0-471-92452-0. 

Further reading