List of additive Runge-Kutta methods#

template<typename value_t, typename linear_algebra_t = void, typename ...Args>
auto ponio::runge_kutta::imex_ars111lpum_t = []( Args... args ){returnponio::runge_kutta::additive_runge_kutta::make_ark<       butcher_imex_ars111lpum_dirk<value_t>,       butcher_imex_ars111lpum_erk<value_t>,1,"imex_ars111lpum",linear_algebra_t>( args... );}#

IMEX ARS(1,1,1)-LPUM method.

This method is based on the following pair of Butcher tableaus, with explicit part:

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

and implicit part:

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

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

  • linear_algebra_t – type that provides linear algebra if it is undefined for state_t (void by default)

  • Args – optional arguments to build linear_algebra_t object

template<typename value_t, typename linear_algebra_t = void, typename ...Args>
auto ponio::runge_kutta::imexrk23se_t = []( Args... args ){returnponio::runge_kutta::additive_runge_kutta::make_ark<       butcher_imexrk23se_dirk<value_t>,       butcher_imexrk23se_erk<value_t>,2,"imexrk23se",linear_algebra_t>( args... );}#

IMEX-RK23SE method.

This method is based on the following pair of Butcher tableaus, with explicit part:

\[\begin{split} \begin{array}{c|ccc} 0 & 0 & 0 & 0 \\ 1.001189204627373 & 1.001189204627373 & 0 & 0 \\ 0.838063598174237 & 0.253545544784129 & 0.584518053390108 & 0 \\ \hline & 0.480520005477614 & 0.39627577801286 & 0.123204216509527 \end{array} \end{split}\]

and implicit part:

\[\begin{split} \begin{array}{c|ccc} 0.743134194610956 & 0.743134194610956 & 0 & 0 \\ -0.898043878577327 & -1.641178073188283 & 0.743134194610956 & 0 \\ 4.048418175438741 & 1.132080119545815 & 2.17320386128197 & 0.743134194610956 \\ \hline & 0.480520005477614 & 0.39627577801286 & 0.123204216509527 \end{array} \end{split}\]

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

  • linear_algebra_t – type that provides linear algebra if it is undefined for state_t (void by default)

  • Args – optional arguments to build linear_algebra_t object

template<typename value_t, typename linear_algebra_t = void, typename ...Args>
auto ponio::runge_kutta::imex_rk23ssp_t = []( Args... args ){returnponio::runge_kutta::additive_runge_kutta::make_ark<       butcher_imex_rk23ssp_dirk<value_t>,       butcher_imex_rk23ssp_erk<value_t>,2,"imex_rk23ssp",linear_algebra_t>( args... );}#

IMEX RK23SSP method.

This method is based on the following pair of Butcher tableaus, with explicit part:

\[\begin{split} \begin{array}{c|ccc} 0 & 0 & 0 & 0 \\ \frac{1}{2} & \frac{1}{2} & 0 & 0 \\ 1 & \frac{1}{2} & \frac{1}{2} & 0 \\ \hline & \frac{1}{3} & \frac{1}{3} & \frac{1}{3} \end{array} \end{split}\]

and implicit part:

\[\begin{split} \begin{array}{c|ccc} 0.204976822001215 & 0.204976822001215 & 0 & 0 \\ 0.68691577692167 & 0.481938954920455 & 0.204976822001215 & 0 \\ 0.608107401077115 & 0.250998127128454 & 0.152132451947445 & 0.204976822001215 \\ \hline & \frac{1}{3} & \frac{1}{3} & \frac{1}{3} \end{array} \end{split}\]

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

  • linear_algebra_t – type that provides linear algebra if it is undefined for state_t (void by default)

  • Args – optional arguments to build linear_algebra_t object

template<typename value_t, typename linear_algebra_t = void, typename ...Args>
auto ponio::runge_kutta::imex_rk33_spi2_t = []( Args... args ){returnponio::runge_kutta::additive_runge_kutta::make_ark<       butcher_imex_rk33_spi2_dirk<value_t>,       butcher_imex_rk33_spi2_erk<value_t>,3,"imex_rk33_spi2",linear_algebra_t>( args... );}#

IMEX RK33 Spi/2 method.

This method is based on the following pair of Butcher tableaus, with explicit part:

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

and implicit part:

\[\begin{split} \begin{array}{c|ccc} 0.7886866510998523 & 0.7886866510998523 & 0 & 0 \\ \frac{1}{3} & -0.455330285215865 & 0.788663618549199 & 0 \\ 1 & 1.3659908556476 & -0.365990855647596 & 0 \\ \hline & 0 & \frac{3}{4} & \frac{1}{4} \end{array} \end{split}\]

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

  • linear_algebra_t – type that provides linear algebra if it is undefined for state_t (void by default)

  • Args – optional arguments to build linear_algebra_t object

template<typename value_t, typename linear_algebra_t = void, typename ...Args>
auto ponio::runge_kutta::imex_rk33_spi4_t = []( Args... args ){returnponio::runge_kutta::additive_runge_kutta::make_ark<       butcher_imex_rk33_spi4_dirk<value_t>,       butcher_imex_rk33_spi4_erk<value_t>,3,"imex_rk33_spi4",linear_algebra_t>( args... );}#

IMEX RK33 Spi/4 method.

This method is based on the following pair of Butcher tableaus, with explicit part:

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

