@@ -126,6 +126,11 @@ struct SDESystem <: AbstractODESystem
126
126
"""
127
127
parameter_dependencies:: Vector{Equation}
128
128
"""
129
+ Mapping of conditions which should be true throughout the solve to corresponding error
130
+ messages. These will be added to the equations when calling `debug_system`.
131
+ """
132
+ assertions:: Dict{BasicSymbolic, String}
133
+ """
129
134
Metadata for the system, to be used by downstream packages.
130
135
"""
131
136
metadata:: Any
@@ -159,7 +164,9 @@ struct SDESystem <: AbstractODESystem
159
164
function SDESystem (tag, deqs, neqs, iv, dvs, ps, tspan, var_to_name, ctrls, observed,
160
165
tgrad, jac, ctrl_jac, Wfact, Wfact_t, name, description, systems, defaults,
161
166
guesses, initializesystem, initialization_eqs, connector_type,
162
- cevents, devents, parameter_dependencies, metadata = nothing , gui_metadata = nothing ,
167
+ cevents, devents, parameter_dependencies, assertions = Dict{
168
+ BasicSymbolic, Nothing},
169
+ metadata = nothing , gui_metadata = nothing ,
163
170
complete = false , index_cache = nothing , parent = nothing , is_scalar_noise = false ,
164
171
is_dde = false ,
165
172
isscheduled = false ;
@@ -185,9 +192,8 @@ struct SDESystem <: AbstractODESystem
185
192
new (tag, deqs, neqs, iv, dvs, ps, tspan, var_to_name, ctrls, observed, tgrad, jac,
186
193
ctrl_jac, Wfact, Wfact_t, name, description, systems,
187
194
defaults, guesses, initializesystem, initialization_eqs, connector_type, cevents,
188
- devents,
189
- parameter_dependencies, metadata, gui_metadata, complete, index_cache, parent, is_scalar_noise,
190
- is_dde, isscheduled)
195
+ devents, parameter_dependencies, assertions, metadata, gui_metadata, complete,
196
+ index_cache, parent, is_scalar_noise, is_dde, isscheduled)
191
197
end
192
198
end
193
199
@@ -209,6 +215,7 @@ function SDESystem(deqs::AbstractVector{<:Equation}, neqs::AbstractArray, iv, dv
209
215
continuous_events = nothing ,
210
216
discrete_events = nothing ,
211
217
parameter_dependencies = Equation[],
218
+ assertions = Dict {BasicSymbolic, String} (),
212
219
metadata = nothing ,
213
220
gui_metadata = nothing ,
214
221
complete = false ,
@@ -261,11 +268,12 @@ function SDESystem(deqs::AbstractVector{<:Equation}, neqs::AbstractArray, iv, dv
261
268
if is_dde === nothing
262
269
is_dde = _check_if_dde (deqs, iv′, systems)
263
270
end
271
+ assertions = Dict {BasicSymbolic, Any} (unwrap (k) => v for (k, v) in assertions)
264
272
SDESystem (Threads. atomic_add! (SYSTEM_COUNT, UInt (1 )),
265
273
deqs, neqs, iv′, dvs′, ps′, tspan, var_to_name, ctrl′, observed, tgrad, jac,
266
274
ctrl_jac, Wfact, Wfact_t, name, description, systems, defaults, guesses,
267
275
initializesystem, initialization_eqs, connector_type,
268
- cont_callbacks, disc_callbacks, parameter_dependencies, metadata, gui_metadata,
276
+ cont_callbacks, disc_callbacks, parameter_dependencies, assertions, metadata, gui_metadata,
269
277
complete, index_cache, parent, is_scalar_noise, is_dde; checks = checks)
270
278
end
271
279
@@ -378,6 +386,7 @@ function ODESystem(sys::SDESystem)
378
386
newsys = ODESystem (neweqs, get_iv (sys), unknowns (sys), parameters (sys);
379
387
parameter_dependencies = parameter_dependencies (sys), defaults = defaults (sys),
380
388
continuous_events = continuous_events (sys), discrete_events = discrete_events (sys),
389
+ assertions = assertions (sys),
381
390
name = nameof (sys), description = description (sys), metadata = get_metadata (sys))
382
391
@set newsys. parent = sys
383
392
end
0 commit comments