Skip to content

Commit 09d83e5

Browse files
Merge pull request #2732 from oscardssmith/os/bump_DI
Os/bump di
2 parents 8d0eba3 + 537abd0 commit 09d83e5

File tree

8 files changed

+15
-14
lines changed

8 files changed

+15
-14
lines changed

lib/OrdinaryDiffEqBDF/Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,12 @@ LinearAlgebra = "<0.0.1, 1"
4242
LinearSolve = "2.32, 3"
4343
MacroTools = "0.5.13"
4444
MuladdMacro = "0.2.4"
45+
NonlinearSolve = "4"
4546
ODEProblemLibrary = "0.1.8"
4647
OrdinaryDiffEqCore = "1.21"
4748
OrdinaryDiffEqDifferentiation = "1.5"
4849
OrdinaryDiffEqNonlinearSolve = "1.6"
4950
OrdinaryDiffEqSDIRK = "1.3"
50-
NonlinearSolve = "4"
5151
PrecompileTools = "1.2.1"
5252
Preferences = "1.4.3"
5353
Random = "<0.0.1, 1"

lib/OrdinaryDiffEqCore/src/misc_utils.jl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ function _bool_to_ADType(::Val{false}, _, ::Val{FD}) where {FD}
146146
Base.depwarn(
147147
"Using a `Bool` for keyword argument `autodiff` is deprecated. Please use an `ADType` specifier.",
148148
:_bool_to_ADType)
149-
return AutoFiniteDiff(; fdtype = Val{FD}())
149+
return AutoFiniteDiff(; fdtype = Val{FD}(), dir=1)
150150
end
151151