and implicit part:

\[\begin{split} \begin{array}{c|ccc} 0.7886866510998523 & 0.7886866510998523 & 0 & 0 \\ \frac{1}{3} & -0.455389875547576 & 0.788723208880909 & 0 \\ 1 & 1.36616962664273 & -0.366169626642726 & 0 \\ \hline & 0 & \frac{3}{4} & \frac{1}{4} \end{array} \end{split}\]

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

  • linear_algebra_t – type that provides linear algebra if it is undefined for state_t (void by default)

  • Args – optional arguments to build linear_algebra_t object

template<typename value_t, typename linear_algebra_t = void, typename ...Args>
auto ponio::runge_kutta::imex_rk33_lambda_t = []( Args... args ){returnponio::runge_kutta::additive_runge_kutta::make_ark<       butcher_imex_rk33_lambda_dirk<value_t>,       butcher_imex_rk33_lambda_erk<value_t>,3,"imex_rk33_lambda",linear_algebra_t>( args... );}#

IMEX RK33 lambda method.

This method is based on the following pair of Butcher tableaus, with explicit part:

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

and implicit part:

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

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

  • linear_algebra_t – type that provides linear algebra if it is undefined for state_t (void by default)

  • Args – optional arguments to build linear_algebra_t object

template<typename value_t, typename linear_algebra_t = void, typename ...Args>
auto ponio::runge_kutta::imex_rk36_se_t = []( Args... args ){returnponio::runge_kutta::additive_runge_kutta::make_ark<       butcher_imex_rk36_se_dirk<value_t>,       butcher_imex_rk36_se_erk<value_t>,0,"imex_rk36_se",linear_algebra_t>( args... );}#

IMEX RK36 SE method.

This method is based on the following pair of Butcher tableaus, with explicit part:

\[\begin{split} \begin{array}{c|cccccc} 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ \frac{83}{242} & \frac{83}{242} & 0 & 0 & 0 & 0 & 0 \\ \frac{1537}{4715} & \frac{249}{15377} & \frac{307}{991} & 0 & 0 & 0 & 0 \\ \frac{2171}{2565} & - \frac{239}{1758} & \frac{1080}{1687} & \frac{737}{2154} & 0 & 0 & 0 \\ \frac{846}{683} & - \frac{220}{5231} & \frac{524}{793} & - \frac{1579}{4141} & \frac{810}{809} & 0 & 0 \\ \frac{667}{602} & \frac{701}{7073} & - \frac{861}{1844} & \frac{1487}{1443} & \frac{809}{1433} & - \frac{135}{1132} & 0 \\ \hline & - \frac{181}{5045} & \frac{3288}{4885} & \frac{247}{1657} & \frac{231}{1684} & \frac{513}{3415} & - \frac{238}{3231} \end{array} \end{split}\]

and implicit part:

\[\begin{split} \begin{array}{c|cccccc} \frac{1247}{2772} & \frac{1247}{2772} & 0 & 0 & 0 & 0 & 0 \\ \frac{885}{5722} & - \frac{405}{1372} & \frac{1247}{2772} & 0 & 0 & 0 & 0 \\ \frac{166}{129} & \frac{1715}{1951} & - \frac{784}{18635} & \frac{1247}{2772} & 0 & 0 & 0 \\ \frac{1039}{866} & \frac{651}{866} & - \frac{346}{1555} & \frac{4367}{19788} & \frac{1247}{2772} & 0 & 0 \\ \frac{943}{542} & - \frac{59}{1491} & \frac{947}{1201} & \frac{235}{343} & - \frac{288}{1999} & \frac{1247}{2772} & 0 \\ \frac{1159}{415} & \frac{635}{1659} & - \frac{163}{829} & \frac{1027}{1136} & \frac{1103}{1620} & \frac{565}{988} & \frac{1247}{2772} \\ \hline & - \frac{181}{5045} & \frac{3288}{4885} & \frac{247}{1657} & \frac{231}{1684} & \frac{513}{3415} & - \frac{238}{3231} \end{array} \end{split}\]

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

  • linear_algebra_t – type that provides linear algebra if it is undefined for state_t (void by default)

  • Args – optional arguments to build linear_algebra_t object

template<typename value_t, typename linear_algebra_t = void, typename ...Args>
auto ponio::runge_kutta::imex_rk36_spi2_t = []( Args... args ){returnponio::runge_kutta::additive_runge_kutta::make_ark<       butcher_imex_rk36_spi2_dirk<value_t>,       butcher_imex_rk36_spi2_erk<value_t>,3,"imex_rk36_spi2",linear_algebra_t>( args... );}#

IMEX RK36 Spi2 method.

This method is based on the following pair of Butcher tableaus, with explicit part:

\[\begin{split} \begin{array}{c|cccccc} 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ \frac{243}{1945} & \frac{243}{1945} & 0 & 0 & 0 & 0 & 0 \\ \frac{1231}{1834} & - \frac{2988}{3461} & \frac{422}{275} & 0 & 0 & 0 & 0 \\ - \frac{223}{5417} & \frac{1434}{2177} & - \frac{1522}{2231} & - \frac{71}{4019} & 0 & 0 & 0 \\ \frac{673}{364} & - \frac{817}{10401} & - \frac{768}{1843} & \frac{631}{680} & \frac{2113}{1492} & 0 & 0 \\ \frac{1652}{1245} & \frac{540}{2599} & \frac{859}{915} & \frac{1235}{1813} & - \frac{1912}{7025} & - \frac{1762}{7705} & 0 \\ \hline & \frac{134}{143} & - \frac{413}{3097} & \frac{830}{1311} & - \frac{430}{847} & - \frac{427}{9602} & \frac{85}{737} \end{array} \end{split}\]

