Skip to content

Commit 21de376

Browse files
committed
feat: add
1 parent 5be9b6a commit 21de376

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

lib/SimpleImplicitDiscreteSolve/src/alg_utils.jl

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,18 @@ beta1_default(alg::SimpleIDSolve, beta2) = 0
1717

1818
dt_required(alg::SimpleIDSolve) = false
1919
isdiscretealg(alg::SimpleIDSolve) = true
20+
21+
function DiffEqBase._initialize_dae!(integrator, prob::ImplicitDiscreteProblem,
22+
alg::DefaultInit, x::Union{Val{true}, Val{false}})
23+
atol = one(eltype(prob.u0)) * 1e-12
24+
if SciMLBase.has_initializeprob(prob.f)
25+
_initialize_dae!(integrator, prob,
26+
OverrideInit(atol), x)
27+
elseif !applicable(_initialize_dae!, integrator, prob,
28+
BrownFullBasicInit(atol), x)
29+
error("`OrdinaryDiffEqNonlinearSolve` is not loaded, which is required for the default initialization algorithm (`BrownFullBasicInit` or `ShampineCollocationInit`). To solve this problem, either do `using OrdinaryDiffEqNonlinearSolve` or pass `initializealg = CheckInit()` to the `solve` function. This second option requires consistent `u0`.")
30+
else
31+
_initialize_dae!(integrator, prob,
32+
BrownFullBasicInit(atol), x)
33+
end
34+
end

lib/SimpleImplicitDiscreteSolve/test/runtests.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,6 @@ using OrdinaryDiffEqSDIRK
4848

4949
@test isapprox(idsol[end], osol[end], atol = 0.01)
5050
end
51+
52+
@testset "Solve respects initialization" begin
53+
end

0 commit comments

Comments
 (0)