152152
# Functions to get ADType type from Bool or ADType object, or ADType type
@@ -188,6 +188,9 @@ function _process_AD_choice(
188188
@warn "The `diff_type` keyword is deprecated. Please use an `ADType` specifier. For now defaulting to using `AutoFiniteDiff` with `fdtype=Val{$FD2}()`."
189189
return _bool_to_ADType(Val{false}(), Val{CS}(), Val{FD2}()), Val{CS}(), Val{FD2}()
190190
end
191+
if ad_alg.dir isa Bool # default dir of true makes integration non-reversable
192+
@reset ad_alg.dir = Int(ad_alg.dir)
193+
end
191194
return ad_alg, Val{CS}(), ad_alg.fdtype
192195
end
193196

lib/OrdinaryDiffEqDifferentiation/Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ ConcreteStructs = "0.2.2"
3434
ConstructionBase = "1.5.8"
3535
DiffEqBase = "6"
3636
DiffEqDevTools = "2.44.4"
37-
DifferentiationInterface = "0.6.48"
37+
DifferentiationInterface = "0.6.48, 0.7"
3838
FastBroadcast = "0.3"
3939
FiniteDiff = "2"
4040
ForwardDiff = "0.10, 1"

lib/OrdinaryDiffEqDifferentiation/src/derivative_wrappers.jl

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,6 @@ function build_jac_config(alg, f::F1, uf::F2, du1, uprev,
251251
@. @view(jac_prototype[idxs]) = @view(f.mass_matrix[idxs])
252252
end
253253
end
254-
uf = SciMLBase.@set uf.f = SciMLBase.unwrapped_f(uf.f)
255254

256255
autodiff_alg = alg_autodiff(alg)
257256
dense = autodiff_alg isa AutoSparse ? ADTypes.dense_ad(autodiff_alg) : autodiff_alg
@@ -273,7 +272,7 @@ function build_jac_config(alg, f::F1, uf::F2, du1, uprev,
273272

274273
jac_config = (jac_config_forward, jac_config_reverse)
275274
else
276-
jac_config1 = DI.prepare_jacobian(uf, du1, alg_autodiff(alg), u)
275+
jac_config1 = DI.prepare_jacobian(uf, du1, autodiff_alg, u)
277276
jac_config = (jac_config1, jac_config1)
278277
end
279278

@@ -309,7 +308,7 @@ function resize_jac_config!(cache, integrator)
309308
ad_left = autodiff_alg
310309
end
311310

312-
cache.jac_config = ([DI.prepare!_jacobian(
311+
SciMLBase.@reset cache.jac_config = ([DI.prepare!_jacobian(
313312
uf, cache.du1, config, ad, integrator.u)
314313
for (ad, config) in zip(
315314
(ad_right, ad_left), cache.jac_config)]...,)
@@ -338,10 +337,6 @@ function resize_grad_config!(cache, integrator)
338337
cache.grad_config
339338
end
340339

341-
342-
343-
344-
345340
function build_grad_config(alg, f::F1, tf::F2, du1, t) where {F1, F2}
346341
if !DiffEqBase.has_tgrad(f)
347342
ad = ADTypes.dense_ad(alg_autodiff(alg))
@@ -354,6 +349,9 @@ function build_grad_config(alg, f::F1, tf::F2, du1, t) where {F1, F2}
354349
grad_config_false = DI.prepare_derivative(tf, du1, dir_false, t)
355350

356351
grad_config = (grad_config_true, grad_config_false)
352+
elseif ad isa AutoForwardDiff
353+
grad_config1 = DI.prepare_derivative(tf,du1,ad,convert(eltype(du1),t))
354+
grad_config = (grad_config1, grad_config1)
357355
else
358356
grad_config1 = DI.prepare_derivative(tf,du1,ad,t)
359357
grad_config = (grad_config1, grad_config1)

lib/OrdinaryDiffEqRosenbrock/Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Static = "aedffcd0-7271-4cad-89d0-dc628f76c6d3"
3131
ADTypes = "1.11"
3232
DiffEqBase = "6.152.2"
3333
DiffEqDevTools = "2.44.4"
34-
DifferentiationInterface = "0.6.48"
34+
DifferentiationInterface = "0.6.48, 0.7"
3535
Enzyme = "0.13"
3636
FastBroadcast = "0.3.5"
3737
FiniteDiff = "2.24.0"

lib/OrdinaryDiffEqRosenbrock/test/dae_rosenbrock_ad_tests.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ sol = @inferred solve(prob_mm_oop, Rodas5P(), reltol = 1e-8, abstol = 1e-8)
2929

3030
# These tests flex differentiation of the solver and through the initialization
3131
# To only test the solver part and isolate potential issues, set the initialization to consistent
32-
@testset "Inplace: $(isinplace(_prob)), DAEProblem: $(_prob isa DAEProblem), BrownBasic: $(initalg isa BrownFullBasicInit), Autodiff: $autodiff" for _prob in [
32+
@testset "Inplace: $(isinplace(_prob)), BrownBasic: $(initalg isa BrownFullBasicInit), Autodiff: $autodiff" for _prob in [
3333
prob_mm, prob_mm_oop],
3434
initalg in [BrownFullBasicInit(), ShampineCollocationInit()], autodiff in [AutoForwardDiff(chunksize=3), AutoFiniteDiff()]
3535

lib/OrdinaryDiffEqRosenbrock/test/ode_rosenbrock_tests.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -898,7 +898,7 @@ end
898898
alg = @test_logs @inferred(T(; autodiff = ad))
899899
@test alg isa
900900
RosenbrockAlgorithm{0, <:AutoFiniteDiff{Val{:central}}, Val{:central}()}
901-
@test OrdinaryDiffEqRosenbrock.OrdinaryDiffEqCore.alg_autodiff(alg) === ad
901+
@test OrdinaryDiffEqRosenbrock.OrdinaryDiffEqCore.alg_autodiff(alg) isa AutoFiniteDiff{Val{:central}}
902902
@test OrdinaryDiffEqRosenbrock.OrdinaryDiffEqCore.get_chunksize(alg) === Val{0}()
903903

904904
alg = @test_logs (:warn, r"The `diff_type` keyword is deprecated") match_mode=:any @inferred(T(;

test/interface/dae_initialize_integration.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ p0 = [
3535
Dk => 1
3636
]
3737

38-
prob = ODEProblem(connected, u0, tspan, p0)
38+
prob = ODEProblem(connected, [u0; p0], tspan)
3939
sol = solve(prob, Rodas5(), initializealg = BrownFullBasicInit())
4040
@test prob.u0 == sol[1]
4141
sol = solve(prob, Rodas5(), initializealg = ShampineCollocationInit())

0 commit comments

Comments
 (0)