and implicit part:

\[\begin{split} \begin{array}{c|cccccc} \frac{395}{949} & \frac{395}{949} & 0 & 0 & 0 & 0 & 0 \\ \frac{452}{977} & \frac{1527}{32900} & \frac{395}{949} & 0 & 0 & 0 & 0 \\ \frac{853}{1622} & \frac{210}{5191} & \frac{165}{2384} & \frac{395}{949} & 0 & 0 & 0 \\ \frac{1168}{1909} & - \frac{499}{1637} & \frac{1817}{5159} & \frac{433}{2921} & \frac{395}{949} & 0 & 0 \\ \frac{2325}{578} & \frac{2015}{1298} & \frac{1015}{1192} & \frac{1791}{1630} & \frac{251}{2423} & \frac{395}{949} & 0 \\ \frac{2473}{869} & \frac{636}{575} & \frac{139}{141} & \frac{2331}{2332} & - \frac{103}{199} & - \frac{283}{1961} & \frac{395}{949} \\ \hline & \frac{134}{143} & - \frac{413}{3097} & \frac{830}{1311} & - \frac{430}{847} & - \frac{427}{9602} & \frac{85}{737} \end{array} \end{split}\]

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

  • linear_algebra_t – type that provides linear algebra if it is undefined for state_t (void by default)

  • Args – optional arguments to build linear_algebra_t object

template<typename value_t, typename linear_algebra_t = void, typename ...Args>
auto ponio::runge_kutta::imex_rk48_se_t = []( Args... args ){returnponio::runge_kutta::additive_runge_kutta::make_ark<       butcher_imex_rk48_se_dirk<value_t>,       butcher_imex_rk48_se_erk<value_t>,0,"imex_rk48_se",linear_algebra_t>( args... );}#

IMEX RK48 SE method.

This method is based on the following pair of Butcher tableaus, with explicit part:

\[\begin{split} \begin{array}{c|cccccccc} 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ \frac{326}{1379} & \frac{326}{1379} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ \frac{1749}{7034} & - \frac{1450}{19477} & \frac{1031}{3191} & 0 & 0 & 0 & 0 & 0 & 0 \\ \frac{1966}{2349} & \frac{128}{15375} & - \frac{69}{1555} & \frac{873}{1000} & 0 & 0 & 0 & 0 & 0 \\ \frac{792}{571} & \frac{377}{7459} & \frac{959}{1044} & - \frac{119}{10006} & \frac{943}{2194} & 0 & 0 & 0 & 0 \\ \frac{1123}{1129} & \frac{39}{10744} & \frac{181}{216294} & \frac{254}{1269} & \frac{573}{832} & \frac{179}{1766} & 0 & 0 & 0 \\ \frac{1729}{2381} & \frac{113}{5084} & \frac{902}{2137} & \frac{127}{6960} & \frac{57}{7948} & \frac{713}{10786} & \frac{492}{2585} & 0 & 0 \\ \frac{561}{397} & - \frac{372}{3299} & \frac{195}{8234} & \frac{581}{1495} & \frac{569}{622} & \frac{207}{2612} & \frac{169}{2983} & \frac{255}{4057} & 0 \\ \hline & \frac{43}{142610} & \frac{485}{3662} & \frac{849}{1915} & \frac{502}{1401} & - \frac{73}{2952} & \frac{318}{3289} & - \frac{339}{41053} & \frac{47}{24734} \end{array} \end{split}\]

and implicit part:

\[\begin{split} \begin{array}{c|cccccccc} \frac{1095}{3943} & \frac{1095}{3943} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ \frac{200}{847} & - \frac{1159}{27874} & \frac{1095}{3943} & 0 & 0 & 0 & 0 & 0 & 0 \\ \frac{142}{571} & \frac{91}{1265} & - \frac{116}{1149} & \frac{1095}{3943} & 0 & 0 & 0 & 0 & 0 \\ \frac{763}{911} & - \frac{2538}{5135} & - \frac{283}{674} & \frac{1897}{1287} & \frac{1095}{3943} & 0 & 0 & 0 & 0 \\ \frac{694}{501} & \frac{3545}{2933} & \frac{1243}{331} & - \frac{859}{554} & - \frac{196}{85} & \frac{1095}{3943} & 0 & 0 & 0 \\ \frac{5197}{5196} & \frac{2729}{1518} & \frac{1471}{425} & - \frac{1100}{317} & - \frac{3138}{2975} & - \frac{77}{6619} & \frac{1095}{3943} & 0 & 0 \\ \frac{766}{953} & \frac{125}{3524} & - \frac{1151}{4318} & \frac{238}{369} & - \frac{637}{792} & - \frac{971}{680} & \frac{1341}{572} & \frac{1095}{3943} & 0 \\ \frac{8612}{6615} & \frac{681}{191} & \frac{2337}{281} & - \frac{3396}{409} & - \frac{1122}{523} & \frac{2521}{872} & - \frac{4265}{788} & \frac{4247}{2011} & \frac{1095}{3943} \\ \hline & \frac{43}{142610} & \frac{485}{3662} & \frac{849}{1915} & \frac{502}{1401} & - \frac{73}{2952} & \frac{318}{3289} & - \frac{339}{41053} & \frac{47}{24734} \end{array} \end{split}\]

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

  • linear_algebra_t – type that provides linear algebra if it is undefined for state_t (void by default)

  • Args – optional arguments to build linear_algebra_t object

