List of exponential Runge-Kutta methods#

template<typename value_t, typename linear_t>
using ponio::runge_kutta::etd2cf3_t = exponential_runge_kutta::explicit_exp_rk_butcher<butcher_etd2cf3<value_t, linear_t>>#

ETD2CF3 method.

This method is based on the following Butcher tableau:

\[\begin{split} \begin{array}{c|ccc} 0 & 0 & 0 & 0 \\ \frac{1}{3} & \frac{\varphi_{1 2}}{3} & 0 & 0 \\ \frac{2}{3} & \frac{2 \varphi_{1 3}}{3} - \frac{4 \varphi_{2 3}}{3} & \frac{4 \varphi_{2 3}}{3} & 0 \\ \hline & \varphi_{1} - \frac{9 \varphi_{2}}{2} + 9 \varphi_{3} & 6 \varphi_{2} - 18 \varphi_{3} & - \frac{3 \varphi_{2}}{2} + 9 \varphi_{3} \end{array} \end{split}\]

Template Parameters:
  • value_t – type of coefficient (doubleby default)

  • linear_t – type of coefficient (doubleby default)

template<typename value_t, typename linear_t>
using ponio::runge_kutta::etd3rk_t = exponential_runge_kutta::explicit_exp_rk_butcher<butcher_etd3rk<value_t, linear_t>>#

ETD3RK method.

This method is based on the following Butcher tableau:

\[\begin{split} \begin{array}{c|ccc} 0 & 0 & 0 & 0 \\ \frac{1}{2} & \frac{\varphi_{1 2}}{2} & 0 & 0 \\ 1 & - \varphi_{1 3} & 2 \varphi_{1 3} & 0 \\ \hline & \varphi_{1} - 3 \varphi_{2} + 4 \varphi_{3} & 4 \varphi_{2} - 8 \varphi_{3} & - \varphi_{2} + 4 \varphi_{3} \end{array} \end{split}\]

Template Parameters:
  • value_t – type of coefficient (doubleby default)

  • linear_t – type of coefficient (doubleby default)

template<typename value_t, typename linear_t>
using ponio::runge_kutta::cox_matthews_t = exponential_runge_kutta::explicit_exp_rk_butcher<butcher_cox_matthews<value_t, linear_t>>#

Cox Matthews method.

This method is based on the following Butcher tableau:

\[\begin{split} \begin{array}{c|cccc} 0 & 0 & 0 & 0 & 0 \\ \frac{1}{2} & \frac{\varphi_{1 2}}{2} & 0 & 0 & 0 \\ \frac{1}{2} & 0 & \frac{\varphi_{1 3}}{2} & 0 & 0 \\ 1 & \frac{\varphi_{1 3} \left(\varphi_{0 3} - 1\right)}{2} & 0 & \varphi_{1 3} & 0 \\ \hline & \varphi_{1} - 3 \varphi_{2} + 4 \varphi_{3} & 2 \varphi_{2} - 4 \varphi_{3} & 2 \varphi_{2} - 4 \varphi_{3} & - \varphi_{2} + 4 \varphi_{3} \end{array} \end{split}\]

Template Parameters:
  • value_t – type of coefficient (doubleby default)

  • linear_t – type of coefficient (doubleby default)

template<typename value_t, typename linear_t>
using ponio::runge_kutta::exprk22_t = exponential_runge_kutta::explicit_exp_rk_butcher<butcher_exprk22<value_t, linear_t>>#

expRK(2,2) method

This method is based on the following Butcher tableau:

\[\begin{split} \begin{array}{c|cc} 0 & 0 & 0 \\ 1 & \varphi_{1 2} & 0 \\ \hline & \varphi_{1} - \varphi_{2} & \varphi_{2} \end{array} \end{split}\]

Template Parameters:
  • value_t – type of coefficient (doubleby default)

  • linear_t – type of coefficient (doubleby default)

template<typename value_t, typename linear_t>
using ponio::runge_kutta::hochbruck_ostermann_t = exponential_runge_kutta::explicit_exp_rk_butcher<butcher_hochbruck_ostermann<value_t, linear_t>>#

Hochbruck Ostermann method.

This method is based on the following Butcher tableau:

