Skip to content

Commit fa17edc

Browse files
fix: only update kwargs if prob was changed
1 parent 936c3d9 commit fa17edc

File tree

1 file changed

+20
-7
lines changed

1 file changed

+20
-7
lines changed

src/solve.jl

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -523,7 +523,8 @@ an updated `prob` to be used for solving. All implementations should accept arbi
523523
keyword arguments.
524524
525525
Should be called before the problem is solved, after performing type-promotion on the
526-
problem.
526+
problem. If the returned problem is not `===` the provided `prob`, it is assumed to
527+
contain the `u0` and `p` passed as keyword arguments.
527528
528529
# Keyword Arguments
529530
@@ -1249,7 +1250,9 @@ end
12491250

12501251
function get_concrete_problem(prob::SteadyStateProblem, isadapt; kwargs...)
12511252
prob = get_updated_symbolic_problem(_get_root_indp(prob), prob; kwargs...)
1252-
kwargs = (; kwargs..., u0 = SII.state_values(prob), p = SII.parameter_values(prob))
1253+
if prob !== prob
1254+
kwargs = (; kwargs..., u0 = SII.state_values(prob), p = SII.parameter_values(prob))
1255+
end
12531256
p = get_concrete_p(prob, kwargs)
12541257
u0 = get_concrete_u0(prob, isadapt, Inf, kwargs)
12551258
u0 = promote_u0(u0, p, nothing)
@@ -1258,7 +1261,9 @@ end
12581261

12591262
function get_concrete_problem(prob::NonlinearProblem, isadapt; kwargs...)
12601263
prob = get_updated_symbolic_problem(_get_root_indp(prob), prob; kwargs...)
1261-
kwargs = (; kwargs..., u0 = SII.state_values(prob), p = SII.parameter_values(prob))
1264+
if prob !== prob
1265+
kwargs = (; kwargs..., u0 = SII.state_values(prob), p = SII.parameter_values(prob))
1266+
end
12621267
p = get_concrete_p(prob, kwargs)
12631268
u0 = get_concrete_u0(prob, isadapt, nothing, kwargs)
12641269
u0 = promote_u0(u0, p, nothing)
@@ -1267,7 +1272,9 @@ end
12671272

12681273
function get_concrete_problem(prob::NonlinearLeastSquaresProblem, isadapt; kwargs...)
12691274
prob = get_updated_symbolic_problem(_get_root_indp(prob), prob; kwargs...)
1270-
kwargs = (; kwargs..., u0 = SII.state_values(prob), p = SII.parameter_values(prob))
1275+
if prob !== prob
1276+
kwargs = (; kwargs..., u0 = SII.state_values(prob), p = SII.parameter_values(prob))
1277+
end
12711278
p = get_concrete_p(prob, kwargs)
12721279
u0 = get_concrete_u0(prob, isadapt, nothing, kwargs)
12731280
u0 = promote_u0(u0, p, nothing)
@@ -1290,7 +1297,9 @@ end
12901297

12911298
function get_concrete_problem(prob, isadapt; kwargs...)
12921299
prob = get_updated_symbolic_problem(_get_root_indp(prob), prob; kwargs...)
1293-
kwargs = (; kwargs..., u0 = SII.state_values(prob), p = SII.parameter_values(prob))
1300+
if prob !== prob
1301+
kwargs = (; kwargs..., u0 = SII.state_values(prob), p = SII.parameter_values(prob))
1302+
end
12941303
p = get_concrete_p(prob, kwargs)
12951304
tspan = get_concrete_tspan(prob, isadapt, kwargs, p)
12961305
u0 = get_concrete_u0(prob, isadapt, tspan[1], kwargs)
@@ -1310,7 +1319,9 @@ end
13101319

13111320
function get_concrete_problem(prob::DAEProblem, isadapt; kwargs...)
13121321
prob = get_updated_symbolic_problem(_get_root_indp(prob), prob; kwargs...)
1313-
kwargs = (; kwargs..., u0 = SII.state_values(prob), p = SII.parameter_values(prob))
1322+
if prob !== prob
1323+
kwargs = (; kwargs..., u0 = SII.state_values(prob), p = SII.parameter_values(prob))
1324+
end
13141325
p = get_concrete_p(prob, kwargs)
13151326
tspan = get_concrete_tspan(prob, isadapt, kwargs, p)
13161327
u0 = get_concrete_u0(prob, isadapt, tspan[1], kwargs)
@@ -1335,7 +1346,9 @@ end
13351346

13361347
function get_concrete_problem(prob::DDEProblem, isadapt; kwargs...)
13371348
prob = get_updated_symbolic_problem(_get_root_indp(prob), prob; kwargs...)
1338-
kwargs = (; kwargs..., u0 = SII.state_values(prob), p = SII.parameter_values(prob))
1349+
if prob !== prob
1350+
kwargs = (; kwargs..., u0 = SII.state_values(prob), p = SII.parameter_values(prob))
1351+
end
13391352
p = get_concrete_p(prob, kwargs)
13401353
tspan = get_concrete_tspan(prob, isadapt, kwargs, p)
13411354
u0 = get_concrete_u0(prob, isadapt, tspan[1], kwargs)

0 commit comments

Comments
 (0)