template<typename value_t, typename linear_algebra_t = void, typename ...Args>
auto ponio::runge_kutta::imex_rk48_ssp_t = []( Args... args ){returnponio::runge_kutta::additive_runge_kutta::make_ark<       butcher_imex_rk48_ssp_dirk<value_t>,       butcher_imex_rk48_ssp_erk<value_t>,0,"imex_rk48_ssp",linear_algebra_t>( args... );}#

IMEX RK48 SSP method.

This method is based on the following pair of Butcher tableaus, with explicit part:

\[\begin{split} \begin{array}{c|cccccccc} 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ \frac{641}{1353} & 0 & \frac{966}{2039} & 0 & 0 & 0 & 0 & 0 & 0 \\ \frac{275}{588} & 0 & \frac{199}{5291} & \frac{735}{1709} & 0 & 0 & 0 & 0 & 0 \\ \frac{1268}{703} & 0 & \frac{306}{4373} & \frac{533}{1060} & \frac{773}{628} & 0 & 0 & 0 & 0 \\ \frac{521}{570} & 0 & \frac{61}{10399} & \frac{552}{8267} & \frac{881}{1054} & \frac{52}{9395} & 0 & 0 & 0 \\ \frac{799}{171} & \frac{184}{2869} & \frac{141}{3059} & \frac{826}{1929} & \frac{1567}{757} & \frac{1754}{977} & \frac{161}{599} & 0 & 0 \\ \frac{879}{1063} & 0 & \frac{27}{359} & \frac{227}{2338} & \frac{53}{557} & \frac{569}{4644} & \frac{859}{1966} & 0 & 0 \\ \hline & 0 & \frac{277}{1720} & \frac{385}{1314} & \frac{587}{1885} & \frac{31}{18247} & \frac{665}{2906} & 0 & \frac{23}{5731} \end{array} \end{split}\]

and implicit part:

\[\begin{split} \begin{array}{c|cccccccc} \frac{1026}{3919} & \frac{1026}{3919} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & - \frac{1148}{4385} & \frac{1026}{3919} & 0 & 0 & 0 & 0 & 0 & 0 \\ \frac{641}{1353} & - \frac{1165}{2683} & \frac{904}{1399} & \frac{1026}{3919} & 0 & 0 & 0 & 0 & 0 \\ \frac{275}{588} & \frac{1480}{2439} & - \frac{1469}{4070} & - \frac{121}{3026} & \frac{1026}{3919} & 0 & 0 & 0 & 0 \\ \frac{1268}{703} & - \frac{2788}{397} & \frac{2069}{294} & \frac{722}{339} & - \frac{411}{682} & \frac{1026}{3919} & 0 & 0 & 0 \\ \frac{521}{570} & - \frac{165}{12667} & \frac{105}{671} & \frac{133}{500} & \frac{1307}{5430} & \frac{55}{26474} & \frac{1026}{3919} & 0 & 0 \\ \frac{3127}{657} & \frac{837}{1003} & \frac{629}{1976} & \frac{1195}{149} & - \frac{5209}{618} & \frac{1045}{1459} & \frac{2767}{911} & \frac{1026}{3919} & 0 \\ \frac{879}{1063} & - \frac{752}{647} & - \frac{771}{2338} & \frac{3197}{469} & \frac{2313}{586} & - \frac{2267}{2341} & - \frac{2128}{275} & 0 & \frac{1026}{3919} \\ \hline & 0 & \frac{277}{1720} & \frac{385}{1314} & \frac{587}{1885} & \frac{31}{18247} & \frac{665}{2906} & 0 & \frac{23}{5731} \end{array} \end{split}\]

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

  • linear_algebra_t – type that provides linear algebra if it is undefined for state_t (void by default)

  • Args – optional arguments to build linear_algebra_t object

template<typename value_t, typename linear_algebra_t = void, typename ...Args>
auto ponio::runge_kutta::imex_ssp1111lpm_t = []( Args... args ){returnponio::runge_kutta::additive_runge_kutta::make_ark<       butcher_imex_ssp1111lpm_dirk<value_t>,       butcher_imex_ssp1111lpm_erk<value_t>,1,"imex_ssp1111lpm",linear_algebra_t>( args... );}#

IMEX SSP1(1,1,1)-LPM method.

This method is based on the following pair of Butcher tableaus, with explicit part:

\[\begin{split} \begin{array}{c|c} 0 & 0 \\ \hline & 1 \end{array} \end{split}\]

and implicit part:

\[\begin{split} \begin{array}{c|c} 1 & 1 \\ \hline & 1 \end{array} \end{split}\]

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

  • linear_algebra_t – type that provides linear algebra if it is undefined for state_t (void by default)

  • Args – optional arguments to build linear_algebra_t object

