Skip to content

Commit 1b0ce61

Browse files
refactor: update initialization code to account for new op syntax
1 parent 205a762 commit 1b0ce61

File tree

2 files changed

+18
-24
lines changed

2 files changed

+18
-24
lines changed

src/systems/nonlinear/initializesystem.jl

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -564,11 +564,11 @@ function SciMLBase.remake_initialization_data(
564564
defs = defaults(sys)
565565
use_scc = true
566566
initialization_eqs = Equation[]
567+
op = anydict()
567568

568569
if oldinitdata !== nothing && oldinitdata.metadata isa InitializationMetadata
569570
meta = oldinitdata.metadata
570-
u0map = merge(meta.u0map, u0map)
571-
pmap = merge(meta.pmap, pmap)
571+
op = copy(meta.op)
572572
merge!(guesses, meta.guesses)
573573
use_scc = meta.use_scc
574574
initialization_eqs = meta.additional_initialization_eqs
@@ -612,11 +612,9 @@ function SciMLBase.remake_initialization_data(
612612
if t0 === nothing && is_time_dependent(sys)
613613
t0 = 0.0
614614
end
615-
filter_missing_values!(u0map)
616-
filter_missing_values!(pmap)
615+
merge!(op, u0map, pmap)
616+
filter_missing_values!(op)
617617

618-
merge!(u0map, pmap)
619-
op = u0map
620618
u0map = anydict()
621619
pmap = anydict()
622620
missing_unknowns, missing_pars = build_operating_point!(sys, op,
@@ -632,7 +630,7 @@ function SciMLBase.remake_initialization_data(
632630
typeof(newp.initials), floatT, Val(1), Val(length(vals)), vals...)
633631
end
634632
kws = maybe_build_initialization_problem(
635-
sys, SciMLBase.isinplace(odefn), op, u0map, pmap, t0, defs, guesses,
633+
sys, SciMLBase.isinplace(odefn), op, t0, defs, guesses,
636634
missing_unknowns; time_dependent_init, use_scc, initialization_eqs, floatT,
637635
u0_constructor, p_constructor, allow_incomplete = true)
638636

src/systems/problem_utils.jl

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -898,13 +898,9 @@ $(TYPEDFIELDS)
898898
"""
899899
struct InitializationMetadata{R <: ReconstructInitializeprob, GUU, SIU}
900900
"""
901-
The `u0map` used to construct the initialization.
901+
The operating point used to construct the initialization.
902902
"""
903-
u0map::Dict{Any, Any}
904-
"""
905-
The `pmap` used to construct the initialization.
906-
"""
907-
pmap::Dict{Any, Any}
903+
op::Dict{Any, Any}
908904
"""
909905
The `guesses` used to construct the initialization.
910906
"""
@@ -1019,14 +1015,14 @@ end
10191015
$(TYPEDSIGNATURES)
10201016
10211017
Build and return the initialization problem and associated data as a `NamedTuple` to be passed
1022-
to the `SciMLFunction` constructor. Requires the system `sys`, operating point `op`,
1023-
user-provided `u0map` and `pmap`, initial time `t`, system defaults `defs`, user-provided
1024-
`guesses`, and list of unknowns which don't have a value in `op`. The keyword `implicit_dae`
1025-
denotes whether the `SciMLProblem` being constructed is in implicit DAE form (`DAEProblem`).
1026-
All other keyword arguments are forwarded to `InitializationProblem`.
1018+
to the `SciMLFunction` constructor. Requires the system `sys`, operating point `op`, initial
1019+
time `t`, system defaults `defs`, user-provided `guesses`, and list of unknowns which don't
1020+
have a value in `op`. The keyword `implicit_dae` denotes whether the `SciMLProblem` being
1021+
constructed is in implicit DAE form (`DAEProblem`). All other keyword arguments are forwarded
1022+
to `InitializationProblem`.
10271023
"""
10281024
function maybe_build_initialization_problem(
1029-
sys::AbstractSystem, iip, op::AbstractDict, u0map, pmap, t, defs,
1025+
sys::AbstractSystem, iip, op::AbstractDict, t, defs,
10301026
guesses, missing_unknowns; implicit_dae = false,
10311027
time_dependent_init = is_time_dependent(sys), u0_constructor = identity,
10321028
p_constructor = identity, floatT = Float64, initialization_eqs = [],
@@ -1038,7 +1034,7 @@ function maybe_build_initialization_problem(
10381034
end
10391035

10401036
initializeprob = ModelingToolkit.InitializationProblem{iip}(
1041-
sys, t, u0map, pmap; guesses, time_dependent_init, initialization_eqs,
1037+
sys, t, op; guesses, time_dependent_init, initialization_eqs,
10421038
use_scc, u0_constructor, p_constructor, kwargs...)
10431039
if state_values(initializeprob) !== nothing
10441040
_u0 = state_values(initializeprob)
@@ -1072,7 +1068,7 @@ function maybe_build_initialization_problem(
10721068
nothing
10731069
end
10741070
meta = InitializationMetadata(
1075-
u0map, pmap, guesses, Vector{Equation}(initialization_eqs),
1071+
copy(op), copy(guesses), Vector{Equation}(initialization_eqs),
10761072
use_scc, time_dependent_init,
10771073
ReconstructInitializeprob(
10781074
sys, initializeprob.f.sys; u0_constructor, p_constructor),
@@ -1108,7 +1104,7 @@ function maybe_build_initialization_problem(
11081104
end
11091105

11101106
for p in punknowns
1111-
is_parameter_solvable(p, pmap, defs, guesses) || continue
1107+
is_parameter_solvable(p, op, defs, guesses) || continue
11121108
get(op, p, missing) === missing || continue
11131109
p = unwrap(p)
11141110
op[p] = getu(initializeprob, p)(initializeprob)
@@ -1281,7 +1277,7 @@ function process_SciMLProblem(
12811277
u0_eltype = something(u0_eltype, floatT)
12821278

12831279
if !is_time_dependent(sys) || is_initializesystem(sys)
1284-
add_observed_equations!(u0map, obs)
1280+
add_observed_equations!(op, obs)
12851281
end
12861282
if u0_constructor === identity && u0Type <: StaticArray
12871283
u0_constructor = vals -> SymbolicUtils.Code.create_array(
@@ -1295,7 +1291,7 @@ function process_SciMLProblem(
12951291
if build_initializeprob
12961292
kws = maybe_build_initialization_problem(
12971293
sys, constructor <: SciMLBase.AbstractSciMLFunction{true},
1298-
op, u0map, pmap, t, defs, guesses, missing_unknowns;
1294+
op, t, defs, guesses, missing_unknowns;
12991295
implicit_dae, warn_initialize_determined, initialization_eqs,
13001296
eval_expression, eval_module, fully_determined,
13011297
warn_cyclic_dependency, check_units = check_initialization_units,

0 commit comments

Comments
 (0)