Skip to content

Commit c040ab1

Browse files
Merge pull request #3283 from ChrisRackauckas-Claude/v7-tableaus-v3
Add two-type tableau support and Explicit/Implicit Tableaus sublibraries
2 parents 92644e8 + b5663ce commit c040ab1

30 files changed

Lines changed: 11221 additions & 10627 deletions

lib/DiffEqBase/src/tableaus.jl

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ $(TYPEDEF)
33
44
Holds a tableau which defines an explicit Runge-Kutta method.
55
"""
6-
mutable struct ExplicitRKTableau{MType <: AbstractMatrix, VType <: AbstractVector, S, IType} <:
6+
mutable struct ExplicitRKTableau{MType <: AbstractMatrix, VType <: AbstractVector,
7+
CType <: AbstractVector, S, IType} <:
78
ODERKTableau
89
A::MType
9-
c::VType
10+
c::CType
1011
α::VType
1112
αEEst::VType
1213
d::VType # dense output coefficients
@@ -18,13 +19,13 @@ mutable struct ExplicitRKTableau{MType <: AbstractMatrix, VType <: AbstractVecto
1819
B_interp::IType
1920
end
2021
function ExplicitRKTableau(
21-
A::MType, c::VType, α::VType, order;
22+
A::MType, c::CType, α::VType, order;
2223
adaptiveorder = 0, αEEst = similar(α, 0),
2324
fsal = false, stability_size = 0.0,
2425
d = similar(α, 0), B_interp::IType = nothing
25-
) where {MType, VType, IType}
26+
) where {MType, VType, CType, IType}
2627
S = typeof(stability_size)
27-
return ExplicitRKTableau{MType, VType, S, IType}(
28+
return ExplicitRKTableau{MType, VType, CType, S, IType}(
2829
A, c, α, αEEst, d, length(α), order, adaptiveorder,
2930
fsal, stability_size, B_interp
3031
)
@@ -35,19 +36,21 @@ $(TYPEDEF)
3536
3637
Holds a tableau which defines an implicit Runge-Kutta method.
3738
"""
38-
mutable struct ImplicitRKTableau{MType <: AbstractMatrix, VType <: AbstractVector} <:
39+
mutable struct ImplicitRKTableau{MType <: AbstractMatrix, VType <: AbstractVector,
40+
CType <: AbstractVector} <:
3941
ODERKTableau
4042
A::MType
41-
c::VType
43+
c::CType
4244
α::VType
4345
αEEst::VType
4446
stages::Int
4547
order::Int
4648
adaptiveorder::Int #The lower order of the pair. Only used for adaptivity.
4749
end
4850
function ImplicitRKTableau(
49-
A::MType, c::VType, α::VType, order;
50-
adaptiveorder = 0, αEEst = VType()
51-
) where {MType, VType}
52-
return ImplicitRKTableau{MType, VType}(A, c, α, αEEst, length(α), order, adaptiveorder)
51+
A::MType, c::CType, α::VType, order;
52+
adaptiveorder = 0, αEEst = similar(α, 0)
53+
) where {MType, VType, CType}
54+
return ImplicitRKTableau{MType, VType, CType}(
55+
A, c, α, αEEst, length(α), order, adaptiveorder)
5356
end

lib/DiffEqDevTools/src/DiffEqDevTools.jl

Lines changed: 0 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -48,57 +48,6 @@ export get_sample_errors
4848
#Tab Functions
4949
export stability_region, residual_order_condition, check_tableau, imaginary_stability_interval
5050

51-
#Tableaus
5251
export deduce_Butcher_tableau
53-
export constructEuler, constructKutta3, constructRK4, constructRK438Rule,
54-
constructImplicitEuler, constructMidpointRule, constructTrapezoidalRule,
55-
constructLobattoIIIA4, constructLobattoIIIB2, constructLobattoIIIB4,
56-
constructLobattoIIIC2, constructLobattoIIIC4, constructLobattoIIICStar2,
57-
constructLobattoIIICStar4, constructLobattoIIID2, constructLobattoIIID4,
58-
constructRadauIA3, constructRadauIA5,
59-
constructRadauIIA3, constructRadauIIA5,
60-
constructRalston, constructRalston4, constructHeun, constructRKF5,
61-
constructBogakiShampine3,
62-
constructCashKarp, constructRKF8, constructDormandPrince8,
63-
constructFeagin10, constructFeagin12, constructFeagin14,
64-
constructDormandPrince8_64bit, constructRKF5, constructRungeFirst5,
65-
constructCassity5, constructLawson5,
66-
constructLutherKonen5, constructLutherKonen52,
67-
constructLutherKonen53, constructPapakostasPapaGeorgiou5,
68-
constructPapakostasPapaGeorgiou52,
69-
constructTsitouras5, constructBogakiShampine5, constructSharpSmart5,
70-
constructButcher6, constructButcher7,
71-
constructDverk, constructClassicVerner6,
72-
constructClassicVerner7, constructClassicVerner8,
73-
constructVernerRobust7, constructEnrightVerner7,
74-
constructTanakaYamashitaStable7,
75-
constructTanakaYamashitaEfficient7, constructSharpSmart7,
76-
constructSharpVerner7,
77-
constructVernerEfficient7, constructCooperVerner8,
78-
constructCooperVerner82,
79-
constructTsitourasPapakostas8, constructdverk78, constructEnrightVerner8,
80-
constructCurtis8, constructVernerRobust9, constructVernerEfficient9,
81-
constructSharp9, constructTsitouras9,
82-
constructTsitouras92,
83-
constructOno12, constructCurtis10,
84-
constructOno10,
85-
constructCurtis10, constructBaker10,
86-
constructHairer10, constructButcher63,
87-
constructButcher6, constructButcher62,
88-
constructVerner6, constructDormandPrince6,
89-
constructSharpVerner6, constructVerner9162,
90-
constructVerner916, constructVernerRobust6,
91-
constructVernerEfficient6, constructPapakostas6, constructLawson6,
92-
constructTsitourasPapakostas6, constructDormandLockyerMcCorriganPrince6,
93-
constructTanakaKasugaYamashitaYazaki6D,
94-
constructTanakaKasugaYamashitaYazaki6C,
95-
constructTanakaKasugaYamashitaYazaki6B,
96-
constructTanakaKasugaYamashitaYazaki6A,
97-
constructMikkawyEisa, constructChummund6, constructChummund62,
98-
constructHuta62, constructHuta6, constructRKF4,
99-
constructVerner7, constructVerner8,
100-
constructVerner6, constructSSPRK22, constructSSPRK33,
101-
constructSSPRK43, constructSSPRK104,
102-
constructRKO65
10352

10453
end # module

0 commit comments

Comments
 (0)