template<typename value_t, typename linear_algebra_t = void, typename ...Args>
auto ponio::runge_kutta::imex_ssp2222lm_t = []( Args... args ){returnponio::runge_kutta::additive_runge_kutta::make_ark<       butcher_imex_ssp2222lm_dirk<value_t>,       butcher_imex_ssp2222lm_erk<value_t>,2,"imex_ssp2222lm",linear_algebra_t>( args... );}#

IMEX SSP2(2,2,2)-LM method.

This method is based on the following pair of Butcher tableaus, with explicit part:

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

and implicit part:

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

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

  • linear_algebra_t – type that provides linear algebra if it is undefined for state_t (void by default)

  • Args – optional arguments to build linear_algebra_t object

template<typename value_t, typename linear_algebra_t = void, typename ...Args>
auto ponio::runge_kutta::imex_ssp2222pm_t = []( Args... args ){returnponio::runge_kutta::additive_runge_kutta::make_ark<       butcher_imex_ssp2222pm_dirk<value_t>,       butcher_imex_ssp2222pm_erk<value_t>,2,"imex_ssp2222pm",linear_algebra_t>( args... );}#

IMEX SSP2(2,2,2)-PM method.

This method is based on the following pair of Butcher tableaus, with explicit part:

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

and implicit part:

\[\begin{split} \begin{array}{c|cc} 0.24 & 0.24 & 0 \\ 0.76 & 0.52 & 0.24 \\ \hline & \frac{1}{2} & \frac{1}{2} \end{array} \end{split}\]

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

  • linear_algebra_t – type that provides linear algebra if it is undefined for state_t (void by default)

  • Args – optional arguments to build linear_algebra_t object

template<typename value_t, typename linear_algebra_t = void, typename ...Args>
auto ponio::runge_kutta::imex_ssp2222um_t = []( Args... args ){returnponio::runge_kutta::additive_runge_kutta::make_ark<       butcher_imex_ssp2222um_dirk<value_t>,       butcher_imex_ssp2222um_erk<value_t>,2,"imex_ssp2222um",linear_algebra_t>( args... );}#

IMEX SSP2(2,2,2)-UM method.

This method is based on the following pair of Butcher tableaus, with explicit part:

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

and implicit part:

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

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

  • linear_algebra_t – type that provides linear algebra if it is undefined for state_t (void by default)

  • Args – optional arguments to build linear_algebra_t object

template<typename value_t, typename linear_algebra_t = void, typename ...Args>
auto ponio::runge_kutta::imex_ssp2332lpm1_t = []( Args... args ){returnponio::runge_kutta::additive_runge_kutta::make_ark<       butcher_imex_ssp2332lpm1_dirk<value_t>,       butcher_imex_ssp2332lpm1_erk<value_t>,2,"imex_ssp2332lpm1",linear_algebra_t>( args... );}#

IMEX SSP2(3,3,2)-LPM1 method.

This method is based on the following pair of Butcher tableaus, with explicit part:

\[\begin{split} \begin{array}{c|ccc} 0 & 0 & 0 & 0 \\ \frac{1}{2} & \frac{1}{2} & 0 & 0 \\ 1 & \frac{1}{2} & \frac{1}{2} & 0 \\ \hline & \frac{1}{3} & \frac{1}{3} & \frac{1}{3} \end{array} \end{split}\]

and implicit part:

\[\begin{split} \begin{array}{c|ccc} \frac{2}{11} & \frac{2}{11} & 0 & 0 \\ \frac{4523}{9317} & \frac{2829}{9317} & \frac{2}{11} & 0 \\ \frac{15517}{18634} & \frac{148529}{428582} & \frac{7}{23} & \frac{2}{11} \\ \hline & \frac{1}{3} & \frac{1}{3} & \frac{1}{3} \end{array} \end{split}\]

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

  • linear_algebra_t – type that provides linear algebra if it is undefined for state_t (void by default)

  • Args – optional arguments to build linear_algebra_t object

template<typename value_t, typename linear_algebra_t = void, typename ...Args>
auto ponio::runge_kutta::imex_ssp2332lpm2_t = []( Args... args ){returnponio::runge_kutta::additive_runge_kutta::make_ark<       butcher_imex_ssp2332lpm2_dirk<value_t>,       butcher_imex_ssp2332lpm2_erk<value_t>,2,"imex_ssp2332lpm2",linear_algebra_t>( args... );}#

IMEX SSP2(3,3,2)-LPM2 method.

This method is based on the following pair of Butcher tableaus, with explicit part:

\[\begin{split} \begin{array}{c|ccc} 0 & 0 & 0 & 0 \\ \frac{1}{2} & \frac{1}{2} & 0 & 0 \\ 1 & \frac{1}{2} & \frac{1}{2} & 0 \\ \hline & \frac{1}{3} & \frac{1}{3} & \frac{1}{3} \end{array} \end{split}\]

and implicit part:

\[\begin{split} \begin{array}{c|ccc} \frac{2}{11} & \frac{2}{11} & 0 & 0 \\ \frac{5003}{13310} & \frac{2583}{13310} & \frac{2}{11} & 0 \\ \frac{6271}{6655} & \frac{39731}{139755} & \frac{10}{21} & \frac{2}{11} \\ \hline & \frac{1}{3} & \frac{1}{3} & \frac{1}{3} \end{array} \end{split}\]

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

  • linear_algebra_t – type that provides linear algebra if it is undefined for state_t (void by default)

  • Args – optional arguments to build linear_algebra_t object

