Algorithms#

List of all algorithms (skeleton of each numerical method to solve)

Runge-Kutta methods#

Explicit methods#

template<typename value_t>
using ponio::runge_kutta::euler_t = explicit_runge_kutta::explicit_runge_kutta<butcher_euler<value_t>>#

Euler method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::explicit_euler_sub4_t = explicit_runge_kutta::explicit_runge_kutta<butcher_explicit_euler_sub4<value_t>>#

Explicit Euler sub4 method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk6es_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk6es<value_t>>#

RK6ES method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_118_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_118<value_t>>#

RK (11,8) method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_21_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_21<value_t>>#

RK (2,1) method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_22_midpoint_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_22_midpoint<value_t>>#

RK (2,2) mid-point method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_22_ralston_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_22_ralston<value_t>>#

RK (2,2) Ralston method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_32_best_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_32_best<value_t>>#

RK (3,2) best method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_33_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_33<value_t>>#

RK (3,3) method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_33_233e_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_33_233e<value_t>>#

RK (3,3) 233e method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_33_bogackishampine_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_33_bogackishampine<value_t>>#

RK (3,3) Bogacki-Shampine method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_33_heun_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_33_heun<value_t>>#

RK (3,3) Heun method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_33_ralston_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_33_ralston<value_t>>#

RK (3,3) Ralston method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_33_van_der_houwen_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_33_van_der_houwen<value_t>>#

RK (3,3) Van der Houwen method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_44_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_44<value_t>>#

RK (4,4) method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_44_235j_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_44_235j<value_t>>#

RK (4,4) 235j method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_44_38_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_44_38<value_t>>#

RK (4,4) 3/8 method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_44_ralston_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_44_ralston<value_t>>#

RK (4,4) Ralston method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_65_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_65<value_t>>#

RK (6,5) method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_65_236a_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_65_236a<value_t>>#

RK (6,5) 236a method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_76_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_76<value_t>>#

RK (7,6) method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_86_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_86<value_t>>#

RK (8,6) method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_nssp_21_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_nssp_21<value_t>>#

RK NSSP (2,1) method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_nssp_32_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_nssp_32<value_t>>#

RK NSSP (3,2) method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_nssp_33_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_nssp_33<value_t>>#

RK NSSP (3,3) method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_nssp_53_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_nssp_53<value_t>>#

RK NSSP (5,3) method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_spp_43_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_spp_43<value_t>>#

RK SPP (4,3) method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_ssp_22_heun_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_ssp_22_heun<value_t>>#

RK SSP (2,2) Heun method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_ssp_32_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_ssp_32<value_t>>#

RK SSP (3,2) method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_ssp_33_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_ssp_33<value_t>>#

RK SSP (3,3) method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_ssp_42_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_ssp_42<value_t>>#

RK SSP (4,2) method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_ssp_53_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_ssp_53<value_t>>#

RK SSP (5,3) method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk_ssp_54_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk_ssp_54<value_t>>#

RK SSP (5,4) method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

Embedded methods#

template<typename value_t>
using ponio::runge_kutta::rk54_6m_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk54_6m<value_t>>#

RK5(4) 6M method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk54_7m_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk54_7m<value_t>>#

RK5(4) 7M method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

template<typename value_t>
using ponio::runge_kutta::rk54_7s_t = explicit_runge_kutta::explicit_runge_kutta<butcher_rk54_7s<value_t>>#

RK5(4) 7S method.

see more on ponio

Template Parameters:

value_t – type of coefficient (doubleby default)

Lawson methods#

This Lawson methods have a underlying Runge-Kutta method, they have the same name just prefixed by l.

Lawson methods are build to solve a problem like:

\[\dot{v} = Lu + N(t,v)\]

First, we introduce the change of variable

\[u(t) = e^{-Lt}v(t)\]

which yields the equation

\[\dot{u}(t) = -Le^{-Lt}v(t) + e^{-Lt}\dot{v}(t)\]

which can be rewrite in term of \(u\) as

\[\dot{u}(t) = e^{-Lt}N(t,e^{Lt}u) = \tilde{N}(t,u)\]

We solve this equation with a classical Runge-Kutta method RK(\(s\),:math:n) with \(s\) stages and of order \(n\). We rewrite the scheme in term of the variable \(v\), which yields the following scheme

\[\begin{split}\begin{aligned} k_i &= e^{-c_i\Delta tL}N(t^n+c_i\Delta t, e^{c_i\Delta tL}\left( v^n+\sum_{j}a_{i,j}k_j \right))\\ v^{n+1} &= e^{\Delta tL}\left( v^n + \Delta t \sum_i b_i k_i \right) \end{aligned}\end{split}\]

Explicit methods#

template<typename Exp_t>
auto ponio::runge_kutta::leuler(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lexplicit_euler_sub4(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk6es(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_118(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_21(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_22_midpoint(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_22_ralston(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_32_best(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_33(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_33_233e(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_33_bogackishampine(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_33_heun(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_33_ralston(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_33_van_der_houwen(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_44(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_44_235j(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_44_38(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_44_ralston(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_65(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_65_236a(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_76(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_86(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_nssp_21(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_nssp_32(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_nssp_33(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_nssp_53(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_spp_43(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_ssp_22_heun(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_ssp_32(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_ssp_33(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_ssp_42(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_ssp_53(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk_ssp_54(Exp_t exp_, double tol = ponio::default_config::tol)#

Embedded methods#

template<typename Exp_t>
auto ponio::runge_kutta::lrk54_6m(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk54_7m(Exp_t exp_, double tol = ponio::default_config::tol)#
template<typename Exp_t>
auto ponio::runge_kutta::lrk54_7s(Exp_t exp_, double tol = ponio::default_config::tol)#

Runge-Kutta Chebyshev methods#

template<std::size_t N_stages_, typename value_t = double>
class explicit_rkc2#

define RKC2 with user defined number of stages

Template Parameters:
  • N_stages_ – number of stages

  • value_t – type of coefficients