Skip to content

Commit dabe16d

Browse files
singhharsh1708Your Name
andauthored
Force type specialization of ESDIRK*L2SA tableau dispatches (#3654)
The _pure_esdirk_to_imex_tableau helper took stage count as runtime Int from size(Ai_mat, 1); now takes ::Val{S} so dispatch infers ESDIRKIMEXTableau{S, T, T2, :standard} concretely. Co-authored-by: Your Name <you@example.com>
1 parent 52fadf8 commit dabe16d

1 file changed

Lines changed: 12 additions & 13 deletions

File tree

lib/OrdinaryDiffEqSDIRK/src/imex_tableaus.jl

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1609,17 +1609,16 @@ end
16091609
# (no explicit tableau, no extrapolation guess)
16101610
#
16111611
function _pure_esdirk_to_imex_tableau(
1612-
Ai_mat::Matrix{T}, c_vec::Vector{T2},
1612+
::Val{S}, Ai_mat::Matrix{T}, c_vec::Vector{T2},
16131613
btilde_vec::Vector{T}, order::Int
1614-
) where {T, T2}
1615-
s = size(Ai_mat, 1)
1616-
bi_vec = Ai_mat[s, :]
1617-
Ae = zeros(T, s, s)
1618-
be_vec = zeros(T, s)
1614+
) where {S, T, T2}
1615+
bi_vec = Ai_mat[S, :]
1616+
Ae = zeros(T, S, S)
1617+
be_vec = zeros(T, S)
16191618
return ESDIRKIMEXTableau(
1620-
Val(s),
1619+
Val(S),
16211620
Ai_mat, bi_vec, Ae, be_vec, c_vec,
1622-
btilde_vec, T[], Vector{T2}[], order, s, false, zeros(Int, s), c_vec[3]
1621+
btilde_vec, T[], Vector{T2}[], order, S, false, zeros(Int, S), c_vec[3]
16231622
)
16241623
end
16251624

@@ -1678,7 +1677,7 @@ function ESDIRK54I8L2SAESDIRKIMEXTableau(T, T2)
16781677
tab.btilde5, tab.btilde6, tab.btilde7, tab.btilde8,
16791678
]
16801679

1681-
return _pure_esdirk_to_imex_tableau(Ai, c_vec, btilde_vec, 5)
1680+
return _pure_esdirk_to_imex_tableau(Val(s), Ai, c_vec, btilde_vec, 5)
16821681
end
16831682

16841683
#
@@ -1721,7 +1720,7 @@ function ESDIRK436L2SA2ESDIRKIMEXTableau(T, T2)
17211720
tab.btilde4, tab.btilde5, tab.btilde6,
17221721
]
17231722

1724-
return _pure_esdirk_to_imex_tableau(Ai, c_vec, btilde_vec, 4)
1723+
return _pure_esdirk_to_imex_tableau(Val(s), Ai, c_vec, btilde_vec, 4)
17251724
end
17261725

17271726
#
@@ -1771,7 +1770,7 @@ function ESDIRK437L2SAESDIRKIMEXTableau(T, T2)
17711770
tab.btilde4, tab.btilde5, tab.btilde6, tab.btilde7,
17721771
]
17731772

1774-
return _pure_esdirk_to_imex_tableau(Ai, c_vec, btilde_vec, 4)
1773+
return _pure_esdirk_to_imex_tableau(Val(s), Ai, c_vec, btilde_vec, 4)
17751774
end
17761775

17771776
#
@@ -1821,7 +1820,7 @@ function ESDIRK547L2SA2ESDIRKIMEXTableau(T, T2)
18211820
tab.btilde4, tab.btilde5, tab.btilde6, tab.btilde7,
18221821
]
18231822

1824-
return _pure_esdirk_to_imex_tableau(Ai, c_vec, btilde_vec, 5)
1823+
return _pure_esdirk_to_imex_tableau(Val(s), Ai, c_vec, btilde_vec, 5)
18251824
end
18261825

18271826
#
@@ -1887,7 +1886,7 @@ function ESDIRK659L2SAESDIRKIMEXTableau(T, T2)
18871886
tab.btilde5, tab.btilde6, tab.btilde7, tab.btilde8, tab.btilde9,
18881887
]
18891888

1890-
return _pure_esdirk_to_imex_tableau(Ai, c_vec, btilde_vec, 6)
1889+
return _pure_esdirk_to_imex_tableau(Val(s), Ai, c_vec, btilde_vec, 6)
18911890
end
18921891

18931892
# ============================================================

0 commit comments

Comments
 (0)