Skip to content

Commit 8ec6d3e

Browse files
feat: collect guesses from parameter metadata in ODESystem
1 parent b2dbf91 commit 8ec6d3e

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

src/systems/diffeqs/odesystem.jl

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -249,11 +249,16 @@ function ODESystem(deqs::AbstractVector{<:Equation}, iv, dvs, ps;
249249
process_variables!(var_to_name, defaults, dvs′)
250250
process_variables!(var_to_name, defaults, ps′)
251251

252-
sysguesses = [ModelingToolkit.getguess(st) for st in dvs′]
253-
hasaguess = findall(!isnothing, sysguesses)
254-
var_guesses = dvs′[hasaguess] .=> sysguesses[hasaguess]
255-
sysguesses = isempty(var_guesses) ? Dict() : todict(var_guesses)
256-
guesses = merge(sysguesses, todict(guesses))
252+
sysdvsguesses = [ModelingToolkit.getguess(st) for st in dvs′]
253+
hasaguess = findall(!isnothing, sysdvsguesses)
254+
var_guesses = dvs′[hasaguess] .=> sysdvsguesses[hasaguess]
255+
sysdvsguesses = isempty(var_guesses) ? Dict() : todict(var_guesses)
256+
syspsguesses = [ModelingToolkit.getguess(st) for st in ps′]
257+
hasaguess = findall(!isnothing, syspsguesses)
258+
ps_guesses = ps′[hasaguess] .=> syspsguesses[hasaguess]
259+
syspsguesses = isempty(ps_guesses) ? Dict() : todict(ps_guesses)
260+
261+
guesses = merge(sysdvsguesses, syspsguesses, todict(guesses))
257262
guesses = Dict{Any, Any}(value(k) => value(v) for (k, v) in pairs(guesses))
258263

259264
isempty(observed) || collect_var_to_name!(var_to_name, (eq.lhs for eq in observed))

src/variables.jl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,16 @@ function getguess(x)
491491
Symbolics.getmetadata(x, VariableGuess, nothing)
492492
end
493493

494+
"""
495+
setguess(x, v)
496+
497+
Set the guess for the initial value associated with symbolic variable `x` to `v`.
498+
See also [`hasguess`](@ref).
499+
"""
500+
function setguess(x, v)
501+
Symbolics.setmetadata(x, VariableGuess, v)
502+
end
503+
494504
"""
495505
hasguess(x)
496506

0 commit comments

Comments
 (0)