Skip to content

Commit 6feb8d7

Browse files
refactor: add is_initializesystem field to NonlinearSystem
1 parent 520811e commit 6feb8d7

File tree

3 files changed

+16
-12
lines changed

3 files changed

+16
-12
lines changed

src/systems/abstractsystem.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -915,6 +915,7 @@ for prop in [:eqs
915915
:substitutions
916916
:metadata
917917
:gui_metadata
918+
:is_initializesystem
918919
:discrete_subsystems
919920
:parameter_dependencies
920921
:assertions

src/systems/nonlinear/initializesystem.jl

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -143,17 +143,15 @@ function generate_initializesystem(sys::AbstractTimeDependentSystem;
143143
for k in keys(defs)
144144
defs[k] = substitute(defs[k], paramsubs)
145145
end
146-
meta = InitializationSystemMetadata(
147-
anydict(u0map), anydict(pmap), additional_guesses,
148-
additional_initialization_eqs, extra_metadata, nothing)
146+
149147
return NonlinearSystem(eqs_ics,
150148
vars,
151149
pars;
152150
defaults = defs,
153151
checks = check_units,
154152
parameter_dependencies = new_parameter_deps,
155153
name,
156-
metadata = meta,
154+
is_initializesystem = true,
157155
kwargs...)
158156
end
159157

@@ -244,17 +242,15 @@ function generate_initializesystem(sys::AbstractTimeIndependentSystem;
244242
for k in keys(defs)
245243
defs[k] = substitute(defs[k], paramsubs)
246244
end
247-
meta = InitializationSystemMetadata(
248-
anydict(u0map), anydict(pmap), additional_guesses,
249-
additional_initialization_eqs, extra_metadata, nothing)
245+
250246
return NonlinearSystem(eqs_ics,
251247
vars,
252248
pars;
253249
defaults = defs,
254250
checks = check_units,
255251
parameter_dependencies = new_parameter_deps,
256252
name,
257-
metadata = meta,
253+
is_initializesystem = true,
258254
kwargs...)
259255
end
260256

@@ -714,7 +710,7 @@ end
714710
Check if the given system is an initialization system.
715711
"""
716712
function is_initializesystem(sys::AbstractSystem)
717-
sys isa NonlinearSystem && get_metadata(sys) isa InitializationSystemMetadata
713+
has_is_initializesystem(sys) && get_is_initializesystem(sys)
718714
end
719715

720716
"""

src/systems/nonlinear/nonlinearsystem.jl

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,10 @@ struct NonlinearSystem <: AbstractTimeIndependentSystem
8787
"""
8888
gui_metadata::Union{Nothing, GUIMetadata}
8989
"""
90+
Whether this is an initialization system.
91+
"""
92+
is_initializesystem::Bool
93+
"""
9094
Cache for intermediate tearing state.
9195
"""
9296
tearing_state::Any
@@ -116,6 +120,7 @@ struct NonlinearSystem <: AbstractTimeIndependentSystem
116120
tag, eqs, unknowns, ps, var_to_name, observed, jac, name, description,
117121
systems, defaults, guesses, initializesystem, initialization_eqs, connector_type,
118122
parameter_dependencies = Equation[], metadata = nothing, gui_metadata = nothing,
123+
is_initializesystem = false,
119124
tearing_state = nothing, substitutions = nothing, namespacing = true,
120125
complete = false, index_cache = nothing, parent = nothing,
121126
isscheduled = false; checks::Union{Bool, Int} = true)
@@ -126,7 +131,8 @@ struct NonlinearSystem <: AbstractTimeIndependentSystem
126131
end
127132
new(tag, eqs, unknowns, ps, var_to_name, observed, jac, name, description,
128133
systems, defaults, guesses, initializesystem, initialization_eqs,
129-
connector_type, parameter_dependencies, metadata, gui_metadata, tearing_state,
134+
connector_type, parameter_dependencies, metadata, gui_metadata,
135+
is_initializesystem, tearing_state,
130136
substitutions, namespacing, complete, index_cache, parent, isscheduled)
131137
end
132138
end
@@ -148,7 +154,8 @@ function NonlinearSystem(eqs, unknowns, ps;
148154
checks = true,
149155
parameter_dependencies = Equation[],
150156
metadata = nothing,
151-
gui_metadata = nothing)
157+
gui_metadata = nothing,
158+
is_initializesystem = false)
152159
continuous_events === nothing || isempty(continuous_events) ||
153160
throw(ArgumentError("NonlinearSystem does not accept `continuous_events`, you provided $continuous_events"))
154161
discrete_events === nothing || isempty(discrete_events) ||
@@ -196,7 +203,7 @@ function NonlinearSystem(eqs, unknowns, ps;
196203
NonlinearSystem(Threads.atomic_add!(SYSTEM_COUNT, UInt(1)),
197204
eqs, dvs′, ps′, var_to_name, observed, jac, name, description, systems, defaults,
198205
guesses, initializesystem, initialization_eqs, connector_type, parameter_dependencies,
199-
metadata, gui_metadata, checks = checks)
206+
metadata, gui_metadata, is_initializesystem, checks = checks)
200207
end
201208

202209
function NonlinearSystem(eqs; kwargs...)

0 commit comments

Comments
 (0)