template<typename value_t, typename linear_algebra_t = void, typename ...Args>
auto ponio::runge_kutta::imex_ssp2332lpum_t = []( Args... args ){returnponio::runge_kutta::additive_runge_kutta::make_ark<       butcher_imex_ssp2332lpum_dirk<value_t>,       butcher_imex_ssp2332lpum_erk<value_t>,2,"imex_ssp2332lpum",linear_algebra_t>( args... );}#

IMEX SSP2(3,3,2)-LPUM method.

This method is based on the following pair of Butcher tableaus, with explicit part:

\[\begin{split} \begin{array}{c|ccc} 0 & 0 & 0 & 0 \\ \frac{1}{2} & \frac{1}{2} & 0 & 0 \\ 1 & \frac{1}{2} & \frac{1}{2} & 0 \\ \hline & \frac{1}{3} & \frac{1}{3} & \frac{1}{3} \end{array} \end{split}\]

and implicit part:

\[\begin{split} \begin{array}{c|ccc} \frac{2}{11} & \frac{2}{11} & 0 & 0 \\ \frac{69}{154} & \frac{41}{154} & \frac{2}{11} & 0 \\ \frac{67}{77} & \frac{289}{847} & \frac{42}{121} & \frac{2}{11} \\ \hline & \frac{1}{3} & \frac{1}{3} & \frac{1}{3} \end{array} \end{split}\]

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

  • linear_algebra_t – type that provides linear algebra if it is undefined for state_t (void by default)

  • Args – optional arguments to build linear_algebra_t object

template<typename value_t, typename linear_algebra_t = void, typename ...Args>
auto ponio::runge_kutta::imex_ssp2332lspum_t = []( Args... args ){returnponio::runge_kutta::additive_runge_kutta::make_ark<       butcher_imex_ssp2332lspum_dirk<value_t>,       butcher_imex_ssp2332lspum_erk<value_t>,2,"imex_ssp2332lspum",linear_algebra_t>( args... );}#

IMEX SSP2(3,3,2)-LSPUM method.

This method is based on the following pair of Butcher tableaus, with explicit part:

\[\begin{split} \begin{array}{c|ccc} 0 & 0 & 0 & 0 \\ \frac{5}{6} & \frac{5}{6} & 0 & 0 \\ \frac{11}{12} & \frac{11}{24} & \frac{11}{24} & 0 \\ \hline & \frac{24}{55} & \frac{1}{5} & \frac{4}{11} \end{array} \end{split}\]

and implicit part:

\[\begin{split} \begin{array}{c|ccc} \frac{2}{11} & \frac{2}{11} & 0 & 0 \\ \frac{289}{462} & \frac{205}{462} & \frac{2}{11} & 0 \\ \frac{751}{924} & \frac{2033}{4620} & \frac{21}{110} & \frac{2}{11} \\ \hline & \frac{24}{55} & \frac{1}{5} & \frac{4}{11} \end{array} \end{split}\]

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

  • linear_algebra_t – type that provides linear algebra if it is undefined for state_t (void by default)

  • Args – optional arguments to build linear_algebra_t object

template<typename value_t, typename linear_algebra_t = void, typename ...Args>
auto ponio::runge_kutta::imex_ssp2332lum_t = []( Args... args ){returnponio::runge_kutta::additive_runge_kutta::make_ark<       butcher_imex_ssp2332lum_dirk<value_t>,       butcher_imex_ssp2332lum_erk<value_t>,2,"imex_ssp2332lum",linear_algebra_t>( args... );}#

IMEX SSP2(3,3,2)-LUM method.

This method is based on the following pair of Butcher tableaus, with explicit part:

\[\begin{split} \begin{array}{c|ccc} 0 & 0 & 0 & 0 \\ \frac{1}{2} & \frac{1}{2} & 0 & 0 \\ 1 & \frac{1}{2} & \frac{1}{2} & 0 \\ \hline & \frac{1}{3} & \frac{1}{3} & \frac{1}{3} \end{array} \end{split}\]

and implicit part:

\[\begin{split} \begin{array}{c|ccc} \frac{1}{5} & \frac{1}{5} & 0 & 0 \\ \frac{3}{10} & \frac{1}{10} & \frac{1}{5} & 0 \\ 1 & \frac{1}{3} & \frac{1}{3} & \frac{1}{3} \\ \hline & \frac{1}{3} & \frac{1}{3} & \frac{1}{3} \end{array} \end{split}\]

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

  • linear_algebra_t – type that provides linear algebra if it is undefined for state_t (void by default)

  • Args – optional arguments to build linear_algebra_t object

Embedded methods#

template<typename value_t, typename linear_algebra_t = void, typename ...Args>
auto ponio::runge_kutta::ark324l2sa_t = []( Args... args ){returnponio::runge_kutta::additive_runge_kutta::make_ark<       butcher_ark324l2sa_dirk<value_t>,       butcher_ark324l2sa_erk<value_t>,3,"ark324l2sa",linear_algebra_t>( args... );}#

ARK3(2)4L[2]SA method.

This method is based on the following pair of Butcher tableaus, with explicit part:

