@@ -3,7 +3,7 @@ struct Rosenbrock23Tableau{T}
33 d:: T
44end
55
6- function Rosenbrock23Tableau (T)
6+ function Rosenbrock23Tableau (:: Type{T} ) where {T}
77 c₃₂ = convert (T, 6 + sqrt (2 ))
88 d = convert (T, 1 / (2 + sqrt (2 )))
99 return Rosenbrock23Tableau (c₃₂, d)
@@ -14,7 +14,7 @@ struct Rosenbrock32Tableau{T}
1414 d:: T
1515end
1616
17- function Rosenbrock32Tableau (T)
17+ function Rosenbrock32Tableau (:: Type{T} ) where {T}
1818 c₃₂ = convert (T, 6 + sqrt (2 ))
1919 d = convert (T, 1 / (2 + sqrt (2 )))
2020 return Rosenbrock32Tableau (c₃₂, d)
@@ -72,7 +72,7 @@ The tableau for the 4th order L-stable Rosenbrock method Rodas4.
7272It is a 6-stage method with a built-in error estimate.
7373Reference: Hairer, E., Nørsett, S. P., & Wanner, G. (1996). Solving Ordinary Differential Equations II.
7474"""
75- function Rodas4Tableau (T, T2)
75+ function Rodas4Tableau (:: Type{T} , :: Type{T2} ) where {T, T2}
7676 gamma = 0.25
7777 b = T[RODAS4A[6 , 1 ], RODAS4A[6 , 2 ], RODAS4A[6 , 3 ], RODAS4A[6 , 4 ], RODAS4A[6 , 5 ], one (T)]
7878 btilde = T[zero (T), zero (T), zero (T), zero (T), zero (T), one (T)]
@@ -108,7 +108,7 @@ A 4th order L-stable Rosenbrock method with 6 stages, often used as an alternati
108108Reference: Hairer, E., & Wanner, G. (1996). Solving Ordinary Differential Equations II:
109109 Stiff and Differential-Algebraic Problems. Springer-Verlag, 2nd Edition.
110110"""
111- function Rodas42Tableau (T, T2)
111+ function Rodas42Tableau (:: Type{T} , :: Type{T2} ) where {T, T2}
112112 gamma = 0.25
113113 b = T[RODAS42A[6 , 1 ], RODAS42A[6 , 2 ], RODAS42A[6 , 3 ], RODAS42A[6 , 4 ], RODAS42A[6 , 5 ], one (T)]
114114 btilde = T[zero (T), zero (T), zero (T), zero (T), zero (T), one (T)]
@@ -144,7 +144,7 @@ A 4th order L-stable Rosenbrock method with 6 stages, emphasizing stability for
144144Reference: Steinebach, G. (1995). Order-reduction of ROW-methods for DAEs and
145145 method of lines applications. Preprint-Nr. 1741, FB Mathematik, TH Darmstadt.
146146"""
147- function Rodas4PTableau (T, T2)
147+ function Rodas4PTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
148148 gamma = 0.25
149149 b = T[RODAS4PA[6 , 1 ], RODAS4PA[6 , 2 ], RODAS4PA[6 , 3 ], RODAS4PA[6 , 4 ], RODAS4PA[6 , 5 ], one (T)]
150150 btilde = T[zero (T), zero (T), zero (T), zero (T), zero (T), one (T)]
@@ -181,7 +181,7 @@ Reference: Steinebach, G. (2020). Improvement of Rosenbrock-Wanner method RODASP
181181 In: Progress in Differential-Algebraic Equations II, pp. 165–184.
182182 Springer, Cham.
183183"""
184- function Rodas4P2Tableau (T, T2)
184+ function Rodas4P2Tableau (:: Type{T} , :: Type{T2} ) where {T, T2}
185185 gamma = 0.25
186186 b = T[RODAS4P2A[6 , 1 ], RODAS4P2A[6 , 2 ], RODAS4P2A[6 , 3 ], RODAS4P2A[6 , 4 ], RODAS4P2A[6 , 5 ], one (T)]
187187 btilde = T[zero (T), zero (T), zero (T), zero (T), zero (T), one (T)]
@@ -233,7 +233,7 @@ Reference: Di Marzo, G. (1993). Rodas5(4) -- Méthodes de Rosenbrock d'ordre 5(4
233233 adaptées aux problemes différentiels-algébriques. Master's thesis,
234234 University of Geneva.
235235"""
236- function Rodas5Tableau (T, T2)
236+ function Rodas5Tableau (:: Type{T} , :: Type{T2} ) where {T, T2}
237237 gamma = 0.19
238238 s = size (RODAS5A, 1 )
239239 b = T[RODAS5A[s, i] for i in 1 : (s - 1 )]
@@ -284,7 +284,7 @@ Reference: Steinebach, G. (2023). Construction of Rosenbrock-Wanner method Rodas
284284 and numerical benchmarks within the Julia Differential Equations package.
285285 BIT Numerical Mathematics, 63, 27.
286286"""
287- function Rodas5PTableau (T, T2)
287+ function Rodas5PTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
288288 gamma = 0.21193756319429014
289289 s = size (RODAS5PA, 1 )
290290 b = T[RODAS5PA[s, i] for i in 1 : (s - 1 )]
@@ -295,7 +295,7 @@ function Rodas5PTableau(T, T2)
295295end
296296
297297# Rodas5Pe uses the same tableau as Rodas5P but with a custom btilde
298- function Rodas5PeTableau (T, T2)
298+ function Rodas5PeTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
299299 gamma = 0.21193756319429014
300300 s = size (RODAS5PA, 1 )
301301 b = T[RODAS5PA[s, i] for i in 1 : (s - 1 )]
@@ -381,7 +381,7 @@ A 19-stage 6th order L-stable Rosenbrock method.
381381Reference: Steinebach, G. (2025). Rodas6P and Tsit5DA - two new Rosenbrock-type
382382 methods for DAEs. arXiv:2511.21252.
383383"""
384- function Rodas6PTableau (T, T2)
384+ function Rodas6PTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
385385 gamma = 0.26
386386 b = T[
387387 RODAS6PA[16 , 1 ], RODAS6PA[16 , 2 ], RODAS6PA[16 , 3 ], RODAS6PA[16 , 4 ],
408408A 3rd order Rosenbrock method with 3 stages.
409409Reference: Lang, J., & Verwer, J. G. (2001). ROS3P—an accurate third-order Rosenbrock solver designed for parabolic problems. BIT Numerical Mathematics, 41, 731-738.
410410"""
411- function ROS3PRodasTableau (T, T2)
411+ function ROS3PRodasTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
412412 gamma = convert (T2, 1 / 2 + sqrt (3 ) / 6 )
413413 igamma = inv (gamma)
414414 a21 = convert (T, igamma)
456456A 3rd order Rosenbrock method with 4 stages.
457457Reference: Sandu, A., et al. (1997). Benchmarking stiff ode solvers for atmospheric chemistry problems-I. implicit vs explicit. Atmospheric Environment, 31(19), 3151-3166.
458458"""
459- function Rodas3RodasTableau (T, T2)
459+ function Rodas3RodasTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
460460 A = zeros (T, 4 , 4 )
461461 A[2 , 1 ] = convert (T, 0 )
462462 A[3 , 1 ] = convert (T, 2 )
491491A 3rd order Rosenbrock method with 5 stages, including a dense output matrix H.
492492Reference: Steinebach, G. (2024). Rosenbrock methods within OrdinaryDiffEq.jl - Overview, recent developments and applications. Proceedings of the JuliaCon Conferences.
493493"""
494- function Rodas3PRodasTableau (T, T2)
494+ function Rodas3PRodasTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
495495 gamma = convert (T2, 1 // 3 )
496496 a21 = convert (T, 4.0 / 3.0 )
497497 a41 = convert (T, 2.90625 )
553553A W-method variant of Rodas3P, providing 2nd order solutions with 5 stages.
554554Reference: Steinebach, G. (2024). Rosenbrock methods within OrdinaryDiffEq.jl - Overview, recent developments and applications. Proceedings of the JuliaCon Conferences.
555555"""
556- function Rodas23WRodasTableau (T, T2)
556+ function Rodas23WRodasTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
557557 gamma = convert (T2, 1 // 3 )
558558 a21 = convert (T, 4.0 / 3.0 )
559559 a41 = convert (T, 2.90625 )
614614
615615A 4th order Rosenbrock method developed by Shampine.
616616"""
617- function RosShamp4RodasTableau (T, T2)
617+ function RosShamp4RodasTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
618618 gamma = convert (T2, 1 // 2 )
619619 A = zeros (T, 4 , 4 )
620620 A[2 , 1 ] = convert (T, 2.0 )
642642
643643A 4th order Rosenbrock method by van Veldhuizen.
644644"""
645- function Veldd4RodasTableau (T, T2)
645+ function Veldd4RodasTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
646646 gamma = convert (T2, 0.2257081148225682 )
647647 A = zeros (T, 4 , 4 )
648648 A[2 , 1 ] = convert (T, 2.0 )
@@ -665,7 +665,7 @@ function Veldd4RodasTableau(T, T2)
665665 return RodasTableau (A, C, gamma, c, d, H, b, btilde)
666666end
667667
668- function Velds4RodasTableau (T, T2)
668+ function Velds4RodasTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
669669 gamma = convert (T2, 1 // 2 )
670670 A = zeros (T, 4 , 4 )
671671 A[2 , 1 ] = convert (T, 2.0 )
693693
694694A 4th order Generalized Runge-Kutta (Rosenbrock) method by Kaps and Rentrop.
695695"""
696- function GRK4TRodasTableau (T, T2)
696+ function GRK4TRodasTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
697697 gamma = convert (T2, 0.231 )
698698 A = zeros (T, 4 , 4 )
699699 A[2 , 1 ] = convert (T, 2.0 )
@@ -716,7 +716,7 @@ function GRK4TRodasTableau(T, T2)
716716 return RodasTableau (A, C, gamma, c, d, H, b, btilde)
717717end
718718
719- function GRK4ARodasTableau (T, T2)
719+ function GRK4ARodasTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
720720 gamma = convert (T2, 0.395 )
721721 A = zeros (T, 4 , 4 )
722722 A[2 , 1 ] = convert (T, 1.108860759493671 )
744744
745745A 4th order L-stable Rosenbrock method.
746746"""
747- function Ros4LStabRodasTableau (T, T2)
747+ function Ros4LStabRodasTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
748748 gamma = convert (T2, 0.57282 )
749749 A = zeros (T, 4 , 4 )
750750 A[2 , 1 ] = convert (T, 2.0 )
772772
773773A 2nd order Rosenbrock method.
774774"""
775- function ROS2RodasTableau (T, T2)
775+ function ROS2RodasTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
776776 gamma = convert (T2, 1.7071067811865475 )
777777 A = zeros (T, 2 , 2 )
778778 A[2 , 1 ] = convert (T, 0.585786437626905 )
@@ -786,7 +786,7 @@ function ROS2RodasTableau(T, T2)
786786 return RodasTableau (A, C, gamma, c, d, H, b, btilde)
787787end
788788
789- function ROS2PRRodasTableau (T, T2)
789+ function ROS2PRRodasTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
790790 gamma = convert (T2, 0.228155493653962 )
791791 A = zeros (T, 3 , 3 )
792792 A[2 , 1 ] = convert (T, 4.382975767906234 )
809809
810810A 2nd order Rosenbrock method with specific stability properties.
811811"""
812- function ROS2SRodasTableau (T, T2)
812+ function ROS2SRodasTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
813813 gamma = convert (T2, 0.292893218813452 )
814814 A = zeros (T, 3 , 3 )
815815 A[2 , 1 ] = convert (T, 2.0000000000000036 )
832832
833833A 3rd order Rosenbrock method.
834834"""
835- function ROS3RodasTableau (T, T2)
835+ function ROS3RodasTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
836836 gamma = convert (T2, 0.435866521508459 )
837837 A = zeros (T, 3 , 3 )
838838 A[2 , 1 ] = convert (T, 1.0 )
854854
855855A 3rd order Rosenbrock method.
856856"""
857- function ROS3PRRodasTableau (T, T2)
857+ function ROS3PRRodasTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
858858 gamma = convert (T2, 0.788675134594813 )
859859 A = zeros (T, 3 , 3 )
860860 A[2 , 1 ] = convert (T, 3.0000000000000018 )
878878A 4th order Rosenbrock method with 7 stages by Scholz.
879879Reference: Scholz, S. (1989).
880880"""
881- function Scholz4_7RodasTableau (T, T2)
881+ function Scholz4_7RodasTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
882882 gamma = convert (T2, 0.788675134594813 )
883883 A = zeros (T, 3 , 3 )
884884 A[2 , 1 ] = convert (T, 3.0000000000000018 )
902902A Rosenbrock-W method of order (3)4.
903903Reference: Rang, J., & Angermann, L. (2005). New Rosenbrock-W methods of order 3 and 4 for stiff problems.
904904"""
905- function ROS34PW1aRodasTableau (T, T2)
905+ function ROS34PW1aRodasTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
906906 gamma = convert (T2, 0.435866521508459 )
907907 A = zeros (T, 4 , 4 )
908908 A[2 , 1 ] = convert (T, 5.0905205106702045 )
@@ -924,7 +924,7 @@ function ROS34PW1aRodasTableau(T, T2)
924924 return RodasTableau (A, C, gamma, c, d, H, b, btilde)
925925end
926926
927- function ROS34PW1bRodasTableau (T, T2)
927+ function ROS34PW1bRodasTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
928928 gamma = convert (T2, 0.435866521508459 )
929929 A = zeros (T, 4 , 4 )
930930 A[2 , 1 ] = convert (T, 5.0905205106702045 )
953953A Rosenbrock-W method of order (3)4.
954954Reference: Rang, J., & Angermann, L. (2005).
955955"""
956- function ROS34PW2RodasTableau (T, T2)
956+ function ROS34PW2RodasTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
957957 gamma = convert (T2, 0.435866521508459 )
958958 A = zeros (T, 4 , 4 )
959959 A[2 , 1 ] = convert (T, 2.0 )
983983A Rosenbrock-W method of order (3)4.
984984Reference: Rang, J., & Angermann, L. (2005).
985985"""
986- function ROS34PW3RodasTableau (T, T2)
986+ function ROS34PW3RodasTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
987987 gamma = convert (T2, 1.0685790213016289 )
988988 A = zeros (T, 4 , 4 )
989989 A[2 , 1 ] = convert (T, 2.3541034887609085 )
@@ -1012,7 +1012,7 @@ end
10121012
10131013A 3rd order Rosenbrock-W method.
10141014"""
1015- function ROS34PRwRodasTableau (T, T2)
1015+ function ROS34PRwRodasTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
10161016 gamma = convert (T2, 0.435866521508459 )
10171017 A = zeros (T, 4 , 4 )
10181018 A[2 , 1 ] = convert (T, 2.0 )
@@ -1041,7 +1041,7 @@ end
10411041
10421042A 3rd order low-storage Rosenbrock method.
10431043"""
1044- function ROS3PRLRodasTableau (T, T2)
1044+ function ROS3PRLRodasTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
10451045 gamma = convert (T2, 0.435866521508459 )
10461046 A = zeros (T, 4 , 4 )
10471047 A[2 , 1 ] = convert (T, 1.147140180139521 )
@@ -1069,7 +1069,7 @@ end
10691069
10701070A 3rd order low-storage Rosenbrock method.
10711071"""
1072- function ROS3PRL2RodasTableau (T, T2)
1072+ function ROS3PRL2RodasTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
10731073 gamma = convert (T2, 0.435866521508459 )
10741074 A = zeros (T, 4 , 4 )
10751075 A[2 , 1 ] = convert (T, 3.000000000000007 )
@@ -1098,7 +1098,7 @@ end
10981098A 4th order Rosenbrock-Kaps method with 4 stages.
10991099Reference: Kaps, P., & Rentrop, P. (1979).
11001100"""
1101- function ROK4aRodasTableau (T, T2)
1101+ function ROK4aRodasTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
11021102 gamma = convert (T2, 0.572816062482135 )
11031103 A = zeros (T, 4 , 4 )
11041104 A[2 , 1 ] = convert (T, 1.745761101158346 )
@@ -1126,7 +1126,7 @@ end
11261126
11271127A 6-stage 4th order Rosenbrock-W method.
11281128"""
1129- function RosenbrockW6S4OSRodasTableau (T, T2)
1129+ function RosenbrockW6S4OSRodasTableau (:: Type{T} , :: Type{T2} ) where {T, T2}
11301130 gamma = convert (T2, 0.25 )
11311131 A = zeros (T, 6 , 6 )
11321132 A[2 , 1 ] = convert (T, 0.5812383407115008 )
@@ -1249,7 +1249,7 @@ const TSIT5DA_H = [
12491249A 12-stage order 5(4) hybrid explicit/linear-implicit method for DAEs.
12501250Reference: Steinebach (2025), arXiv:2511.21252
12511251"""
1252- function Tsit5DATableau (T, T2)
1252+ function Tsit5DATableau (:: Type{T} , :: Type{T2} ) where {T, T2}
12531253 return Tsit5DATableau {T, T2} (
12541254 TSIT5DA_A, TSIT5DA_GAMMA, convert (T2, 0.15 ),
12551255 TSIT5DA_b, TSIT5DA_bhat, TSIT5DA_c, TSIT5DA_d, TSIT5DA_H
0 commit comments