File tree Expand file tree Collapse file tree 1 file changed +31
-0
lines changed Expand file tree Collapse file tree 1 file changed +31
-0
lines changed Original file line number Diff line number Diff line change @@ -1397,6 +1397,37 @@ function MT.flatten(rs::ReactionSystem; name = nameof(rs))
1397
1397
discrete_events = MT. discrete_events (rs))
1398
1398
end
1399
1399
1400
+ """
1401
+ ModelingToolkit.compose(sys::ReactionSystem, systems::AbstractArray; name = nameof(sys))
1402
+
1403
+ Compose the indicated [`ReactionSystem`](@ref) with one or more `AbstractSystem`s.
1404
+
1405
+ """
1406
+ function compose (sys:: ReactionSystem , systems:: AbstractArray ; name = nameof (sys))
1407
+ nsys = length (systems)
1408
+ nsys == 0 && return sys
1409
+ @set! sys. name = name
1410
+ @set! sys. systems = [get_systems (sys); systems]
1411
+ newunknowns = OrderedSet {BasicSymbolic{Real}} ()
1412
+ newparams = OrderedSet ()
1413
+ iv = has_iv (sys) ? get_iv (sys) : nothing
1414
+ for ssys in systems
1415
+ collect_scoped_vars! (newunknowns, newparams, ssys, iv)
1416
+ end
1417
+
1418
+ if ! isempty (newunknowns)
1419
+ @set! sys. unknowns = union (get_unknowns (sys), newunknowns)
1420
+ sort! (get_unknowns (sys), by = ! isspecies)
1421
+ @set! sys. species = filter (isspecies, get_unknowns (sys))
1422
+ end
1423
+
1424
+ if ! isempty (newparams)
1425
+ @set! sys. ps = union (get_ps (sys), newparams)
1426
+ end
1427
+
1428
+ return sys
1429
+ end
1430
+
1400
1431
"""
1401
1432
ModelingToolkit.extend(sys::AbstractSystem, rs::ReactionSystem; name::Symbol=nameof(sys))
1402
1433
You can’t perform that action at this time.
0 commit comments