\[\begin{split} \begin{array}{c|cccc} 0 & 0 & 0 & 0 & 0 \\ \frac{1767732205903}{2027836641118} & \frac{1767732205903}{2027836641118} & 0 & 0 & 0 \\ \frac{3}{5} & \frac{5535828885825}{10492691773637} & \frac{788022342437}{10882634858940} & 0 & 0 \\ 1 & \frac{6485989280629}{16251701735622} & - \frac{4246266847089}{9704473918619} & \frac{10755448449292}{10357097424841} & 0 \\ \hline & \frac{1471266399579}{7840856788654} & - \frac{4482444167858}{7529755066697} & \frac{11266239266428}{11593286722821} & \frac{1767732205903}{4055673282236} \\ \hline & \frac{2756255671327}{12835298489170} & - \frac{10771552573575}{22201958757719} & \frac{9247589265047}{10645013368117} & \frac{2193209047091}{5459859503100} \end{array} \end{split}\]

and implicit part:

\[\begin{split} \begin{array}{c|cccc} 0 & 0 & 0 & 0 & 0 \\ \frac{1767732205903}{2027836641118} & \frac{1767732205903}{4055673282236} & \frac{1767732205903}{4055673282236} & 0 & 0 \\ \frac{3}{5} & \frac{2746238789719}{10658868560708} & - \frac{640167445237}{6845629431997} & \frac{1767732205903}{4055673282236} & 0 \\ 1 & \frac{1471266399579}{7840856788654} & - \frac{4482444167858}{7529755066697} & \frac{11266239266428}{11593286722821} & \frac{1767732205903}{4055673282236} \\ \hline & \frac{1471266399579}{7840856788654} & - \frac{4482444167858}{7529755066697} & \frac{11266239266428}{11593286722821} & \frac{1767732205903}{4055673282236} \\ \hline & \frac{2756255671327}{12835298489170} & - \frac{10771552573575}{22201958757719} & \frac{9247589265047}{10645013368117} & \frac{2193209047091}{5459859503100} \end{array} \end{split}\]

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

  • linear_algebra_t – type that provides linear algebra if it is undefined for state_t (void by default)

  • Args – optional arguments to build linear_algebra_t object

template<typename value_t, typename linear_algebra_t = void, typename ...Args>
auto ponio::runge_kutta::ark436l2sa_t = []( Args... args ){returnponio::runge_kutta::additive_runge_kutta::make_ark<       butcher_ark436l2sa_dirk<value_t>,       butcher_ark436l2sa_erk<value_t>,4,"ark436l2sa",linear_algebra_t>( args... );}#

ARK4(3)6L[2]SA method.

This method is based on the following pair of Butcher tableaus, with explicit part:

\[\begin{split} \begin{array}{c|cccccc} 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ \frac{1}{2} & \frac{1}{2} & 0 & 0 & 0 & 0 & 0 \\ \frac{83}{250} & \frac{13861}{62500} & \frac{6889}{62500} & 0 & 0 & 0 & 0 \\ \frac{31}{50} & - \frac{116923316275}{2393684061468} & - \frac{2731218467317}{15368042101831} & \frac{9408046702089}{11113171139209} & 0 & 0 & 0 \\ \frac{17}{20} & - \frac{451086348788}{2902428689909} & - \frac{2682348792572}{7519795681897} & \frac{12662868775082}{11960479115383} & \frac{3355817975965}{11060851509271} & 0 & 0 \\ 1 & \frac{647845179188}{3216320057751} & \frac{73281519250}{8382639484533} & \frac{552539513391}{3454668386233} & \frac{3354512671639}{8306763924573} & \frac{4040}{17871} & 0 \\ \hline & \frac{82889}{524892} & 0 & \frac{15625}{83664} & \frac{69875}{102672} & - \frac{2260}{8211} & \frac{1}{4} \\ \hline & \frac{4586570599}{29645900160} & 0 & \frac{178811875}{945068544} & \frac{814220225}{1159782912} & - \frac{3700637}{11593932} & \frac{61727}{225920} \end{array} \end{split}\]

and implicit part:

\[\begin{split} \begin{array}{c|cccccc} 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ \frac{1}{2} & \frac{1}{4} & \frac{1}{4} & 0 & 0 & 0 & 0 \\ \frac{83}{250} & \frac{8611}{62500} & - \frac{1743}{31250} & \frac{1}{4} & 0 & 0 & 0 \\ \frac{31}{50} & \frac{5012029}{34652500} & - \frac{654441}{2922500} & \frac{174375}{388108} & \frac{1}{4} & 0 & 0 \\ \frac{17}{20} & \frac{15267082809}{155376265600} & - \frac{71443401}{120774400} & \frac{730878875}{902184768} & \frac{2285395}{8070912} & \frac{1}{4} & 0 \\ 1 & \frac{82889}{524892} & 0 & \frac{15625}{83664} & \frac{69875}{102672} & - \frac{2260}{8211} & \frac{1}{4} \\ \hline & \frac{82889}{524892} & 0 & \frac{15625}{83664} & \frac{69875}{102672} & - \frac{2260}{8211} & \frac{1}{4} \\ \hline & \frac{4586570599}{29645900160} & 0 & \frac{178811875}{945068544} & \frac{814220225}{1159782912} & - \frac{3700637}{11593932} & \frac{61727}{225920} \end{array} \end{split}\]

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

  • linear_algebra_t – type that provides linear algebra if it is undefined for state_t (void by default)

  • Args – optional arguments to build linear_algebra_t object

