@@ -855,6 +855,7 @@ class ARK222EDIRK(RK):
855855 @property
856856 def order (self ): return 2
857857
858+
858859@registerRK
859860class ARK222ERK (ARK222EDIRK ):
860861 """
@@ -865,3 +866,39 @@ class ARK222ERK(ARK222EDIRK):
865866 [ARK222EDIRK .gamma , 0 , 0 ],
866867 [ARK222EDIRK .delta , 1 - ARK222EDIRK .delta , 0 ]])
867868 b = A [- 1 , :]
869+
870+
871+ @registerRK
872+ class ARK443ESDIRK (RK ):
873+ """
874+ 3rd-order 4-stage ESDIRK scheme [Ascher 1997 sec 2.8]
875+ Use as implicit part for ARK scheme in combination with ARK443ERK.
876+ """
877+
878+ c = np .array ([0 , 1 / 2 , 2 / 3 , 1 / 2 , 1 ])
879+
880+ A = np .array ([[0 , 0 , 0 , 0 , 0 ],
881+ [0 , 1 / 2 , 0 , 0 , 0 ],
882+ [0 , 1 / 6 , 1 / 2 , 0 , 0 ],
883+ [0 , - 1 / 2 , 1 / 2 , 1 / 2 , 0 ],
884+ [0 , 3 / 2 , - 3 / 2 , 1 / 2 , 1 / 2 ]])
885+
886+
887+ b = A [- 1 , :]
888+
889+ @property
890+ def order (self ): return 3
891+
892+
893+ @registerRK
894+ class ARK443ERK (ARK443ESDIRK ):
895+ """
896+ 3rd-order 4-stage ERK scheme [Ascher 1997 sec 2.8]
897+ Use as explicit part for ARK scheme in combination with ARK443ESDIRK.
898+ """
899+ A = np .array ([[ 0 , 0 , 0 , 0 , 0 ],
900+ [ 1 / 2 , 0 , 0 , 0 , 0 ],
901+ [11 / 18 , 1 / 18 , 0 , 0 , 0 ],
902+ [ 5 / 6 , - 5 / 6 , 1 / 2 , 0 , 0 ],
903+ [ 1 / 4 , 7 / 4 , 3 / 4 , - 7 / 4 , 0 ]])
904+ b = A [- 1 , :]
0 commit comments