\[\begin{split} \begin{array}{c|ccccc} 0 & 0 & 0 & 0 & 0 & 0 \\ \frac{1}{2} & \frac{\varphi_{1 2}}{2} & 0 & 0 & 0 & 0 \\ \frac{1}{2} & \frac{\varphi_{1 3}}{2} - \varphi_{2 3} & \varphi_{2 3} & 0 & 0 & 0 \\ 1 & \varphi_{1 4} - 2 \varphi_{2 4} & \varphi_{2 4} & \varphi_{2 4} & 0 & 0 \\ \frac{1}{2} & \frac{\varphi_{1 5}}{2} - \frac{\varphi_{2 4}}{4} - \frac{3 \varphi_{2 5}}{4} + \varphi_{3 4} + \frac{\varphi_{3 5}}{2} & \frac{\varphi_{2 4}}{4} + \frac{\varphi_{2 5}}{2} - \varphi_{3 4} - \frac{\varphi_{3 5}}{2} & \frac{\varphi_{2 4}}{4} + \frac{\varphi_{2 5}}{2} - \varphi_{3 4} - \frac{\varphi_{3 5}}{2} & - \frac{\varphi_{2 4}}{4} - \frac{\varphi_{2 5}}{4} + \varphi_{3 4} + \frac{\varphi_{3 5}}{2} & 0 \\ \hline & \varphi_{1} - 3 \varphi_{2} + 4 \varphi_{3} & 0 & 0 & - \varphi_{2} + 4 \varphi_{3} & 4 \varphi_{2} - 8 \varphi_{3} \end{array} \end{split}\]

Template Parameters:
  • value_t – type of coefficient (doubleby default)

  • linear_t – type of coefficient (doubleby default)

template<typename value_t, typename linear_t>
using ponio::runge_kutta::krogstad_t = exponential_runge_kutta::explicit_exp_rk_butcher<butcher_krogstad<value_t, linear_t>>#

Krogstad method.

This method is based on the following Butcher tableau:

\[\begin{split} \begin{array}{c|cccc} 0 & 0 & 0 & 0 & 0 \\ \frac{1}{2} & \frac{\varphi_{1 2}}{2} & 0 & 0 & 0 \\ \frac{1}{2} & \frac{\varphi_{1 3}}{2} - \varphi_{2 3} & \varphi_{2 3} & 0 & 0 \\ 1 & \varphi_{1 4} - 2 \varphi_{2 4} & 0 & 2 \varphi_{2 4} & 0 \\ \hline & \varphi_{1} - 3 \varphi_{2} + 4 \varphi_{3} & 2 \varphi_{2} - 4 \varphi_{3} & 2 \varphi_{2} - 4 \varphi_{3} & - \varphi_{2} + 4 \varphi_{3} \end{array} \end{split}\]

Template Parameters:
  • value_t – type of coefficient (doubleby default)

  • linear_t – type of coefficient (doubleby default)

template<typename value_t, typename linear_t>
using ponio::runge_kutta::strehmel_weiner_t = exponential_runge_kutta::explicit_exp_rk_butcher<butcher_strehmel_weiner<value_t, linear_t>>#

Strehmel Weiner method.

This method is based on the following Butcher tableau:

\[\begin{split} \begin{array}{c|cccc} 0 & 0 & 0 & 0 & 0 \\ \frac{1}{2} & \frac{\varphi_{1 2}}{2} & 0 & 0 & 0 \\ \frac{1}{2} & \frac{\varphi_{1 3}}{2} - \frac{\varphi_{2 3}}{2} & \frac{\varphi_{2 3}}{2} & 0 & 0 \\ 1 & \varphi_{1 4} - 2 \varphi_{2 4} & - 2 \varphi_{2 4} & 4 \varphi_{2 4} & 0 \\ \hline & \varphi_{1} - 3 \varphi_{2} + 4 \varphi_{3} & 0 & 4 \varphi_{2} - 8 \varphi_{3} & - \varphi_{2} + 4 \varphi_{3} \end{array} \end{split}\]

Template Parameters:
  • value_t – type of coefficient (doubleby default)

  • linear_t – type of coefficient (doubleby default)