template<typename value_t, typename linear_algebra_t = void, typename ...Args>
auto ponio::runge_kutta::ark548l2sa_t = []( Args... args ){returnponio::runge_kutta::additive_runge_kutta::make_ark<       butcher_ark548l2sa_dirk<value_t>,       butcher_ark548l2sa_erk<value_t>,3,"ark548l2sa",linear_algebra_t>( args... );}#

ARK5(4)8L[2]SA method.

This method is based on the following pair of Butcher tableaus, with explicit part:

\[\begin{split} \begin{array}{c|cccccccc} 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ \frac{41}{100} & \frac{41}{100} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ \frac{2935347310677}{11292855782101} & \frac{367902744464}{2072280473677} & \frac{677623207551}{8224143866563} & 0 & 0 & 0 & 0 & 0 & 0 \\ \frac{1426016391358}{7196633302097} & \frac{1268023523408}{10340822734521} & 0 & \frac{1029933939417}{13636558850479} & 0 & 0 & 0 & 0 & 0 \\ \frac{23}{25} & \frac{14463281900351}{6315353703477} & 0 & \frac{66114435211212}{5879490589093} & - \frac{54053170152839}{4284798021562} & 0 & 0 & 0 & 0 \\ \frac{6}{25} & \frac{14090043504691}{34967701212078} & 0 & \frac{15191511035443}{11219624916014} & - \frac{18461159152457}{12425892160975} & - \frac{281667163811}{9011619295870} & 0 & 0 & 0 \\ \frac{3}{5} & \frac{19230459214898}{13134317526959} & 0 & \frac{21275331358303}{2942455364971} & - \frac{38145345988419}{4862620318723} & - \frac{1}{8} & - \frac{1}{8} & 0 & 0 \\ 1 & - \frac{19977161125411}{11928030595625} & 0 & - \frac{40795976796054}{6384907823539} & \frac{177454434618887}{12078138498510} & \frac{782672205425}{8267701900261} & - \frac{69563011059811}{9646580694205} & \frac{7356628210526}{4942186776405} & 0 \\ \hline & - \frac{872700587467}{9133579230613} & 0 & 0 & \frac{22348218063261}{9555858737531} & - \frac{1143369518992}{8141816002931} & - \frac{39379526789629}{19018526304540} & \frac{32727382324388}{42900044865799} & \frac{41}{200} \\ \hline & - \frac{975461918565}{9796059967033} & 0 & 0 & \frac{78070527104295}{32432590147079} & - \frac{548382580838}{3424219808633} & - \frac{33438840321285}{15594753105479} & \frac{3629800801594}{4656183773603} & \frac{4035322873751}{18575991585200} \end{array} \end{split}\]

and implicit part:

\[\begin{split} \begin{array}{c|cccccccc} 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ \frac{41}{100} & \frac{41}{200} & \frac{41}{200} & 0 & 0 & 0 & 0 & 0 & 0 \\ \frac{2935347310677}{11292855782101} & \frac{41}{100} & - \frac{567603406766}{11931857230679} & \frac{41}{200} & 0 & 0 & 0 & 0 & 0 \\ \frac{1426016391358}{7196633302097} & \frac{683785636431}{9252920307686} & 0 & - \frac{110385047103}{1367015193373} & \frac{41}{200} & 0 & 0 & 0 & 0 \\ \frac{23}{25} & \frac{3016520224154}{10081342136671} & 0 & \frac{30586259806659}{12414158314087} & - \frac{22760509404356}{11113319521817} & \frac{41}{200} & 0 & 0 & 0 \\ \frac{6}{25} & \frac{218866479029}{1489978393911} & 0 & \frac{638256894668}{5436446318841} & - \frac{1179710474555}{5321154724896} & - \frac{60928119172}{8023461067671} & \frac{41}{200} & 0 & 0 \\ \frac{3}{5} & \frac{1020004230633}{5715676835656} & 0 & \frac{25762820946817}{25263940353407} & - \frac{2161375909145}{9755907335909} & - \frac{211217309593}{5846859502534} & - \frac{4269925059573}{7827059040749} & \frac{41}{200} & 0 \\ 1 & - \frac{872700587467}{9133579230613} & 0 & 0 & \frac{22348218063261}{9555858737531} & - \frac{1143369518992}{8141816002931} & - \frac{39379526789629}{19018526304540} & \frac{32727382324388}{42900044865799} & \frac{41}{200} \\ \hline & - \frac{872700587467}{9133579230613} & 0 & 0 & \frac{22348218063261}{9555858737531} & - \frac{1143369518992}{8141816002931} & - \frac{39379526789629}{19018526304540} & \frac{32727382324388}{42900044865799} & \frac{41}{200} \\ \hline & - \frac{975461918565}{9796059967033} & 0 & 0 & \frac{78070527104295}{32432590147079} & - \frac{548382580838}{3424219808633} & - \frac{33438840321285}{15594753105479} & \frac{3629800801594}{4656183773603} & \frac{4035322873751}{18575991585200} \end{array} \end{split}\]

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

  • linear_algebra_t – type that provides linear algebra if it is undefined for state_t (void by default)

  • Args – optional arguments to build linear_algebra_t object