|
Peano
|
In numerical analysis, the Runge–Kutta methods are a family of implicit and explicit iterative methods, which includes the Euler method. Unlike the Euler method, it not only takes the left and right boundaries of the interval, but can also consider points within the interval in each timestep, which increases the order of the method.
For simplicity, we first consider the initial value problem:
\[ y'(t) = f(t, y), y(t_0) = y_0 \]
where \( y \) is an unknown function of time \( t \), which we want to approximate. We now pick a step-size \( h > 0\)
By the fundamental theorem of calculus,
\[ y(t_0 + h) = y(t_0) + h \int_0^1 y'(t_0 + \theta h) d \theta \\ = y(t_0) + h \int_0^1 f(t_0 + \theta h, y(t_0 + \theta h))d\theta \]
which motivates
\[ y_1 = y_0 + h \sum_{i=1}^s b_i f(t_0 + c_i h, Y_i) \]
where we have weights \( b_1, \cdots, b_s > 0 \) and nodes \( c_1, \cdots , c_s \in [0,1] \). Then we choose the internal stages \( Y_i \approx y(t_0 + c_i h) \) by
\[ Y_i = y_0 + h \sum_{j=1}^s a_{ij} f(t_0 + c_j h, Y_j), i = 1, \cdots, s \]
If the weights satisfy \( a_{ij} = 0 \) for \( j\geq i \), then the method is explicit. In particular, \( Y_1 = y_0 \)
In our ExaHype solver, we use the Runge-Kutta method together with the Discrete Galerkin method or the Finite Difference method, where the Runge-Kutta method is used for high-order temporal discretization. Runge–Kutta time stepping requires \( n \) traversals per time step, since each of the \( n \) stages must be followed by a synchronization of the grid state (including halo/MPI exchanges) before the next stage can start.