From 6c60a5639f0110aed00beaf1605ddf20ff3114fb Mon Sep 17 00:00:00 2001 From: "Daniel R. Reynolds" Date: Sat, 28 Oct 2023 18:59:04 -0500 Subject: [PATCH] Feature/new tables (#359) Additional embedded explicit Runge--Kutta methods to ARKODE. --------- Co-authored-by: Steven Roberts Co-authored-by: David J. Gardner --- CHANGELOG.md | 6 +- doc/arkode/guide/source/Butcher.rst | 492 ++++++++++++++---- doc/arkode/guide/source/Constants.rst | 22 + doc/arkode/guide/source/Introduction.rst | 15 +- doc/arkode/guide/source/Mathematics.rst | 13 +- .../figs/arkode/shu_osher_erk_stab_region.png | Bin 0 -> 24768 bytes .../figs/arkode/v65b_erk_stab_region.png | Bin 0 -> 24305 bytes .../figs/arkode/v76_erk_stab_region.png | Bin 0 -> 24295 bytes .../figs/arkode/v87_erk_stab_region.png | Bin 0 -> 24583 bytes .../figs/arkode/v98_erk_stab_region.png | Bin 0 -> 24583 bytes doc/shared/sundials.bib | 40 +- include/arkode/arkode_arkstep.h | 2 + include/arkode/arkode_butcher_erk.h | 9 +- include/arkode/arkode_erkstep.h | 2 + src/arkode/arkode_arkstep.c | 9 +- src/arkode/arkode_butcher_erk.def | 380 +++++++++++++- src/arkode/arkode_erkstep.c | 9 +- test/answers | 2 +- .../arkode/CXX_serial/ark_test_butcher.cpp | 4 +- .../arkode/CXX_serial/ark_test_butcher.out | 24 + 20 files changed, 901 insertions(+), 128 deletions(-) create mode 100644 doc/shared/figs/arkode/shu_osher_erk_stab_region.png create mode 100644 doc/shared/figs/arkode/v65b_erk_stab_region.png create mode 100644 doc/shared/figs/arkode/v76_erk_stab_region.png create mode 100644 doc/shared/figs/arkode/v87_erk_stab_region.png create mode 100644 doc/shared/figs/arkode/v98_erk_stab_region.png diff --git a/CHANGELOG.md b/CHANGELOG.md index b766f5c334..34c8cf9949 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,7 +32,11 @@ Added Fortran support for the LAPACK dense `SUNLinearSolver` implementations. Fixed the build system support for MAGMA when using a NVIDIA HPC SDK installation of CUDA and fixed the targets used for rocBLAS and rocSPARSE. -Added the fourth order ERK method `ARKODE_SOFRONIOU_SPALETTA_5_3_4`. +Added the third order ERK method `ARKODE_SHU_OSHER_3_2_3`, the fourth order +ERK method `ARKODE_SOFRONIOU_SPALETTA_5_3_4`, the sixth order ERK method +`ARKODE_VERNER_9_5_6`, the seventh order ERK method `ARKODE_VERNER_10_6_7`, +the eighth order ERK method `ARKODE_VERNER_13_7_8`, and the ninth order ERK +method `ARKODE_VERNER_16_8_9`. ## Changes to SUNDIALS in release 6.6.1 diff --git a/doc/arkode/guide/source/Butcher.rst b/doc/arkode/guide/source/Butcher.rst index c9166aa55a..b9654211f5 100644 --- a/doc/arkode/guide/source/Butcher.rst +++ b/doc/arkode/guide/source/Butcher.rst @@ -297,6 +297,39 @@ method from :cite:p:`KenCarp:03`). region is outlined in blue; the embedding's region is in red. +Shu-Osher-3-2-3 +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. index:: Shu-Osher-3-2-3 ERK method + +Accessible via the constant ``ARKODE_SHU_OSHER_3_2_3`` to +:c:func:`ARKStepSetTableNum`, :c:func:`ERKStepSetTableNum` or +:c:func:`ARKodeButcherTable_LoadERK`. +Accessible via the string ``"ARKODE_SHU_OSHER_3_2_3"`` to +:c:func:`ARKStepSetTableName`, :c:func:`ERKStepSetTableName` or +:c:func:`ARKodeButcherTable_LoadERKByName`. +(from :cite:p:`ShOs:88` with embedding from :cite:p:`FCS:21`). + +.. math:: + + \renewcommand{\arraystretch}{1.5} + \begin{array}{r|ccc} + 0 & 0 & 0 & 0 \\ + 1 & 0 & 0 & 0 \\ + \frac{1}{2} & \frac{1}{4} & \frac{1}{4} & 0 \\ + \hline + 3 & \frac{1}{6} & \frac{1}{6} & \frac{2}{3} \\ + 2 & \frac{291485418878409}{1000000000000000} & \frac{291485418878409}{1000000000000000} & \frac{208514581121591}{500000000000000} + \end{array} + +.. figure:: /figs/arkode/shu_osher_erk_stab_region.png + :scale: 50 % + :align: center + + Linear stability region for the Shu-Osher method. The method's + region is outlined in blue; the embedding's region is in red. + + .. _Butcher.Knoth_Wolke: @@ -355,6 +388,7 @@ Accessible via the string ``"ARKODE_SOFRONIOU_SPALETTA_5_3_4"`` to \frac{3}{5} & -\frac{3}{20} & \frac{3}{4} & 0 & 0 & 0 \\ 1 & \frac{19}{44} & -\frac{15}{44} & \frac{10}{11} & 0 & 0 \\ 1 & \frac{11}{72} & \frac{25}{72} & \frac{25}{72} & \frac{11}{72} & 0 \\ + \hline 4 & \frac{11}{72} & \frac{25}{72} & \frac{25}{72} & \frac{11}{72} & 0 \\ 3 & \frac{1251515}{8970912} & \frac{3710105}{8970912} & \frac{2519695}{8970912} & \frac{61105}{8970912} & \frac{119041}{747576} \\ \end{array} @@ -467,21 +501,27 @@ Accessible via the string ``"ARKODE_ARK437L2SA_ERK_7_3_4"`` to This is the explicit portion of the 4th order additive method (the explicit portion of the ARK4(3)7L[2]SA method from :cite:p:`KenCarp:19`). -.. math:: +.. only:: html - \renewcommand{\arraystretch}{1.5} - \begin{array}{r|ccccccc} - 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ - \frac{247}{1000} & \frac{247}{1000} & 0 & 0 & 0 & 0 & 0 & 0 \\ - \frac{4276536705230}{10142255878289} & \frac{247}{4000} & \frac{2694949928731}{7487940209513} & 0 & 0 & 0 & 0 & 0 \\ - \frac{67}{200} & \frac{464650059369}{8764239774964} & \frac{878889893998}{2444806327765} & -\frac{952945855348}{12294611323341} & 0 & 0 & 0 & 0 \\ - \frac{3}{40} & \frac{476636172619}{8159180917465} & -\frac{1271469283451}{7793814740893} & -\frac{859560642026}{4356155882851} & \frac{1723805262919}{4571918432560} & 0 & 0 & 0 \\ - \frac{7}{10} & \frac{6338158500785}{11769362343261} & -\frac{4970555480458}{10924838743837} & \frac{3326578051521}{2647936831840} & -\frac{880713585975}{1841400956686} & -\frac{1428733748635}{8843423958496} & 0 & 0 \\ - 1 & \frac{760814592956}{3276306540349} & \frac{760814592956}{3276306540349} & -\frac{47223648122716}{6934462133451} & \frac{71187472546993}{9669769126921} & -\frac{13330509492149}{9695768672337} & \frac{11565764226357}{8513123442827} & 0 \\ - \hline - 4 & 0 & 0 & \frac{9164257142617}{17756377923965} & -\frac{10812980402763}{74029279521829} & \frac{1335994250573}{5691609445217} & \frac{2273837961795}{8368240463276} & \frac{247}{2000} \\ - 3 & 0 & 0 & \frac{4469248916618}{8635866897933} & -\frac{621260224600}{4094290005349} & \frac{696572312987}{2942599194819} & \frac{1532940081127}{5565293938103} & \frac{2441}{20000} - \end{array} + .. math:: + + \renewcommand{\arraystretch}{1.5} + \begin{array}{r|ccccccc} + 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ + \frac{247}{1000} & \frac{247}{1000} & 0 & 0 & 0 & 0 & 0 & 0 \\ + \frac{4276536705230}{10142255878289} & \frac{247}{4000} & \frac{2694949928731}{7487940209513} & 0 & 0 & 0 & 0 & 0 \\ + \frac{67}{200} & \frac{464650059369}{8764239774964} & \frac{878889893998}{2444806327765} & -\frac{952945855348}{12294611323341} & 0 & 0 & 0 & 0 \\ + \frac{3}{40} & \frac{476636172619}{8159180917465} & -\frac{1271469283451}{7793814740893} & -\frac{859560642026}{4356155882851} & \frac{1723805262919}{4571918432560} & 0 & 0 & 0 \\ + \frac{7}{10} & \frac{6338158500785}{11769362343261} & -\frac{4970555480458}{10924838743837} & \frac{3326578051521}{2647936831840} & -\frac{880713585975}{1841400956686} & -\frac{1428733748635}{8843423958496} & 0 & 0 \\ + 1 & \frac{760814592956}{3276306540349} & \frac{760814592956}{3276306540349} & -\frac{47223648122716}{6934462133451} & \frac{71187472546993}{9669769126921} & -\frac{13330509492149}{9695768672337} & \frac{11565764226357}{8513123442827} & 0 \\ + \hline + 4 & 0 & 0 & \frac{9164257142617}{17756377923965} & -\frac{10812980402763}{74029279521829} & \frac{1335994250573}{5691609445217} & \frac{2273837961795}{8368240463276} & \frac{247}{2000} \\ + 3 & 0 & 0 & \frac{4469248916618}{8635866897933} & -\frac{621260224600}{4094290005349} & \frac{696572312987}{2942599194819} & \frac{1532940081127}{5565293938103} & \frac{2441}{20000} + \end{array} + +.. only:: latex + + The Butcher table is too large to fit in the PDF version of this documentation. Please see the HTML documentation for the table coefficients. .. figure:: /figs/arkode/stab_region_34.png :scale: 50 % @@ -676,22 +716,29 @@ Accessible via the string ``"ARKODE_ARK548L2SA_ERK_8_4_5"`` to This is the explicit portion of the default 5th order additive method (the explicit portion of the ARK5(4)8L[2]SA method from :cite:p:`KenCarp:03`). -.. math:: +.. only:: html + + .. math:: + + \renewcommand{\arraystretch}{1.5} + \begin{array}{r|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{92}{100} & \frac{14463281900351}{6315353703477} & 0 & \frac{66114435211212}{5879490589093} & -\frac{54053170152839}{4284798021562} & 0 & 0 & 0 & 0 \\ + \frac{24}{100} & \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 + 5 & -\frac{872700587467}{9133579230613} & 0 & 0 & \frac{22348218063261}{9555858737531} & -\frac{1143369518992}{8141816002931} & -\frac{39379526789629}{19018526304540} & \frac{32727382324388}{42900044865799} & \frac{41}{200} \\ + 4 & -\frac{975461918565}{9796059967033} & 0 & 0 & \frac{78070527104295}{32432590147079} & -\frac{548382580838}{3424219808633} & -\frac{33438840321285}{15594753105479} & \frac{3629800801594}{4656183773603} & \frac{4035322873751}{18575991585200} + \end{array} + +.. only:: latex + + The Butcher table is too large to fit in the PDF version of this documentation. Please see the HTML documentation for the table coefficients. - \renewcommand{\arraystretch}{1.5} - \begin{array}{r|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{92}{100} & \frac{14463281900351}{6315353703477} & 0 & \frac{66114435211212}{5879490589093} & -\frac{54053170152839}{4284798021562} & 0 & 0 & 0 & 0 \\ - \frac{24}{100} & \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 - 5 & -\frac{872700587467}{9133579230613} & 0 & 0 & \frac{22348218063261}{9555858737531} & -\frac{1143369518992}{8141816002931} & -\frac{39379526789629}{19018526304540} & \frac{32727382324388}{42900044865799} & \frac{41}{200} \\ - 4 & -\frac{975461918565}{9796059967033} & 0 & 0 & \frac{78070527104295}{32432590147079} & -\frac{548382580838}{3424219808633} & -\frac{33438840321285}{15594753105479} & \frac{3629800801594}{4656183773603} & \frac{4035322873751}{18575991585200} - \end{array} .. figure:: /figs/arkode/stab_region_9.png :scale: 50 % @@ -721,22 +768,28 @@ Accessible via the string ``"ARKODE_ARK548L2SAb_ERK_8_4_5"`` to This is the explicit portion of the 5th order ARK5(4)8L[2]SA method from :cite:p:`KenCarp:19`. -.. math:: +.. only:: html - \renewcommand{\arraystretch}{1.5} - \begin{array}{r|cccccccc} - 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ - \frac{4}{9} & \frac{4}{9} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ - \frac{6456083330201}{8509243623797} & \frac{1}{9} & \frac{1183333538310}{1827251437969} & 0 & 0 & 0 & 0 & 0 & 0 \\ - \frac{1632083962415}{14158861528103} & \frac{895379019517}{9750411845327} & \frac{477606656805}{13473228687314} & \frac{-112564739183}{9373365219272} & 0 & 0 & 0 & 0 & 0 \\ - \frac{6365430648612}{17842476412687} & \frac{-4458043123994}{13015289567637} & \frac{-2500665203865}{9342069639922} & \frac{983347055801}{8893519644487} & \frac{2185051477207}{2551468980502} & 0 & 0 & 0 & 0 \\ - \frac{18}{25} & \frac{-167316361917}{17121522574472} & \frac{1605541814917}{7619724128744} & \frac{991021770328}{13052792161721} & \frac{2342280609577}{11279663441611} & \frac{3012424348531}{12792462456678} & 0 & 0 & 0 \\ - \frac{191}{200} & \frac{6680998715867}{14310383562358} & \frac{5029118570809}{3897454228471} & \frac{2415062538259}{6382199904604} & \frac{-3924368632305}{6964820224454} & \frac{-4331110370267}{15021686902756} & \frac{-3944303808049}{11994238218192} & 0 & 0 \\ - 1 & \frac{2193717860234}{3570523412979} & \frac{2193717860234}{3570523412979} & \frac{5952760925747}{18750164281544} & \frac{-4412967128996}{6196664114337} & \frac{4151782504231}{36106512998704} & \frac{572599549169}{6265429158920} & \frac{-457874356192}{11306498036315} & 0 \\ - \hline - 5 & 0 & 0 & \frac{3517720773327}{20256071687669} & \frac{4569610470461}{17934693873752} & \frac{2819471173109}{11655438449929} & \frac{3296210113763}{10722700128969} & \frac{-1142099968913}{5710983926999} & \frac{2}{9} \\ - 4 & 0 & 0 & \frac{520639020421}{8300446712847} & \frac{4550235134915}{17827758688493} & \frac{1482366381361}{6201654941325} & \frac{5551607622171}{13911031047899} & \frac{-5266607656330}{36788968843917} & \frac{1074053359553}{5740751784926} - \end{array} + .. math:: + + \renewcommand{\arraystretch}{1.5} + \begin{array}{r|cccccccc} + 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ + \frac{4}{9} & \frac{4}{9} & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ + \frac{6456083330201}{8509243623797} & \frac{1}{9} & \frac{1183333538310}{1827251437969} & 0 & 0 & 0 & 0 & 0 & 0 \\ + \frac{1632083962415}{14158861528103} & \frac{895379019517}{9750411845327} & \frac{477606656805}{13473228687314} & \frac{-112564739183}{9373365219272} & 0 & 0 & 0 & 0 & 0 \\ + \frac{6365430648612}{17842476412687} & \frac{-4458043123994}{13015289567637} & \frac{-2500665203865}{9342069639922} & \frac{983347055801}{8893519644487} & \frac{2185051477207}{2551468980502} & 0 & 0 & 0 & 0 \\ + \frac{18}{25} & \frac{-167316361917}{17121522574472} & \frac{1605541814917}{7619724128744} & \frac{991021770328}{13052792161721} & \frac{2342280609577}{11279663441611} & \frac{3012424348531}{12792462456678} & 0 & 0 & 0 \\ + \frac{191}{200} & \frac{6680998715867}{14310383562358} & \frac{5029118570809}{3897454228471} & \frac{2415062538259}{6382199904604} & \frac{-3924368632305}{6964820224454} & \frac{-4331110370267}{15021686902756} & \frac{-3944303808049}{11994238218192} & 0 & 0 \\ + 1 & \frac{2193717860234}{3570523412979} & \frac{2193717860234}{3570523412979} & \frac{5952760925747}{18750164281544} & \frac{-4412967128996}{6196664114337} & \frac{4151782504231}{36106512998704} & \frac{572599549169}{6265429158920} & \frac{-457874356192}{11306498036315} & 0 \\ + \hline + 5 & 0 & 0 & \frac{3517720773327}{20256071687669} & \frac{4569610470461}{17934693873752} & \frac{2819471173109}{11655438449929} & \frac{3296210113763}{10722700128969} & \frac{-1142099968913}{5710983926999} & \frac{2}{9} \\ + 4 & 0 & 0 & \frac{520639020421}{8300446712847} & \frac{4550235134915}{17827758688493} & \frac{1482366381361}{6201654941325} & \frac{5551607622171}{13911031047899} & \frac{-5266607656330}{36788968843917} & \frac{1074053359553}{5740751784926} + \end{array} + +.. only:: latex + + The Butcher table is too large to fit in the PDF version of this documentation. Please see the HTML documentation for the table coefficients. .. figure:: /figs/arkode/stab_region_35.png @@ -790,6 +843,107 @@ This is the default 6th order explicit method (from :cite:p:`Ver:78`). +.. _Butcher.Verner-6-5b: + +Verner-9-5-6 +^^^^^^^^^^^^^^ + +.. index:: Verner-9-5-6 ERK method + +Accessible via the constant ``ARKODE_VERNER_9_5_6`` to +:c:func:`ARKStepSetTableNum`, :c:func:`ERKStepSetTableNum` +or :c:func:`ARKodeButcherTable_LoadERK`. +Accessible via the string ``"ARKODE_VERNER_9_5_6"`` to +:c:func:`ARKStepSetTableName`, :c:func:`ERKStepSetTableName` or +:c:func:`ARKodeButcherTable_LoadERKByName`. +This is the 6th order explicit method IIIXb-6(5) from :cite:p:`Ver:10`. + +.. only:: html + + .. math:: + + \renewcommand{\arraystretch}{1.5} + \begin{array}{r|ccccccccc} + 0 & 0& 0& 0& 0& 0& 0& 0& 0& 0\\ + \frac{3}{50} & \frac{3}{50}& 0& 0& 0& 0& 0& 0& 0& 0\\ + \frac{1439}{15000} & \frac{519479}{27000000}& \frac{2070721}{27000000}& 0& 0& 0& 0& 0& 0& 0\\ + \frac{1439}{10000} & \frac{1439}{40000}& 0& \frac{4317}{40000}& 0& 0& 0& 0& 0& 0\\ + \frac{4973}{10000} & \frac{109225017611}{82828840000}& 0& -\frac{417627820623}{82828840000}& \frac{43699198143}{10353605000}& 0& 0& 0& 0& 0\\ + \frac{389}{400} & -\frac{8036815292643907349452552172369}{191934985946683241245914401600}& 0& \frac{246134619571490020064824665}{1543816496655405117602368}& -\frac{13880495956885686234074067279}{113663489566254201783474344}& \frac{755005057777788994734129}{136485922925633667082436}& 0& 0& 0& 0\\ + \frac{1999}{2000} & -\frac{1663299841566102097180506666498880934230261}{30558424506156170307020957791311384232000}& 0& \frac{130838124195285491799043628811093033}{631862949514135618861563657970240}& -\frac{3287100453856023634160618787153901962873}{20724314915376755629135711026851409200}& \frac{2771826790140332140865242520369241}{396438716042723436917079980147600}& -\frac{1799166916139193}{96743806114007800}& 0& 0& 0\\ + 1 & -\frac{832144750039369683895428386437986853923637763}{15222974550069600748763651844667619945204887}& 0& \frac{818622075710363565982285196611368750}{3936576237903728151856072395343129}& -\frac{9818985165491658464841194581385463434793741875}{61642597962658994069869370923196463581866011}& \frac{31796692141848558720425711042548134769375}{4530254033500045975557858016006308628092}& -\frac{14064542118843830075}{766928748264306853644}& -\frac{1424670304836288125}{2782839104764768088217}& 0& 0\\ + 1 & \frac{382735282417}{11129397249634}& 0& 0& \frac{5535620703125000}{21434089949505429}& \frac{13867056347656250}{32943296570459319}& \frac{626271188750}{142160006043}& -\frac{51160788125000}{289890548217}& \frac{163193540017}{946795234}& 0\\ + \hline + 6 & \frac{382735282417}{11129397249634}& 0& 0& \frac{5535620703125000}{21434089949505429}& \frac{13867056347656250}{32943296570459319}& \frac{626271188750}{142160006043}& -\frac{51160788125000}{289890548217}& \frac{163193540017}{946795234}& 0 \\ + 5 & \frac{273361583}{5567482366}& 0& 0& \frac{1964687500000}{8727630165387}& \frac{596054687500}{1269637976277}& \frac{12740367500}{15795556227}& 0& -\frac{4462730789736252634813752317}{7350663039626676022821734166}& \frac{441454562788983500}{7763730504400359099} + \end{array} + + +.. only:: latex + + The Butcher table is too large to fit in the PDF version of this documentation. Please see the HTML documentation for the table coefficients. + + + +.. figure:: /figs/arkode/v65b_erk_stab_region.png + :scale: 75 % + :align: center + + Linear stability region for the Verner-9-5-6 method. The method's + region is outlined in blue; the embedding's region is in red. + + + +.. _Butcher.Verner-7-6: + +Verner-10-6-7 +^^^^^^^^^^^^^^ + +.. index:: Verner-10-6-7 ERK method + +Accessible via the constant ``ARKODE_VERNER_10_6_7`` to +:c:func:`ARKStepSetTableNum`, :c:func:`ERKStepSetTableNum` +or :c:func:`ARKodeButcherTable_LoadERK`. +Accessible via the string ``"ARKODE_VERNER_10_6_7"`` to +:c:func:`ARKStepSetTableName`, :c:func:`ERKStepSetTableName` or +:c:func:`ARKodeButcherTable_LoadERKByName`. +This is the default 7th order explicit method (from :cite:p:`Ver:10`). + +.. only:: html + + .. math:: + + \renewcommand{\arraystretch}{1.5} + \begin{array}{r|cccccccccc} + 0 & 0& 0& 0& 0& 0& 0& 0& 0& 0& 0\\ + \frac{1}{200} & \frac{1}{200}& 0& 0& 0& 0& 0& 0& 0& 0& 0\\ + \frac{49}{450} & -\frac{4361}{4050}& \frac{2401}{2025}& 0& 0& 0& 0& 0& 0& 0& 0\\ + \frac{49}{300} & \frac{49}{1200}& 0& \frac{49}{400}& 0& 0& 0& 0& 0& 0& 0\\ + \frac{911}{2000} & \frac{2454451729}{3841600000}& 0& -\frac{9433712007}{3841600000}& \frac{4364554539}{1920800000}& 0& 0& 0& 0& 0& 0\\ + \frac{3480084980}{5709648941} & -\frac{6187101755456742839167388910402379177523537620}{2324599620333464857202963610201679332423082271}& 0& \frac{27569888999279458303270493567994248533230000}{2551701010245296220859455115479340650299761}& -\frac{37368161901278864592027018689858091583238040000}{4473131870960004275166624817435284159975481033}& \frac{1392547243220807196190880383038194667840000000}{1697219131380493083996999253929006193143549863}& 0& 0& 0& 0& 0\\ + \frac{221}{250} & \frac{11272026205260557297236918526339}{1857697188743815510261537500000}& 0& -\frac{48265918242888069}{1953194276993750}& \frac{26726983360888651136155661781228}{1308381343805114800955157615625}& -\frac{2090453318815827627666994432}{1096684189897834170412307919}& \frac{1148577938985388929671582486744843844943428041509}{1141532118233823914568777901158338927629837500000}& 0& 0& 0& 0\\ + \frac{37}{40} & \frac{1304457204588839386329181466225966641}{108211771565488329642169667802016000}& 0& -\frac{1990261989751005}{40001418792832}& \frac{2392691599894847687194643439066780106875}{58155654089143548047476915856270826016}& -\frac{1870932273351008733802814881998561250}{419326053051486744762255151208232123}& \frac{1043329047173803328972823866240311074041739158858792987034783181}{510851127745017966999893975119259285040213723744255237522144000}& -\frac{311918858557595100410788125}{3171569057622789618800376448}& 0& 0& 0\\ + 1 & \frac{17579784273699839132265404100877911157}{1734023495717116205617154737841023480}& 0& -\frac{18539365951217471064750}{434776548575709731377}& \frac{447448655912568142291911830292656995992000}{12511202807447096607487664209063950964109}& -\frac{65907597316483030274308429593905808000000}{15158061430635748897861852383197382130691}& \frac{273847823027445129865693702689010278588244606493753883568739168819449761}{136252034448398939768371761610231099586032870552034688235302796640584360}& \frac{694664732797172504668206847646718750}{1991875650119463976442052358853258111}& -\frac{19705319055289176355560129234220800}{72595753317320295604316217197876507}& 0& 0\\ + 1 & -\frac{511858190895337044664743508805671}{11367030248263048398341724647960}& 0& \frac{2822037469238841750}{15064746656776439}& -\frac{23523744880286194122061074624512868000}{152723005449262599342117017051789699}& \frac{10685036369693854448650967542704000000}{575558095977344459903303055137999707}& -\frac{6259648732772142303029374363607629515525848829303541906422993}{876479353814142962817551241844706205620792843316435566420120}& \frac{17380896627486168667542032602031250}{13279937889697320236613879977356033}& 0& 0& 0\\ + \hline + 7 & \frac{96762636172307789}{2051985304794103980}& 0& 0& \frac{312188947591288252500000}{1212357694274963646019729}& \frac{13550580884964304000000000000}{51686919683339547115937980629}& \frac{72367769693133178898676076432831566019684378142853445230956642801}{475600216991873963561768100160364792981629064220601844848928537580}& \frac{1619421054120605468750}{3278200730370057108183}& -\frac{66898316144057728000}{227310933007074849597}& \frac{181081444637946577}{2226845467039736466}& 0 \\ + 6 & \frac{117807213929927}{2640907728177740}& 0& 0& \frac{4758744518816629500000}{17812069906509312711137}& \frac{1730775233574080000000000}{7863520414322158392809673}& \frac{2682653613028767167314032381891560552585218935572349997}{12258338284789875762081637252125169126464880985167722660}& \frac{40977117022675781250}{178949401077111131341}& 0& 0& \frac{2152106665253777}{106040260335225546} + \end{array} + +.. only:: latex + + The Butcher table is too large to fit in the PDF version of this documentation. Please see the HTML documentation for the table coefficients. + + +.. figure:: /figs/arkode/v76_erk_stab_region.png + :scale: 75 % + :align: center + + Linear stability region for the Verner-10-6-7 method. The method's + region is outlined in blue; the embedding's region is in red. + + + .. _Butcher.Fehlberg-8-7: Fehlberg-13-7-8 @@ -837,6 +991,117 @@ This is the default 8th order explicit method (from :cite:p:`Butcher:08`). +.. _Butcher.Verner-8-7: + +Verner-13-7-8 +^^^^^^^^^^^^^^ + +.. index:: Verner-13-7-8 ERK method + +Accessible via the constant ``ARKODE_VERNER_13_7_8`` to +:c:func:`ARKStepSetTableNum`, :c:func:`ERKStepSetTableNum` +or :c:func:`ARKodeButcherTable_LoadERK`. +Accessible via the string ``"ARKODE_VERNER_13_7_8"`` to +:c:func:`ARKStepSetTableName`, :c:func:`ERKStepSetTableName` or +:c:func:`ARKodeButcherTable_LoadERKByName`. +This is the 8th order explicit method IIIX-8(7) from :cite:p:`Ver:10`. + + +.. only:: html + + .. math:: + + \renewcommand{\arraystretch}{1.5} + \begin{array}{r|ccccccccccccc} + 0 & 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0\\ + \frac{1}{20} & \frac{1}{20}& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0\\ + \frac{341}{3200} & -\frac{7161}{1024000}& \frac{116281}{1024000}& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0\\ + \frac{1023}{6400} & \frac{1023}{25600}& 0& \frac{3069}{25600}& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0\\ + \frac{39}{100} & \frac{4202367}{11628100}& 0& -\frac{3899844}{2907025}& \frac{3982992}{2907025}& 0& 0& 0& 0& 0& 0& 0& 0& 0\\ + \frac{93}{200} & \frac{5611}{114400}& 0& 0& \frac{31744}{135025}& \frac{923521}{5106400}& 0& 0& 0& 0& 0& 0& 0& 0\\ + \frac{31}{200} & \frac{21173}{343200}& 0& 0& \frac{8602624}{76559175}& -\frac{26782109}{689364000}& \frac{5611}{283500}& 0& 0& 0& 0& 0& 0& 0\\ + \frac{943}{1000} & -\frac{1221101821869329}{690812928000000}& 0& 0& -\frac{125}{2}& -\frac{1024030607959889}{168929280000000}& \frac{1501408353528689}{265697280000000}& \frac{6070139212132283}{92502016000000}& 0& 0& 0& 0& 0& 0\\ + \frac{7067558016280}{7837150160667} & -\frac{1472514264486215803881384708877264246346044433307094207829051978044531801133057155}{1246894801620032001157059621643986024803301558393487900440453636168046069686436608}& 0& 0& -\frac{5172294311085668458375175655246981230039025336933699114138315270772319372469280000}{124619381004809145897278630571215298365257079410236252921850936749076487132995191}& -\frac{12070679258469254807978936441733187949484571516120469966534514296406891652614970375}{2722031154761657221710478184531100699497284085048389015085076961673446140398628096}& \frac{780125155843893641323090552530431036567795592568497182701460674803126770111481625}{183110425412731972197889874507158786859226102980861859505241443073629143100805376}& \frac{664113122959911642134782135839106469928140328160577035357155340392950009492511875}{15178465598586248136333023107295349175279765150089078301139943253016877823170816}& \frac{10332848184452015604056836767286656859124007796970668046446015775000000}{1312703550036033648073834248740727914537972028638950165249582733679393783}& 0& 0& 0& 0& 0\\ + \frac{909}{1000} & -\frac{29055573360337415088538618442231036441314060511}{22674759891089577691327962602370597632000000000}& 0& 0& -\frac{20462749524591049105403365239069}{454251913499893469596231268750}& -\frac{180269259803172281163724663224981097}{38100922558256871086579832832000000}& \frac{21127670214172802870128286992003940810655221489}{4679473877997892906145822697976708633673728000}& \frac{318607235173649312405151265849660869927653414425413}{6714716715558965303132938072935465423910912000000}& \frac{212083202434519082281842245535894}{20022426044775672563822865371173879}& -\frac{2698404929400842518721166485087129798562269848229517793703413951226714583}{469545674913934315077000442080871141884676035902717550325616728175875000000}& 0& 0& 0& 0\\ + \frac{47}{50} & -\frac{2342659845814086836951207140065609179073838476242943917}{1358480961351056777022231400139158760857532162795520000}& 0& 0& -\frac{996286030132538159613930889652}{16353068885996164905464325675}& -\frac{26053085959256534152588089363841}{4377552804565683061011299942400}& \frac{20980822345096760292224086794978105312644533925634933539}{3775889992007550803878727839115494641972212962174156800}& \frac{890722993756379186418929622095833835264322635782294899}{13921242001395112657501941955594013822830119803764736}& \frac{161021426143124178389075121929246710833125}{10997207722131034650667041364346422894371443}& \frac{300760669768102517834232497565452434946672266195876496371874262392684852243925359864884962513}{4655443337501346455585065336604505603760824779615521285751892810315680492364106674524398280000}& -\frac{31155237437111730665923206875}{392862141594230515010338956291}& 0& 0& 0\\ + 1 & -\frac{2866556991825663971778295329101033887534912787724034363}{868226711619262703011213925016143612030669233795338240}& 0& 0& -\frac{16957088714171468676387054358954754000}{143690415119654683326368228101570221}& -\frac{4583493974484572912949314673356033540575}{451957703655250747157313034270335135744}& \frac{2346305388553404258656258473446184419154740172519949575}{256726716407895402892744978301151486254183185289662464}& \frac{1657121559319846802171283690913610698586256573484808662625}{13431480411255146477259155104956093505361644432088109056}& \frac{345685379554677052215495825476969226377187500}{74771167436930077221667203179551347546362089}& -\frac{3205890962717072542791434312152727534008102774023210240571361570757249056167015230160352087048674542196011}{947569549683965814783015124451273604984657747127257615372449205973192657306017239103491074738324033259120}& \frac{40279545832706233433100438588458933210937500}{8896460842799482846916972126377338947215101}& -\frac{6122933601070769591613093993993358877250}{1050517001510235513198246721302027675953}& 0& 0\\ + 1 & -\frac{618675905535482500672800859344538410358660153899637}{203544282118214047100119475340667684874292102389760}& 0& 0& -\frac{4411194916804718600478400319122931000}{40373053902469967450761491269633019}& -\frac{16734711409449292534539422531728520225}{1801243715290088669307203927210237952}& \frac{135137519757054679098042184152749677761254751865630525}{16029587794486289597771326361911895112703716593983488}& \frac{38937568367409876012548551903492196137929710431584875}{340956454090191606099548798001469306974758443147264}& -\frac{6748865855011993037732355335815350667265625}{7002880395717424621213565406715087764770357}& -\frac{1756005520307450928195422767042525091954178296002788308926563193523662404739779789732685671}{348767814578469983605688098046186480904607278021030540735333862087061574934154942830062320}& \frac{53381024589235611084013897674181629296875}{8959357584795694524874969598508592944141}& 0& 0& 0\\ + \hline + 8 & \frac{44901867737754616851973}{1014046409980231013380680}& 0& 0& 0& 0& \frac{791638675191615279648100000}{2235604725089973126411512319}& \frac{3847749490868980348119500000}{15517045062138271618141237517}& -\frac{13734512432397741476562500000}{875132892924995907746928783}& \frac{12274765470313196878428812037740635050319234276006986398294443554969616342274215316330684448207141}{489345147493715517650385834143510934888829280686609654482896526796523353052166757299452852166040}& -\frac{9798363684577739445312500000}{308722986341456031822630699}& \frac{282035543183190840068750}{12295407629873040425991}& -\frac{306814272936976936753}{1299331183183744997286}& 0\\ + 7 & \frac{10835401739407019406577}{244521829356935137978320}& 0& 0& 0& 0& \frac{13908189778321895491375000}{39221135527894265375640567}& \frac{73487947527027243487625000}{296504045773342769773399443}& \frac{68293140641257649609375000}{15353208647806945749946119}& \frac{22060647948996678611017711379974578860522018208949721559448560203338437626022142776381}{1111542009262325874512959185795727215759010577565736079641376621381577236680929558640}& -\frac{547971229495642458203125000}{23237214025700991642563601}& 0& 0& -\frac{28735456870978964189}{79783493704265043693} + \end{array} + +.. only:: latex + + The Butcher table is too large to fit in the PDF version of this documentation. Please see the HTML documentation for the table coefficients. + + +.. figure:: /figs/arkode/v87_erk_stab_region.png + :scale: 75 % + :align: center + + Linear stability region for the Verner-13-7-8 method. The method's + region is outlined in blue; the embedding's region is in red. + + + +.. _Butcher.Verner-9-8: + +Verner-16-8-9 +^^^^^^^^^^^^^^ + +.. index:: Verner-16-8-9 ERK method + +Accessible via the constant ``ARKODE_VERNER_16_8_9`` to +:c:func:`ARKStepSetTableNum`, :c:func:`ERKStepSetTableNum` +or :c:func:`ARKodeButcherTable_LoadERK`. +Accessible via the string ``"ARKODE_VERNER_16_8_9"`` to +:c:func:`ARKStepSetTableName`, :c:func:`ERKStepSetTableName` or +:c:func:`ARKodeButcherTable_LoadERKByName`. +This is the default 9th order explicit method (from :cite:p:`Ver:10`). + + +.. only:: html + + .. math:: + + \renewcommand{\arraystretch}{1.5} + \begin{array}{r|cccccccccccccccc} + 0 & 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0\\ + 0.03462 & 0.03462& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0\\ + 0.09702435063878044594828361677100617517633 & -0.0389335438857287327017042687229284478532& 0.1359578945245091786499878854939346230295& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0\\ + 0.1455365259581706689224254251565092627645 & 0.03638413148954266723060635628912731569111& 0& 0.1091523944686280016918190688673819470733& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0\\ + 0.561 & 2.025763914393969636805657604282571047511& 0& -7.638023836496292020387602153091964592952& 6.173259922102322383581944548809393545442& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0\\ + 0.2290079115904850126662751771814700052182 & 0.05112275589406060872792270881648288397197& 0& 0& 0.1770823794555021537929910813839068684087& 0.00080277624092225014536138698108025283759& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0\\ + 0.5449920884095149873337248228185299947818 & 0.1316006357975216279279871693164256985334& 0& 0& -0.2957276252669636417685183174672273730699& 0.0878137803564295237421124704053886667082& 0.6213052975225274774321435005639430026100& 0& 0& 0& 0& 0& 0& 0& 0& 0& 0\\ + 0.645 & 0.07166666666666666666666666666666666666667& 0& 0& 0& 0& 0.3305533578915319409260346730051472207728& 0.2427799754418013924072986603281861125606& 0& 0& 0& 0& 0& 0& 0& 0& 0\\ + 0.48375 & 0.071806640625& 0& 0& 0& 0& 0.3294380283228177160744825466257672816401& 0.1165190029271822839255174533742327183599& -0.034013671875& 0& 0& 0& 0& 0& 0& 0& 0\\ + 0.06757 & 0.04836757646340646986611287718844085773549& 0& 0& 0& 0& 0.03928989925676163974333190042057047002852& 0.1054740945890344608263649267140088017604& -0.02143865284648312665982642293830533996214& -0.1041229174627194437759832813847147895623& 0& 0& 0& 0& 0& 0& 0\\ + 0.25 & -0.02664561487201478635337289243849737340534& 0& 0& 0& 0& 0.03333333333333333333333333333333333333333& -0.1631072244872467239162704487554706387141& 0.03396081684127761199487954930015522928244& 0.1572319413814626097110769806810024118077& 0.2152267478031879552303534778794770376960& 0& 0& 0& 0& 0& 0\\ + 0.6590650618730998549405331618649220295334 & 0.03689009248708622334786359863227633989718& 0& 0& 0& 0& -0.1465181576725542928653609891758501156785& 0.2242577768172024345345469822625833796001& 0.02294405717066072637090897902753790803034& -0.0035850052905728761357394424889330334334& 0.08669223316444385506869203619044453906053& 0.4383840651968337846196219974168630120572& 0& 0& 0& 0& 0\\ + 0.8206 & -0.4866012215113340846662212357570395295088& 0& 0& 0& 0& -6.304602650282852990657772792012007122988& -0.281245618289472564778284183790118418111& -2.679019236219849057687906597489223155566& 0.518815663924157511565311164615012522024& 1.365353187603341710683633635235238678626& 5.885091088503946585721274891680604830712& 2.802808786272062889819965117517532194812& 0& 0& 0& 0\\ + 0.9012 & 0.4185367457753471441471025246471931649633& 0& 0& 0& 0& 6.724547581906459363100870806514855026676& -0.425444280164611790606983409697113064616& 3.343279153001265577811816947557982637749& 0.617081663117537759528421117507709784737& -0.929966123939932833937749523988800852013& -6.099948804751010722472962837945508844846& -3.002206187889399044804158084895173690015& 0.2553202529443445472336424602988558373637& 0& 0& 0\\ + 1 & -0.779374086122884664644623040843840506343& 0& 0& 0& 0& -13.93734253810777678786523664804936051203& 1.252048853379357320949735183924200895136& -14.69150040801686878191527989293072091588& -0.494705058533141685655191992136962873577& 2.242974909146236657906984549543692874755& 13.36789380382864375813864978592679139881& 14.39665048665068644512236935340272139005& -0.7975813331776800379127866056663258667437& 0.4409353709534277758753793068298041158235& 0& 0\\ + 1 & 2.058051337466886442151242368989994043993& 0& 0& 0& 0& 22.35793772796803295519317565842520212899& 0.90949810997556332745009198137971890783& 35.89110098240264104710550686568482456493& -3.442515027624453437985000403608480262211& -4.865481358036368826566013387928704014496& -18.90980381354342625688427480879773032857& -34.26354448030451782929251177395134170515& 1.264756521695642578827783499806516664686& 0& 0& 0\\ + \hline + 9 & 0.01461197685842315252051541915018784713459& 0& 0& 0& 0& 0& 0& -0.3915211862331339089410228267288242030810& 0.2310932500289506415909675644868993669908& 0.1274766769992852382560589467488989175618& 0.2246434176204157731566981937082069688984& 0.5684352689748512932705226972873692126743& 0.05825871557215827200814768021863420902155& 0.1364317403482215641609022744494239843327& 0.03057013983082797397721005067920369646664& 0\\ + 8 & 0.01996996514886773085518508418098868756464& 0& 0& 0& 0& 0& 0& 2.191499304949330054530747099310837524864& 0.08857071848208438030833722031786358862953& 0.1140560234865965622484956605091432032674& 0.2533163805345107065564577734569651977347& -2.056564386240941011158999594595981300493& 0.3408096799013119935160094894224543812830& 0& 0& 0.04834231373823958314376726739772871714902 + \end{array} + +.. only:: latex + + The Butcher table is too large to fit in the PDF version of this documentation. Please see the HTML documentation for the table coefficients. + + +.. figure:: /figs/arkode/v98_erk_stab_region.png + :scale: 75 % + :align: center + + Linear stability region for the Verner-16-8-9 method. The method's + region is outlined in blue; the embedding's region is in red. + + + .. _Butcher.implicit: @@ -1303,19 +1568,26 @@ Accessible via the string ``"ARKODE_KVAERNO_5_3_4"`` to :c:func:`ARKodeButcherTable_LoadDIRKByName`. Both the method and embedding are A-stable (from :cite:p:`Kva:04`). -.. math:: +.. only:: html + + .. math:: + + \renewcommand{\arraystretch}{1.5} + \begin{array}{r|ccccc} + 0 & 0 & 0 & 0 & 0 & 0 \\ + 0.871733043 & 0.4358665215 & 0.4358665215 & 0 & 0 & 0 \\ + 0.468238744853136 & 0.140737774731968 & -0.108365551378832 & 0.4358665215 & 0 & 0 \\ + 1 & 0.102399400616089 & -0.376878452267324 & 0.838612530151233 & 0.4358665215 & 0 \\ + 1 & 0.157024897860995 & 0.117330441357768 & 0.61667803039168 & -0.326899891110444 & 0.4358665215 \\ + \hline + 4 & 0.157024897860995 & 0.117330441357768 & 0.61667803039168 & -0.326899891110444 & 0.4358665215 \\ + 3 & 0.102399400616089 & -0.376878452267324 & 0.838612530151233 & 0.4358665215 & 0 + \end{array} + +.. only:: latex + + The Butcher table is too large to fit in the PDF version of this documentation. Please see the HTML documentation for the table coefficients. - \renewcommand{\arraystretch}{1.5} - \begin{array}{r|ccccc} - 0 & 0 & 0 & 0 & 0 & 0 \\ - 0.871733043 & 0.4358665215 & 0.4358665215 & 0 & 0 & 0 \\ - 0.468238744853136 & 0.140737774731968 & -0.108365551378832 & 0.4358665215 & 0 & 0 \\ - 1 & 0.102399400616089 & -0.376878452267324 & 0.838612530151233 & 0.4358665215 & 0 \\ - 1 & 0.157024897860995 & 0.117330441357768 & 0.61667803039168 & -0.326899891110444 & 0.4358665215 \\ - \hline - 4 & 0.157024897860995 & 0.117330441357768 & 0.61667803039168 & -0.326899891110444 & 0.4358665215 \\ - 3 & 0.102399400616089 & -0.376878452267324 & 0.838612530151233 & 0.4358665215 & 0 - \end{array} .. figure:: /figs/arkode/stab_region_19.png :scale: 50 % @@ -1521,21 +1793,28 @@ Accessible via the string ``"ARKODE_KVAERNO_7_4_5"`` to Both the method and embedding are A-stable; additionally the method is L-stable (from :cite:p:`Kva:04`). -.. math:: +.. only:: html + + .. math:: + + \renewcommand{\arraystretch}{1.5} + \begin{array}{r|ccccccc} + 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ + 0.52 & 0.26 & 0.26 & 0 & 0 & 0 & 0 & 0 \\ + 1.230333209967908 & 0.13 & 0.84033320996790809 & 0.26 & 0 & 0 & 0 & 0 \\ + 0.895765984350076 & 0.22371961478320505 & 0.47675532319799699 & -0.06470895363112615 & 0.26 & 0 & 0 & 0 \\ + 0.436393609858648 & 0.16648564323248321 & 0.10450018841591720 & 0.03631482272098715 & -0.13090704451073998 & 0.26 & 0 & 0 \\ + 1 & 0.13855640231268224 & 0 & -0.04245337201752043 & 0.02446657898003141 & 0.61943039072480676 & 0.26 & 0 \\ + 1 & 0.13659751177640291 & 0 & -0.05496908796538376 & -0.04118626728321046 & 0.62993304899016403 & 0.06962479448202728 & 0.26 \\ + \hline + 5 & 0.13659751177640291 & 0 & -0.05496908796538376 & -0.04118626728321046 & 0.62993304899016403 & 0.06962479448202728 & 0.26 \\ + 4 & 0.13855640231268224 & 0 & -0.04245337201752043 & 0.02446657898003141 & 0.61943039072480676 & 0.26 & 0 + \end{array} + +.. only:: latex + + The Butcher table is too large to fit in the PDF version of this documentation. Please see the HTML documentation for the table coefficients. - \renewcommand{\arraystretch}{1.5} - \begin{array}{r|ccccccc} - 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ - 0.52 & 0.26 & 0.26 & 0 & 0 & 0 & 0 & 0 \\ - 1.230333209967908 & 0.13 & 0.84033320996790809 & 0.26 & 0 & 0 & 0 & 0 \\ - 0.895765984350076 & 0.22371961478320505 & 0.47675532319799699 & -0.06470895363112615 & 0.26 & 0 & 0 & 0 \\ - 0.436393609858648 & 0.16648564323248321 & 0.10450018841591720 & 0.03631482272098715 & -0.13090704451073998 & 0.26 & 0 & 0 \\ - 1 & 0.13855640231268224 & 0 & -0.04245337201752043 & 0.02446657898003141 & 0.61943039072480676 & 0.26 & 0 \\ - 1 & 0.13659751177640291 & 0 & -0.05496908796538376 & -0.04118626728321046 & 0.62993304899016403 & 0.06962479448202728 & 0.26 \\ - \hline - 5 & 0.13659751177640291 & 0 & -0.05496908796538376 & -0.04118626728321046 & 0.62993304899016403 & 0.06962479448202728 & 0.26 \\ - 4 & 0.13855640231268224 & 0 & -0.04245337201752043 & 0.02446657898003141 & 0.61943039072480676 & 0.26 & 0 - \end{array} .. figure:: /figs/arkode/stab_region_21.png :scale: 50 % @@ -1568,22 +1847,29 @@ default 5th order additive method. Both the method and embedding are A-stable; additionally the method is L-stable (the implicit portion of the ARK5(4)8L[2]SA method from :cite:p:`KenCarp:03`). -.. math:: +.. only:: html + + .. math:: + + \renewcommand{\arraystretch}{1.5} + \begin{array}{r|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}{400} & -\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{92}{100} & \frac{3016520224154}{10081342136671} & 0 & \frac{30586259806659}{12414158314087} & -\frac{22760509404356}{11113319521817} & \frac{41}{200} & 0 & 0 & 0 \\ + \frac{24}{100} & \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 + 5 & -\frac{872700587467}{9133579230613} & 0 & 0 & \frac{22348218063261}{9555858737531} & -\frac{1143369518992}{8141816002931} & -\frac{39379526789629}{19018526304540} & \frac{32727382324388}{42900044865799} & \frac{41}{200} \\ + 4 & -\frac{975461918565}{9796059967033} & 0 & 0 & \frac{78070527104295}{32432590147079} & -\frac{548382580838}{3424219808633} & -\frac{33438840321285}{15594753105479} & \frac{3629800801594}{4656183773603} & \frac{4035322873751}{18575991585200} + \end{array} + +.. only:: latex + + The Butcher table is too large to fit in the PDF version of this documentation. Please see the HTML documentation for the table coefficients. - \renewcommand{\arraystretch}{1.5} - \begin{array}{r|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}{400} & -\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{92}{100} & \frac{3016520224154}{10081342136671} & 0 & \frac{30586259806659}{12414158314087} & -\frac{22760509404356}{11113319521817} & \frac{41}{200} & 0 & 0 & 0 \\ - \frac{24}{100} & \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 - 5 & -\frac{872700587467}{9133579230613} & 0 & 0 & \frac{22348218063261}{9555858737531} & -\frac{1143369518992}{8141816002931} & -\frac{39379526789629}{19018526304540} & \frac{32727382324388}{42900044865799} & \frac{41}{200} \\ - 4 & -\frac{975461918565}{9796059967033} & 0 & 0 & \frac{78070527104295}{32432590147079} & -\frac{548382580838}{3424219808633} & -\frac{33438840321285}{15594753105479} & \frac{3629800801594}{4656183773603} & \frac{4035322873751}{18575991585200} - \end{array} .. figure:: /figs/arkode/stab_region_22.png :scale: 50 % @@ -1612,22 +1898,28 @@ Both the method and embedding are A-stable; additionally the method is L-stable (this is the implicit portion of the 5th order ARK5(4)8L[2]SA method from :cite:p:`KenCarp:19`). -.. math:: +.. only:: html - \renewcommand{\arraystretch}{1.5} - \begin{array}{r|cccccccc} - 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ - \frac{4}{9} & \frac{2}{9} & \frac{2}{9} & 0 & 0 & 0 & 0 & 0 & 0 \\ - \frac{6456083330201}{8509243623797} & \frac{2366667076620}{8822750406821} & \frac{2366667076620}{8822750406821} & \frac{2}{9} & 0 & 0 & 0 & 0 & 0 \\ - \frac{1632083962415}{14158861528103} & -\frac{257962897183}{4451812247028} & -\frac{257962897183}{4451812247028} & \frac{128530224461}{14379561246022} & \frac{2}{9} & 0 & 0 & 0 & 0 \\ - \frac{6365430648612}{17842476412687} & -\frac{486229321650}{11227943450093} & -\frac{486229321650}{11227943450093} & -\frac{225633144460}{6633558740617} & \frac{1741320951451}{6824444397158} & \frac{2}{9} & 0 & 0 & 0 \\ - \frac{18}{25} & \frac{621307788657}{4714163060173} & \frac{621307788657}{4714163060173} & -\frac{125196015625}{3866852212004} & \frac{940440206406}{7593089888465} & \frac{961109811699}{6734810228204} & \frac{2}{9} & 0 & 0 \\ - \frac{191}{200} & \frac{2036305566805}{6583108094622} & \frac{2036305566805}{6583108094622} & -\frac{3039402635899}{4450598839912} & -\frac{1829510709469}{31102090912115} & -\frac{286320471013}{6931253422520} & \frac{8651533662697}{9642993110008} & \frac{2}{9} & 0 \\ - 1 & 0 & 0 & \frac{3517720773327}{20256071687669} & \frac{4569610470461}{17934693873752} & \frac{2819471173109}{11655438449929} & \frac{3296210113763}{10722700128969} & -\frac{1142099968913}{5710983926999} & \frac{2}{9} \\ - \hline - 5 & 0 & 0 & \frac{3517720773327}{20256071687669} & \frac{4569610470461}{17934693873752} & \frac{2819471173109}{11655438449929} & \frac{3296210113763}{10722700128969} & -\frac{1142099968913}{5710983926999} & \frac{2}{9} \\ - 4 & 0 & 0 & \frac{520639020421}{8300446712847} & \frac{4550235134915}{17827758688493} & \frac{1482366381361}{6201654941325} & \frac{5551607622171}{13911031047899} & -\frac{5266607656330}{36788968843917} & \frac{1074053359553}{5740751784926} - \end{array} + .. math:: + + \renewcommand{\arraystretch}{1.5} + \begin{array}{r|cccccccc} + 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ + \frac{4}{9} & \frac{2}{9} & \frac{2}{9} & 0 & 0 & 0 & 0 & 0 & 0 \\ + \frac{6456083330201}{8509243623797} & \frac{2366667076620}{8822750406821} & \frac{2366667076620}{8822750406821} & \frac{2}{9} & 0 & 0 & 0 & 0 & 0 \\ + \frac{1632083962415}{14158861528103} & -\frac{257962897183}{4451812247028} & -\frac{257962897183}{4451812247028} & \frac{128530224461}{14379561246022} & \frac{2}{9} & 0 & 0 & 0 & 0 \\ + \frac{6365430648612}{17842476412687} & -\frac{486229321650}{11227943450093} & -\frac{486229321650}{11227943450093} & -\frac{225633144460}{6633558740617} & \frac{1741320951451}{6824444397158} & \frac{2}{9} & 0 & 0 & 0 \\ + \frac{18}{25} & \frac{621307788657}{4714163060173} & \frac{621307788657}{4714163060173} & -\frac{125196015625}{3866852212004} & \frac{940440206406}{7593089888465} & \frac{961109811699}{6734810228204} & \frac{2}{9} & 0 & 0 \\ + \frac{191}{200} & \frac{2036305566805}{6583108094622} & \frac{2036305566805}{6583108094622} & -\frac{3039402635899}{4450598839912} & -\frac{1829510709469}{31102090912115} & -\frac{286320471013}{6931253422520} & \frac{8651533662697}{9642993110008} & \frac{2}{9} & 0 \\ + 1 & 0 & 0 & \frac{3517720773327}{20256071687669} & \frac{4569610470461}{17934693873752} & \frac{2819471173109}{11655438449929} & \frac{3296210113763}{10722700128969} & -\frac{1142099968913}{5710983926999} & \frac{2}{9} \\ + \hline + 5 & 0 & 0 & \frac{3517720773327}{20256071687669} & \frac{4569610470461}{17934693873752} & \frac{2819471173109}{11655438449929} & \frac{3296210113763}{10722700128969} & -\frac{1142099968913}{5710983926999} & \frac{2}{9} \\ + 4 & 0 & 0 & \frac{520639020421}{8300446712847} & \frac{4550235134915}{17827758688493} & \frac{1482366381361}{6201654941325} & \frac{5551607622171}{13911031047899} & -\frac{5266607656330}{36788968843917} & \frac{1074053359553}{5740751784926} + \end{array} + +.. only:: latex + + The Butcher table is too large to fit in the PDF version of this documentation. Please see the HTML documentation for the table coefficients. .. figure:: /figs/arkode/stab_region_37.png diff --git a/doc/arkode/guide/source/Constants.rst b/doc/arkode/guide/source/Constants.rst index 95b6a43125..9510f656a0 100644 --- a/doc/arkode/guide/source/Constants.rst +++ b/doc/arkode/guide/source/Constants.rst @@ -106,6 +106,16 @@ contains the ARKODE output constants. +-----------------------------------------------+------------------------------------------------------------+ | :index:`ARKODE_ARK548L2SAb_ERK_8_4_5` | Use the ARK-8-4-5b ERK method. | +-----------------------------------------------+------------------------------------------------------------+ + | :index:`ARKODE_SHU_OSHER_3_2_3` | Use the Shu-Osher-3-2-3 ERK method. | + +-----------------------------------------------+------------------------------------------------------------+ + | :index:`ARKODE_VERNER_9_5_6` | Use the Verner-9-5-6 ERK method. | + +-----------------------------------------------+------------------------------------------------------------+ + | :index:`ARKODE_VERNER_10_6_7` | Use the Verner-10-6-7 ERK method. | + +-----------------------------------------------+------------------------------------------------------------+ + | :index:`ARKODE_VERNER_13_7_8` | Use the Verner-13-7-8 ERK method. | + +-----------------------------------------------+------------------------------------------------------------+ + | :index:`ARKODE_VERNER_16_8_9` | Use the Verner-16-8-9 ERK method. | + +-----------------------------------------------+------------------------------------------------------------+ | :index:`ARKSTEP_DEFAULT_ERK_2` | Use ARKStep's default second-order ERK method | | | (ARKODE_HEUN_EULER_2_1_2). | +-----------------------------------------------+------------------------------------------------------------+ @@ -121,9 +131,15 @@ contains the ARKODE output constants. | :index:`ARKSTEP_DEFAULT_ERK_6` | Use ARKStep's default sixth-order ERK method | | | (ARKODE_VERNER_8_5_6). | +-----------------------------------------------+------------------------------------------------------------+ + | :index:`ARKSTEP_DEFAULT_ERK_7` | Use ARKStep's default seventh-order ERK method | + | | (ARKODE_VERNER_10_6_7). | + +-----------------------------------------------+------------------------------------------------------------+ | :index:`ARKSTEP_DEFAULT_ERK_8` | Use ARKStep's default eighth-order ERK method | | | (ARKODE_FEHLBERG_13_7_8). | +-----------------------------------------------+------------------------------------------------------------+ + | :index:`ARKSTEP_DEFAULT_ERK_9` | Use ARKStep's default ninth-order ERK method | + | | (ARKODE_VERNER_16_8_9). | + +-----------------------------------------------+------------------------------------------------------------+ | :index:`ERKSTEP_DEFAULT_2` | Use ERKStep's default second-order ERK method | | | (ARKODE_HEUN_EULER_2_1_2). | +-----------------------------------------------+------------------------------------------------------------+ @@ -139,9 +155,15 @@ contains the ARKODE output constants. | :index:`ERKSTEP_DEFAULT_6` | Use ERKStep's default sixth-order ERK method | | | (ARKODE_VERNER_8_5_6). | +-----------------------------------------------+------------------------------------------------------------+ + | :index:`ERKSTEP_DEFAULT_7` | Use ERKStep's default seventh-order ERK method | + | | (ARKODE_VERNER_10_6_7). | + +-----------------------------------------------+------------------------------------------------------------+ | :index:`ERKSTEP_DEFAULT_8` | Use ERKStep's default eighth-order ERK method | | | (ARKODE_FEHLBERG_13_7_8). | +-----------------------------------------------+------------------------------------------------------------+ + | :index:`ERKSTEP_DEFAULT_9` | Use ERKStep's default ninth-order ERK method | + | | (ARKODE_VERNER_16_8_9). | + +-----------------------------------------------+------------------------------------------------------------+ | | | +-----------------------------------------------+------------------------------------------------------------+ | **Implicit Butcher table specification** | | diff --git a/doc/arkode/guide/source/Introduction.rst b/doc/arkode/guide/source/Introduction.rst index c33aca7415..8a0e8702d2 100644 --- a/doc/arkode/guide/source/Introduction.rst +++ b/doc/arkode/guide/source/Introduction.rst @@ -64,8 +64,8 @@ for splittings tuned for use with optimal implicit solver algorithms. This framework allows for significant freedom over the constitutive methods used for each component, and ARKODE is packaged with a wide array of built-in methods for use. These built-in Butcher tables -include adaptive explicit methods of orders 2-8, adaptive implicit -methods of orders 2-5, and adaptive ImEx methods of orders 3-5. +include adaptive explicit methods of orders 2-9, adaptive implicit +methods of orders 2-5, and adaptive ImEx methods of orders 2-5. *ERKStep* focuses specifically on problems posed in explicit form, @@ -77,7 +77,7 @@ methods of orders 2-5, and adaptive ImEx methods of orders 3-5. allowing for increased computational efficiency and memory savings. The algorithms used in ERKStep are adaptive- and fixed-step explicit Runge--Kutta methods. As with ARKStep, the ERKStep module is packaged -with adaptive explicit methods of orders 2-8. +with adaptive explicit methods of orders 2-9. *SPRKStep* focuses on Hamiltonian systems posed in the form, @@ -156,10 +156,13 @@ Fixed scaling bug in ``SUNMatScaleAddI_Sparse`` for non-square matrices. Fixed missing soversions in some ``SUNLinearSolver`` and ``SUNNonlinearSolver`` CMake targets. -Added Fortran support for the LAPACK dense ``SUNLinearSolver`` implementation. - -Added the fourth order ERK method ``ARKODE_SOFRONIOU_SPALETTA_5_3_4``. +Added the third order ERK method ``ARKODE_SHU_OSHER_3_2_3``, the fourth order +ERK method ``ARKODE_SOFRONIOU_SPALETTA_5_3_4``, the sixth order ERK method +``ARKODE_VERNER_9_5_6``, the seventh order ERK method ``ARKODE_VERNER_10_6_7``, +the eighth order ERK method ``ARKODE_VERNER_13_7_8``, and the ninth order ERK +method ``ARKODE_VERNER_16_8_9``. +Added Fortran support for the LAPACK dense ``SUNLinearSolver`` implementation. Changes in v5.6.1 ----------------- diff --git a/doc/arkode/guide/source/Mathematics.rst b/doc/arkode/guide/source/Mathematics.rst index ec66f9838b..6c9b7ec4e2 100644 --- a/doc/arkode/guide/source/Mathematics.rst +++ b/doc/arkode/guide/source/Mathematics.rst @@ -375,10 +375,11 @@ described in the section :numref:`Butcher`. For mixed stiff/nonstiff problems, a user should provide both of the functions :math:`f^E` and :math:`f^I` that define the IVP system. For such problems, ARKStep currently implements the ARK methods proposed in -:cite:p:`KenCarp:03`, allowing for methods having order of accuracy :math:`q = -\{3,4,5\}` and embeddings with orders :math:`p = \{2, 3, 4\}`; -the tables for these methods are given in section :numref:`Butcher.additive`. -Additionally, user-defined ARK tables are supported. +:cite:p:`KenCarp:03,KenCarp:19,giraldo2013implicit`, allowing for methods having +order of accuracy :math:`q = \{2,3,4,5\}` and embeddings with orders :math:`p = +\{1,2,3,4\}`; the tables for these methods are given in section +:numref:`Butcher.additive`. Additionally, user-defined ARK tables are +supported. For nonstiff problems, a user may specify that :math:`f^I = 0`, i.e. the equation :eq:`ARKODE_IMEX_IVP` reduces to the non-split IVP @@ -391,8 +392,8 @@ In this scenario, the coefficients :math:`A^I=0`, :math:`c^I=0`, :math:`b^I=0` and :math:`\tilde{b}^I=0` in :eq:`ARKODE_ARK`, and the ARK methods reduce to classical :index:`explicit Runge--Kutta methods` (ERK). For these classes of methods, ARKODE provides coefficients -with orders of accuracy :math:`q = \{2,3,4,5,6,8\}`, with embeddings -of orders :math:`p = \{1,2,3,4,5,7\}`. These default to the methods in +with orders of accuracy :math:`q = \{2,3,4,5,6,7,8,9\}`, with embeddings +of orders :math:`p = \{1,2,3,4,5,6,7,8\}`. These default to the methods in sections :numref:`Butcher.Heun_Euler`, :numref:`Butcher.Bogacki_Shampine`, :numref:`Butcher.Zonneveld`, diff --git a/doc/shared/figs/arkode/shu_osher_erk_stab_region.png b/doc/shared/figs/arkode/shu_osher_erk_stab_region.png new file mode 100644 index 0000000000000000000000000000000000000000..25c75d6ed8cc9eb3921dfb22d5587850dcf37eb6 GIT binary patch literal 24768 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 literal 0 HcmV?d00001 diff --git a/doc/shared/figs/arkode/v76_erk_stab_region.png b/doc/shared/figs/arkode/v76_erk_stab_region.png new file mode 100644 index 0000000000000000000000000000000000000000..eed5da6a7cf6f59b922167b3e0fc3e13f76cf8e3 GIT binary patch literal 24295 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 X8ysxc)~uT$uDjRd0HeUz;lh6b^WdYU literal 0 HcmV?d00001 diff --git a/doc/shared/figs/arkode/v87_erk_stab_region.png b/doc/shared/figs/arkode/v87_erk_stab_region.png new file mode 100644 index 0000000000000000000000000000000000000000..237f215969ad967810c923a1baf45812743fde5d GIT binary patch literal 24583 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 X?jTmpRW9M3AmWs@xjj|5*DLlvT_1t= literal 0 HcmV?d00001 diff --git a/doc/shared/figs/arkode/v98_erk_stab_region.png b/doc/shared/figs/arkode/v98_erk_stab_region.png new file mode 100644 index 0000000000000000000000000000000000000000..cfbf657c42f16d19e58b8bfa6a0d27193c3c5329 GIT binary patch literal 24583 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 ZvfM$enyXyGJ3+)LYjb<5aIaVFe*n4yfq4J` literal 0 HcmV?d00001 diff --git a/doc/shared/sundials.bib b/doc/shared/sundials.bib index af8882cc04..7e9bf27d08 100644 --- a/doc/shared/sundials.bib +++ b/doc/shared/sundials.bib @@ -445,9 +445,9 @@ @book{HaWa:91 address = {Berlin}, year = 1991, } -@book{HaWa:06, -author = {Hairer, Ernst and Wanner, Gerhard and Lubich, Christian}, -title = {{Geometric Numerical Integration, Structure-Preserving Algorithms for Ordinary Differential Equations}}, +@book{HaWa:06, +author = {Hairer, Ernst and Wanner, Gerhard and Lubich, Christian}, +title = {{Geometric Numerical Integration, Structure-Preserving Algorithms for Ordinary Differential Equations}}, publisher = {Springer Series in Computational Mathematics}, doi = {10.1007/3-540-30666-8}, year = {2006} @@ -1806,6 +1806,17 @@ @article{HaSo:05 publisher={SIAM} } +@article{FCS:21, + author = {Imre Fekete and Sidafa Conde and John N. Shadid}, + title = {Embedded pairs for optimal explicit strong stability preserving {Runge--Kutta} methods}, + journal = {Journal of Computational and Applied Mathematics}, + volume = {412}, + pages = {114325}, + year = {2022}, + issn = {0377-0427}, + doi = {10.1016/j.cam.2022.114325} +} + @article{FFKMS:14, author = {Falgout, R.D. and Friedhoff, S. and Kolev, TZ.V. and MacLachlan, S.P. and Schroder, J.B.}, title = {Parallel Time Integration with Multigrid}, @@ -1998,6 +2009,18 @@ @article{Shampine:80 doi = {10.1137/0901005} } +@article{ShOs:88, + author = {Chi-Wang Shu and Stanley Osher}, + title = {Efficient implementation of essentially non-oscillatory shock-capturing schemes}, + journal = {Journal of Computational Physics}, + volume = {77}, + number = {2}, + pages = {439-471}, + year = {1988}, + issn = {0021-9991}, + doi = {10.1016/0021-9991(88)90177-5} +} + @article{Sod:98, author = {Soderlind, G.}, title = {The automatic control of numerical integration}, @@ -2076,6 +2099,17 @@ @article{Ver:78 doi = {10.1137/0715051} } +@article{Ver:10, + author = {Verner, J.H}, + title = {Numerically optimal {Runge–Kutta} pairs with interpolants}, + journal = {Numerical Algorithms}, + volume = {53}, + number = {2}, + pages = {383-396}, + year = {2010}, + doi = {10.1007/s11075-009-9290-3} +} + @article{Ruth:93, title = {A canonical integration technique}, author = {Ruth, Ronald D}, diff --git a/include/arkode/arkode_arkstep.h b/include/arkode/arkode_arkstep.h index a4951bb888..361d637e72 100644 --- a/include/arkode/arkode_arkstep.h +++ b/include/arkode/arkode_arkstep.h @@ -41,7 +41,9 @@ static const int ARKSTEP_DEFAULT_ERK_3 = ARKODE_BOGACKI_SHAMPINE_4_2_3; static const int ARKSTEP_DEFAULT_ERK_4 = ARKODE_ZONNEVELD_5_3_4; static const int ARKSTEP_DEFAULT_ERK_5 = ARKODE_CASH_KARP_6_4_5; static const int ARKSTEP_DEFAULT_ERK_6 = ARKODE_VERNER_8_5_6; +static const int ARKSTEP_DEFAULT_ERK_7 = ARKODE_VERNER_10_6_7; static const int ARKSTEP_DEFAULT_ERK_8 = ARKODE_FEHLBERG_13_7_8; +static const int ARKSTEP_DEFAULT_ERK_9 = ARKODE_VERNER_16_8_9; /* implicit */ static const int ARKSTEP_DEFAULT_DIRK_2 = ARKODE_SDIRK_2_1_2; diff --git a/include/arkode/arkode_butcher_erk.h b/include/arkode/arkode_butcher_erk.h index 1fa298ae75..cd552f58e3 100644 --- a/include/arkode/arkode_butcher_erk.h +++ b/include/arkode/arkode_butcher_erk.h @@ -64,7 +64,7 @@ extern "C" { /* DEPRECATED MIN_ERK_NUM: use ARKODE_MIN_ERK_NUM */ #define MIN_ERK_NUM 0 /* DEPRECATED MAX_ERK_NUM: use ARKODE_MAX_ERK_NUM */ -#define MAX_ERK_NUM 14 +#define MAX_ERK_NUM 21 typedef enum { ARKODE_ERK_NONE = -1, /* ensure enum is signed int */ @@ -86,7 +86,12 @@ typedef enum { ARKODE_ARK548L2SAb_ERK_8_4_5, ARKODE_ARK2_ERK_3_1_2, ARKODE_SOFRONIOU_SPALETTA_5_3_4, - ARKODE_MAX_ERK_NUM = ARKODE_SOFRONIOU_SPALETTA_5_3_4 + ARKODE_SHU_OSHER_3_2_3, + ARKODE_VERNER_9_5_6, + ARKODE_VERNER_10_6_7, + ARKODE_VERNER_13_7_8, + ARKODE_VERNER_16_8_9, + ARKODE_MAX_ERK_NUM = ARKODE_VERNER_16_8_9 } ARKODE_ERKTableID; /* Accessor routine to load built-in ERK table */ diff --git a/include/arkode/arkode_erkstep.h b/include/arkode/arkode_erkstep.h index 9f5b56f072..de656604d1 100644 --- a/include/arkode/arkode_erkstep.h +++ b/include/arkode/arkode_erkstep.h @@ -36,7 +36,9 @@ static const int ERKSTEP_DEFAULT_3 = ARKODE_BOGACKI_SHAMPINE_4_2_3; static const int ERKSTEP_DEFAULT_4 = ARKODE_ZONNEVELD_5_3_4; static const int ERKSTEP_DEFAULT_5 = ARKODE_CASH_KARP_6_4_5; static const int ERKSTEP_DEFAULT_6 = ARKODE_VERNER_8_5_6; +static const int ERKSTEP_DEFAULT_7 = ARKODE_VERNER_10_6_7; static const int ERKSTEP_DEFAULT_8 = ARKODE_FEHLBERG_13_7_8; +static const int ERKSTEP_DEFAULT_9 = ARKODE_VERNER_16_8_9; #ifndef DEFAULT_ERK_2 /* DEPRECATED DEFAULT_ERK_2: use ERKSTEP_DEFAULT_2 */ diff --git a/src/arkode/arkode_arkstep.c b/src/arkode/arkode_arkstep.c index e1245168e0..ba5e4c3885 100644 --- a/src/arkode/arkode_arkstep.c +++ b/src/arkode/arkode_arkstep.c @@ -2031,14 +2031,19 @@ int arkStep_SetButcherTables(ARKodeMem ark_mem) etable = ARKSTEP_DEFAULT_ERK_6; break; case(7): + etable = ARKSTEP_DEFAULT_ERK_7; + break; case(8): etable = ARKSTEP_DEFAULT_ERK_8; break; + case(9): + etable = ARKSTEP_DEFAULT_ERK_9; + break; default: /* no available method, set default */ arkProcessError(ark_mem, ARK_ILL_INPUT, "ARKODE::ARKStep", "arkStep_SetButcherTables", - "No explicit method at requested order, using q=6."); - etable = ARKSTEP_DEFAULT_ERK_6; + "No explicit method at requested order, using q=9."); + etable = ARKSTEP_DEFAULT_ERK_9; break; } diff --git a/src/arkode/arkode_butcher_erk.def b/src/arkode/arkode_butcher_erk.def index 5cfb3f2af6..ba719b24bc 100644 --- a/src/arkode/arkode_butcher_erk.def +++ b/src/arkode/arkode_butcher_erk.def @@ -36,11 +36,12 @@ are known precisely enough for use in quad precision (128-bit) calculations. - imeth QP - -------------------------------- + imeth QP + -------------------------------------- ARKODE_HEUN_EULER_2_1_2 Y ARKODE_BOGACKI_SHAMPINE_4_2_3 Y ARKODE_ARK324L2SA_ERK_4_2_3* N + ARKODE_SHU_OSHER_3_2_3 Y ARKODE_SOFRONIOU_SPALETTA_5_3_4 Y ARKODE_ZONNEVELD_5_3_4 Y ARKODE_ARK436L2SA_ERK_6_3_4* N @@ -54,9 +55,13 @@ ARKODE_VERNER_8_5_6 Y ARKODE_FEHLBERG_13_7_8 Y ARKODE_ARK2_ERK_3_1_2 Y - -------------------------------- + ARKODE_VERNER_9_5_6 Y + ARKODE_VERNER_10_6_7 Y + ARKODE_VERNER_13_7_8 Y + ARKODE_VERNER_16_8_9 Y + -------------------------------------- ARKODE_KNOTH_WOLKE_3_3^ Y - -------------------------------- + -------------------------------------- */ ARK_BUTCHER_TABLE(ARKODE_ERK_NONE, { @@ -166,6 +171,29 @@ ARK_BUTCHER_TABLE(ARKODE_ARK324L2SA_ERK_4_2_3, { /* ARK3(2)4L[2]SA-ERK */ return B; }) +ARK_BUTCHER_TABLE(ARKODE_SHU_OSHER_3_2_3, { /* Shu-Osher-ERK */ + ARKodeButcherTable B = ARKodeButcherTable_Alloc(3, SUNTRUE); + B->q = 3; + B->p = 2; + + B->A[1][0] = RCONST(1.0); + B->A[2][0] = RCONST(1.0)/RCONST(4.0); + B->A[2][1] = RCONST(1.0)/RCONST(4.0); + + B->b[0] = RCONST(1.0)/RCONST(6.0); + B->b[1] = RCONST(1.0)/RCONST(6.0); + B->b[2] = RCONST(2.0)/RCONST(3.0); + + B->d[0] = RCONST(291485418878409.0)/RCONST(1.0e15); + B->d[1] = RCONST(291485418878409.0)/RCONST(1.0e15); + B->d[2] = RCONST(208514581121591.0)/RCONST(5.0e14); + + B->c[1] = RCONST(1.0); + B->c[2] = RCONST(1.0)/RCONST(2.0); + + return B; + }) + ARK_BUTCHER_TABLE(ARKODE_SOFRONIOU_SPALETTA_5_3_4, { /* Sofroniou-Spaletta-ERK */ ARKodeButcherTable B = ARKodeButcherTable_Alloc(5, SUNTRUE); B->q = 4; @@ -642,6 +670,350 @@ ARK_BUTCHER_TABLE(ARKODE_VERNER_8_5_6, { /* Verner-6-5 */ return B; }) +ARK_BUTCHER_TABLE(ARKODE_VERNER_9_5_6, { /* Verner-6-5b (DOI: 10.1007/s11075-009-9290-3) */ + ARKodeButcherTable B = ARKodeButcherTable_Alloc(9, SUNTRUE); + B->q = 6; + B->p = 5; + + B->A[1][0] = RCONST(0.06); + B->A[2][0] = RCONST(0.01923996296296296218408805600574851268902); + B->A[2][1] = RCONST(0.07669337037037037008158080197972594760358); + B->A[3][0] = RCONST(0.035975); + B->A[3][2] = RCONST(0.107925); + B->A[4][0] = RCONST(1.318683415233148359391179837984964251518); + B->A[4][2] = RCONST(-5.042058063628561903612990136025473475456); + B->A[4][3] = RCONST(4.220674648395413619539340288611128926277); + B->A[5][0] = RCONST(-41.87259166432750845388000016100704669952); + B->A[5][2] = RCONST(159.432562163137475863550207577645778656); + B->A[5][3] = RCONST(-122.1192135650100425436903606168925762177); + B->A[5][4] = RCONST(5.531743066200053071668207849143072962761); + B->A[6][0] = RCONST(-54.43015693531650356362661113962531089783); + B->A[6][2] = RCONST(207.0672513650184782818541862070560455322); + B->A[6][3] = RCONST(-158.6108137845899932472093496471643447876); + B->A[6][4] = RCONST(6.99181658595024213553870140458457171917); + B->A[6][5] = RCONST(-0.01859723106220323093906721112489321967587); + B->A[7][0] = RCONST(-54.66374178728197819054912542924284934998); + B->A[7][2] = RCONST(207.9528062553893619224254507571458816528); + B->A[7][3] = RCONST(-159.2889574744995115906931459903717041016); + B->A[7][4] = RCONST(7.018743740796944408089075295720249414444); + B->A[7][5] = RCONST(-0.01833878590504572220210022237552038859576); + B->A[7][6] = RCONST(-0.000511948499788209866745436471546781831421); + B->A[8][0] = RCONST(0.0343895786835703570760713887466408777982); + B->A[8][3] = RCONST(0.2582624555633503682372520415810868144035); + B->A[8][4] = RCONST(0.4209371189673536961528554911637911573052); + B->A[8][5] = RCONST(4.405396469669310199890333024086430668831); + B->A[8][6] = RCONST(-176.4831190242986451721662888303399085999); + B->A[8][7] = RCONST(172.3641334014150743314530700445175170898); + + B->b[0] = RCONST(0.0343895786835703570760713887466408777982); + B->b[3] = RCONST(0.2582624555633503682372520415810868144035); + B->b[4] = RCONST(0.4209371189673536961528554911637911573052); + B->b[5] = RCONST(4.405396469669310199890333024086430668831); + B->b[6] = RCONST(-176.4831190242986451721662888303399085999); + B->b[7] = RCONST(172.3641334014150743314530700445175170898); + + B->d[0] = RCONST(0.04909967648382489863179145572757988702506); + B->d[3] = RCONST(0.2251112229516524232408869465871248394251); + B->d[4] = RCONST(0.4694682253029561769253064085205551236868); + B->d[5] = RCONST(0.806579224998886790132246460416354238987); + B->d[7] = RCONST(-0.607119489177795901291290192602900788188); + B->d[8] = RCONST(0.05686113944047568868889186433079885318875); + + B->c[1] = RCONST(0.06); + B->c[2] = RCONST(0.09593333333333333333333333333333333333333); + B->c[3] = RCONST(0.1439); + B->c[4] = RCONST(0.4973); + B->c[5] = RCONST(0.9725); + B->c[6] = RCONST(0.9995); + B->c[7] = RCONST(1.0); + B->c[8] = RCONST(1.0); + return B; + }) + +ARK_BUTCHER_TABLE(ARKODE_VERNER_10_6_7, { /* Verner-7-6 (DOI: 10.1007/s11075-009-9290-3) */ + ARKodeButcherTable B = ARKodeButcherTable_Alloc(10, SUNTRUE); + B->q = 7; + B->p = 6; + + B->A[1][0] = RCONST(0.005); + B->A[2][0] = RCONST(-1.076790123456790123456790123456790123457); + B->A[2][1] = RCONST(1.185679012345679012345679012345679012346); + B->A[3][0] = RCONST(0.04083333333333333333333333333333333333333); + B->A[3][2] = RCONST(0.1225); + B->A[4][0] = RCONST(0.6389139236255726439495106205868069082499); + B->A[4][2] = RCONST(-2.45567263822365688952231721486896276474); + B->A[4][3] = RCONST(2.272258714598084150537715686368755996227); + B->A[5][0] = RCONST(-2.661577375018756796976049372460693120956); + B->A[5][2] = RCONST(10.80451388645613874928130826447159051895); + B->A[5][3] = RCONST(-8.353914657396199316963247838430106639862); + B->A[5][4] = RCONST(0.8204875949566569071080834874010179191828); + B->A[6][0] = RCONST(6.067741434696771740675558248767629265785); + B->A[6][2] = RCONST(-24.71127363591108760942915978375822305679); + B->A[6][3] = RCONST(20.42751793078889477328630164265632629395); + B->A[6][4] = RCONST(-1.906157978816647169395537275704555213451); + B->A[6][5] = RCONST(1.006172249242067939789535557792987674475); + B->A[7][0] = RCONST(12.05467007625320441377425595419481396675); + B->A[7][2] = RCONST(-49.75478495046898785858502378687262535095); + B->A[7][3] = RCONST(41.14288863860467415634047938510775566101); + B->A[7][4] = RCONST(-4.461760149974003830664059933042153716087); + B->A[7][5] = RCONST(2.042334822239175284863677006796933710575); + B->A[7][6] = RCONST(-0.0983484366540610666085342472797492519021); + B->A[8][0] = RCONST(10.13814652288180795380867493804544210434); + B->A[8][2] = RCONST(-42.64113603171750099818382295779883861542); + B->A[8][3] = RCONST(35.76384003992257021309342235326766967773); + B->A[8][4] = RCONST(-4.348022840392907539808220462873578071594); + B->A[8][5] = RCONST(2.009862268377035743327496675192378461361); + B->A[8][6] = RCONST(0.3487490460338271702767087845131754875183); + B->A[8][7] = RCONST(-0.2714390051048312657577810114162275567651); + B->A[9][0] = RCONST(-45.03007203429867644217665656469762325287); + B->A[9][2] = RCONST(187.3272437654588884470285847783088684082); + B->A[9][3] = RCONST(-154.0288236935018630902050063014030456543); + B->A[9][4] = RCONST(18.56465306347536170505918562412261962891); + B->A[9][5] = RCONST(-7.141809679295079149596858769655227661133); + B->A[9][6] = RCONST(1.3088085781613787439425777847645804286); + + B->b[0] = RCONST(0.04715561848627222024665783806085528340191); + B->b[3] = RCONST(0.2575056429843415317648691598151344805956); + B->b[4] = RCONST(0.2621665397741262393260797125549288466573); + B->b[5] = RCONST(0.1521609265673855848621798259046045131981); + B->b[6] = RCONST(0.4939969170032484924171001239301403984427); + B->b[7] = RCONST(-0.2943031171403250323415079492406221106648); + B->b[8] = RCONST(0.08131747232495110944139327102675451897085); + + B->d[0] = RCONST(0.04460860660634117375034080055229424033314); + B->d[3] = RCONST(0.2671640378571372709259890143584925681353); + B->d[4] = RCONST(0.2201018300177293163244485185714438557625); + B->d[5] = RCONST(0.2188431703143156881186115469972719438374); + B->d[6] = RCONST(0.2289871705411202773561285539472009986639); + B->d[9] = RCONST(0.02029518466335628046337546948052477091551); + + B->c[1] = RCONST(0.005); + B->c[2] = RCONST(0.1088888888888888888888888888888888888889); + B->c[3] = RCONST(0.1633333333333333333333333333333333333333); + B->c[4] = RCONST(0.4555); + B->c[5] = RCONST(0.6095094489978380991601625282783061265945); + B->c[6] = RCONST(0.884); + B->c[7] = RCONST(0.925); + B->c[8] = RCONST(1.0); + B->c[9] = RCONST(1.0); + return B; + }) + +ARK_BUTCHER_TABLE(ARKODE_VERNER_13_7_8, { /* Verner-8-7 (DOI: 10.1007/s11075-009-9290-3) */ + ARKodeButcherTable B = ARKodeButcherTable_Alloc(13, SUNTRUE); + B->q = 8; + B->p = 7; + + B->A[1][0] = RCONST(0.05); + B->A[2][0] = RCONST(-0.006993164062499999597544153573380754096434); + B->A[2][1] = RCONST(0.1135556640625000057731597280508140102029); + B->A[3][0] = RCONST(0.0399609375); + B->A[3][2] = RCONST(0.1198828125); + B->A[4][0] = RCONST(0.3613975628004575391116759419674053788185); + B->A[4][2] = RCONST(-1.341524066700492845427561405813321471214); + B->A[4][3] = RCONST(1.370126503900035208616259296832140535116); + B->A[5][0] = RCONST(0.04904720279720279491053602782812959048897); + B->A[5][3] = RCONST(0.2350972042214404811311112553084967657924); + B->A[5][4] = RCONST(0.1808555929813567275665775468951324000955); + B->A[6][0] = RCONST(0.06169289044289043982827180911954201292247); + B->A[6][3] = RCONST(0.112365683146402772774052891691098921001); + B->A[6][4] = RCONST(-0.03885046071451366683779937716280983295292); + B->A[6][5] = RCONST(0.01979188712522046006414555563424073625356); + B->A[7][0] = RCONST(-1.767630240222326953869469434721395373344); + B->A[7][3] = RCONST(-62.5); + B->A[7][4] = RCONST(-6.061889377376669330033109872601926326752); + B->A[7][5] = RCONST(5.6508231982227634659921022830531001091); + B->A[7][6] = RCONST(65.6216964193762350987526588141918182373); + B->A[8][0] = RCONST(-1.180945066554970779293398663867264986038); + B->A[8][3] = RCONST(-41.50473441114321104805640061385929584503); + B->A[8][4] = RCONST(-4.434438319103724879255423729773610830307); + B->A[8][5] = RCONST(4.26040818858613334896290325559675693512); + B->A[8][6] = RCONST(43.75364022446171219371535698883235454559); + B->A[8][7] = RCONST(0.007871425489912309975126802896738809067756); + B->A[9][0] = RCONST(-1.281405999441488363643770753697026520967); + B->A[9][3] = RCONST(-45.04713996013986587740873801521956920624); + B->A[9][4] = RCONST(-4.731362069449575713520061981398612260818); + B->A[9][5] = RCONST(4.514967016593807613844546722248196601868); + B->A[9][6] = RCONST(47.4490955717298490412758837919682264328); + B->A[9][7] = RCONST(0.01059228297111661047658071055366235668771); + B->A[9][8] = RCONST(-0.005746842263844615696088968803678653785028); + B->A[10][0] = RCONST(-1.724470134262485077059068316884804517031); + B->A[10][3] = RCONST(-60.92349008483054007001555874012410640717); + B->A[10][4] = RCONST(-5.951518376222391992769189528189599514008); + B->A[10][5] = RCONST(5.55652373069845673114741657627746462822); + B->A[10][6] = RCONST(63.98301198033306036450085230171680450439); + B->A[10][7] = RCONST(0.01464202825041496271174512600055095390417); + B->A[10][8] = RCONST(0.06460408772358203211005900357122300192714); + B->A[10][9] = RCONST(-0.07930323169008879347074980614706873893738); + B->A[11][0] = RCONST(-3.30162266774707902072805154602974653244); + B->A[11][3] = RCONST(-118.0112723597525103969019255600869655609); + B->A[11][4] = RCONST(-10.14142238845611210251718148356303572655); + B->A[11][5] = RCONST(9.139311332232058049385159392841160297394); + B->A[11][6] = RCONST(123.3759428284042769519146531820297241211); + B->A[11][7] = RCONST(4.623244378874581173022306757047772407532); + B->A[11][8] = RCONST(-3.383277738068201756505004595965147018433); + B->A[11][9] = RCONST(4.527592100324618229478801367804408073425); + B->A[11][10] = RCONST(-5.828495485811623133542980212951079010963); + B->A[12][0] = RCONST(-3.039515033766308604867845133412629365921); + B->A[12][3] = RCONST(-109.260868089417627402326615992933511734); + B->A[12][4] = RCONST(-9.290642497400291688336437800899147987366); + B->A[12][5] = RCONST(8.43050498176491203139448771253228187561); + B->A[12][6] = RCONST(114.2010010378331372749016736634075641632); + B->A[12][7] = RCONST(-0.9637271342145479202656588313402608036995); + B->A[12][8] = RCONST(-5.034884088802189516798080148873850703239); + B->A[12][9] = RCONST(5.958130824002923375815043982584029436111); + + B->b[0] = RCONST(0.04427989419007950788742533632103004492819); + B->b[5] = RCONST(0.3541049391724448991425333588267676532269); + B->b[6] = RCONST(0.2479692154956437688539949704136233776808); + B->b[7] = RCONST(-15.69420203883808540012978482991456985474); + B->b[8] = RCONST(25.08406496555856435293208051007241010666); + B->b[9] = RCONST(-31.73836778626027665950459777377545833588); + B->b[10] = RCONST(22.93828327398878386134128959383815526962); + B->b[11] = RCONST(-0.2361324633071542056228508954518474638462); + + B->d[0] = RCONST(0.04431261522908979538781792939516890328377); + B->d[5] = RCONST(0.3546095642343226606030270886549260467291); + B->d[6] = RCONST(0.2478480431366653080615947146725375205278); + B->d[7] = RCONST(4.448134732475784502980786783155053853989); + B->d[8] = RCONST(19.8468863661187349123338208300992846489); + B->d[9] = RCONST(-23.58162337746561831863800762221217155457); + B->d[12] = RCONST(-0.3601679437289775354003040774841792881489); + + B->c[1] = RCONST(0.05); + B->c[2] = RCONST(0.1065625); + B->c[3] = RCONST(0.15984375); + B->c[4] = RCONST(0.39); + B->c[5] = RCONST(0.465); + B->c[6] = RCONST(0.155); + B->c[7] = RCONST(0.943); + B->c[8] = RCONST(0.9018020417358569851273841777583584189415); + B->c[9] = RCONST(0.909); + B->c[10] = RCONST(0.94); + B->c[11] = RCONST(1.0); + B->c[12] = RCONST(1.0); + return B; + }) + +ARK_BUTCHER_TABLE(ARKODE_VERNER_16_8_9, { /* Verner-9-8 (DOI: 10.1007/s11075-009-9290-3) */ + ARKodeButcherTable B = ARKodeButcherTable_Alloc(16, SUNTRUE); + B->q = 9; + B->p = 8; + + B->A[1][0] = RCONST(0.3462e-1); + B->A[2][0] = RCONST(-0.389335438857287327017042687229284478532e-1); + B->A[2][1] = RCONST(0.1359578945245091786499878854939346230295); + B->A[3][0] = RCONST(0.3638413148954266723060635628912731569111e-1); + B->A[3][2] = RCONST(0.1091523944686280016918190688673819470733); + B->A[4][0] = RCONST(2.025763914393969636805657604282571047511); + B->A[4][2] = RCONST(-7.638023836496292020387602153091964592952); + B->A[4][3] = RCONST(6.173259922102322383581944548809393545442); + B->A[5][0] = RCONST(0.5112275589406060872792270881648288397197e-1); + B->A[5][3] = RCONST(0.1770823794555021537929910813839068684087); + B->A[5][4] = RCONST(0.80277624092225014536138698108025283759e-3); + B->A[6][0] = RCONST(0.1316006357975216279279871693164256985334); + B->A[6][3] = RCONST(-0.2957276252669636417685183174672273730699); + B->A[6][4] = RCONST(0.878137803564295237421124704053886667082e-1); + B->A[6][5] = RCONST(0.6213052975225274774321435005639430026100); + B->A[7][0] = RCONST(0.7166666666666666666666666666666666666667e-1); + B->A[7][5] = RCONST(0.3305533578915319409260346730051472207728); + B->A[7][6] = RCONST(0.2427799754418013924072986603281861125606); + B->A[8][0] = RCONST(0.7180664062500000000000000000000000000000e-1); + B->A[8][5] = RCONST(0.3294380283228177160744825466257672816401); + B->A[8][6] = RCONST(0.1165190029271822839255174533742327183599); + B->A[8][7] = RCONST(-0.3401367187500000000000000000000000000000e-1); + B->A[9][0] = RCONST(0.4836757646340646986611287718844085773549e-1); + B->A[9][5] = RCONST(0.3928989925676163974333190042057047002852e-1); + B->A[9][6] = RCONST(0.1054740945890344608263649267140088017604); + B->A[9][7] = RCONST(-0.2143865284648312665982642293830533996214e-1); + B->A[9][8] = RCONST(-0.1041229174627194437759832813847147895623); + B->A[10][0] = RCONST(-0.2664561487201478635337289243849737340534e-1); + B->A[10][5] = RCONST(0.3333333333333333333333333333333333333333e-1); + B->A[10][6] = RCONST(-0.1631072244872467239162704487554706387141); + B->A[10][7] = RCONST(0.3396081684127761199487954930015522928244e-1); + B->A[10][8] = RCONST(0.1572319413814626097110769806810024118077); + B->A[10][9] = RCONST(0.2152267478031879552303534778794770376960); + B->A[11][0] = RCONST(0.3689009248708622334786359863227633989718e-1); + B->A[11][5] = RCONST(-0.1465181576725542928653609891758501156785); + B->A[11][6] = RCONST(0.2242577768172024345345469822625833796001); + B->A[11][7] = RCONST(0.2294405717066072637090897902753790803034e-1); + B->A[11][8] = RCONST(-0.35850052905728761357394424889330334334e-2); + B->A[11][9] = RCONST(0.8669223316444385506869203619044453906053e-1); + B->A[11][10] = RCONST(0.4383840651968337846196219974168630120572); + B->A[12][0] = RCONST(-0.4866012215113340846662212357570395295088); + B->A[12][5] = RCONST(-6.304602650282852990657772792012007122988); + B->A[12][6] = RCONST(-0.281245618289472564778284183790118418111); + B->A[12][7] = RCONST(-2.679019236219849057687906597489223155566); + B->A[12][8] = RCONST(0.518815663924157511565311164615012522024); + B->A[12][9] = RCONST(1.365353187603341710683633635235238678626); + B->A[12][10] = RCONST(5.885091088503946585721274891680604830712); + B->A[12][11] = RCONST(2.802808786272062889819965117517532194812); + B->A[13][0] = RCONST(0.4185367457753471441471025246471931649633); + B->A[13][5] = RCONST(6.724547581906459363100870806514855026676); + B->A[13][6] = RCONST(-0.425444280164611790606983409697113064616); + B->A[13][7] = RCONST(3.343279153001265577811816947557982637749); + B->A[13][8] = RCONST(0.617081663117537759528421117507709784737); + B->A[13][9] = RCONST(-0.929966123939932833937749523988800852013); + B->A[13][10] = RCONST(-6.099948804751010722472962837945508844846); + B->A[13][11] = RCONST(-3.002206187889399044804158084895173690015); + B->A[13][12] = RCONST(0.2553202529443445472336424602988558373637); + B->A[14][0] = RCONST(-0.779374086122884664644623040843840506343); + B->A[14][5] = RCONST(-13.93734253810777678786523664804936051203); + B->A[14][6] = RCONST(1.252048853379357320949735183924200895136); + B->A[14][7] = RCONST(-14.69150040801686878191527989293072091588); + B->A[14][8] = RCONST(-0.494705058533141685655191992136962873577); + B->A[14][9] = RCONST(2.242974909146236657906984549543692874755); + B->A[14][10] = RCONST(13.36789380382864375813864978592679139881); + B->A[14][11] = RCONST(14.39665048665068644512236935340272139005); + B->A[14][12] = RCONST(-0.7975813331776800379127866056663258667437); + B->A[14][13] = RCONST(0.4409353709534277758753793068298041158235); + B->A[15][0] = RCONST(2.058051337466886442151242368989994043993); + B->A[15][5] = RCONST(22.35793772796803295519317565842520212899); + B->A[15][6] = RCONST(0.90949810997556332745009198137971890783); + B->A[15][7] = RCONST(35.89110098240264104710550686568482456493); + B->A[15][8] = RCONST(-3.442515027624453437985000403608480262211); + B->A[15][9] = RCONST(-4.865481358036368826566013387928704014496); + B->A[15][10] = RCONST(-18.90980381354342625688427480879773032857); + B->A[15][11] = RCONST(-34.26354448030451782929251177395134170515); + B->A[15][12] = RCONST(1.264756521695642578827783499806516664686); + + B->b[0] = RCONST(0.1461197685842315252051541915018784713459e-1); + B->b[7] = RCONST(-0.3915211862331339089410228267288242030810); + B->b[8] = RCONST(0.2310932500289506415909675644868993669908); + B->b[9] = RCONST(0.1274766769992852382560589467488989175618); + B->b[10] = RCONST(0.2246434176204157731566981937082069688984); + B->b[11] = RCONST(0.5684352689748512932705226972873692126743); + B->b[12] = RCONST(0.5825871557215827200814768021863420902155e-1); + B->b[13] = RCONST(0.1364317403482215641609022744494239843327); + B->b[14] = RCONST(0.3057013983082797397721005067920369646664e-1); + + B->d[0] = RCONST(0.1996996514886773085518508418098868756464e-1); + B->d[7] = RCONST(2.191499304949330054530747099310837524864); + B->d[8] = RCONST(0.8857071848208438030833722031786358862953e-1); + B->d[9] = RCONST(0.1140560234865965622484956605091432032674); + B->d[10] = RCONST(0.2533163805345107065564577734569651977347); + B->d[11] = RCONST(-2.056564386240941011158999594595981300493); + B->d[12] = RCONST(0.3408096799013119935160094894224543812830); + B->d[15] = RCONST(0.4834231373823958314376726739772871714902e-1); + + B->c[1] = RCONST(0.3462e-1); + B->c[2] = RCONST(0.9702435063878044594828361677100617517633e-1); + B->c[3] = RCONST(0.1455365259581706689224254251565092627645); + B->c[4] = RCONST(0.561); + B->c[5] = RCONST(0.2290079115904850126662751771814700052182); + B->c[6] = RCONST(0.5449920884095149873337248228185299947818); + B->c[7] = RCONST(0.645); + B->c[8] = RCONST(0.48375); + B->c[9] = RCONST(0.6757e-1); + B->c[10] = RCONST(0.25); + B->c[11] = RCONST(0.6590650618730998549405331618649220295334); + B->c[12] = RCONST(0.8206); + B->c[13] = RCONST(0.9012); + B->c[14] = RCONST(1.0); + B->c[15] = RCONST(1.0); + return B; + }) + ARK_BUTCHER_TABLE(ARKODE_FEHLBERG_13_7_8, { /* Fehlberg-8-7 */ ARKodeButcherTable B = ARKodeButcherTable_Alloc(13, SUNTRUE); B->q = 8; diff --git a/src/arkode/arkode_erkstep.c b/src/arkode/arkode_erkstep.c index f21aa2602b..ebc413e576 100644 --- a/src/arkode/arkode_erkstep.c +++ b/src/arkode/arkode_erkstep.c @@ -957,14 +957,19 @@ int erkStep_SetButcherTable(ARKodeMem ark_mem) etable = ERKSTEP_DEFAULT_6; break; case(7): + etable = ERKSTEP_DEFAULT_7; + break; case(8): etable = ERKSTEP_DEFAULT_8; break; + case(9): + etable = ERKSTEP_DEFAULT_9; + break; default: /* no available method, set default */ arkProcessError(ark_mem, ARK_ILL_INPUT, "ARKODE::ERKStep", "erkStep_SetButcherTable", - "No explicit method at requested order, using q=6."); - etable = ERKSTEP_DEFAULT_6; + "No explicit method at requested order, using q=9."); + etable = ERKSTEP_DEFAULT_9; break; } diff --git a/test/answers b/test/answers index 8f1d469a42..37f4e6b5b6 160000 --- a/test/answers +++ b/test/answers @@ -1 +1 @@ -Subproject commit 8f1d469a426ffb562361ab2aa1702ad15194cb2c +Subproject commit 37f4e6b5b68e407ea302facba92883126dd39bf7 diff --git a/test/unit_tests/arkode/CXX_serial/ark_test_butcher.cpp b/test/unit_tests/arkode/CXX_serial/ark_test_butcher.cpp index 8ad033603d..3bf3f3e4c1 100644 --- a/test/unit_tests/arkode/CXX_serial/ark_test_butcher.cpp +++ b/test/unit_tests/arkode/CXX_serial/ark_test_butcher.cpp @@ -34,7 +34,9 @@ int main() { "ARKODE_ARK436L2SA_ERK_6_3_4", "ARKODE_SAYFY_ABURUB_6_3_4", "ARKODE_CASH_KARP_6_4_5", "ARKODE_FEHLBERG_6_4_5", "ARKODE_DORMAND_PRINCE_7_4_5", "ARKODE_ARK548L2SA_ERK_8_4_5", "ARKODE_VERNER_8_5_6", "ARKODE_FEHLBERG_13_7_8", "ARKODE_ARK437L2SA_ERK_7_3_4", - "ARKODE_ARK548L2SAb_ERK_8_4_5"}; + "ARKODE_ARK548L2SAb_ERK_8_4_5", "ARKODE_SOFRONIOU_SPALETTA_5_3_4", + "ARKODE_SHU_OSHER_3_2_3", "ARKODE_VERNER_9_5_6", "ARKODE_VERNER_10_6_7", + "ARKODE_VERNER_13_7_8", "ARKODE_VERNER_16_8_9"}; std::vector Tables_DIRK = {"ARKODE_SDIRK_2_1_2", "ARKODE_ARK2_DIRK_3_1_2", "ARKODE_BILLINGTON_3_3_2", "ARKODE_TRBDF2_3_3_2", "ARKODE_KVAERNO_4_2_3", "ARKODE_ARK324L2SA_DIRK_4_2_3", "ARKODE_CASH_5_2_4", "ARKODE_CASH_5_3_4", diff --git a/test/unit_tests/arkode/CXX_serial/ark_test_butcher.out b/test/unit_tests/arkode/CXX_serial/ark_test_butcher.out index 8d7971338b..b7c11bcecf 100644 --- a/test/unit_tests/arkode/CXX_serial/ark_test_butcher.out +++ b/test/unit_tests/arkode/CXX_serial/ark_test_butcher.out @@ -22,6 +22,30 @@ ARKodeButcherTable_CheckOrder: embedding order = 6 Testing method ARKODE_ARK437L2SA_ERK_7_3_4: table matches predicted method/embedding orders of 4/3 Testing method ARKODE_ARK548L2SAb_ERK_8_4_5: table matches predicted method/embedding orders of 5/4 +Testing method ARKODE_SOFRONIOU_SPALETTA_5_3_4: table matches predicted method/embedding orders of 4/3 +Testing method ARKODE_SHU_OSHER_3_2_3: table matches predicted method/embedding orders of 3/2 +Testing method ARKODE_VERNER_9_5_6: table matches predicted method/embedding orders of 6/5 +Testing method ARKODE_VERNER_10_6_7: WARNING: +ARKodeButcherTable_CheckOrder: + method order >= 6; reverting to simplifying assumptions + method order = 6 + + embedding order >= 6; reverting to simplifying assumptions + embedding order = 6 +Testing method ARKODE_VERNER_13_7_8: WARNING: +ARKodeButcherTable_CheckOrder: + method order >= 6; reverting to simplifying assumptions + method order = 6 + + embedding order >= 6; reverting to simplifying assumptions + embedding order = 6 +Testing method ARKODE_VERNER_16_8_9: WARNING: +ARKodeButcherTable_CheckOrder: + method order >= 6; reverting to simplifying assumptions + method order = 6 + + embedding order >= 6; reverting to simplifying assumptions + embedding order = 6 Testing individual DIRK methods: