Skip to content

Commit 087083f

Browse files
committed
define zero ODE for parameters/compartments with event assignments
1 parent 27c1def commit 087083f

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

src/systems.jl

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,20 @@ function Catalyst.ReactionSystem(model::SBML.Model; kwargs...) # Todo: requires
8787
# Dict(Catalyst.DEFAULT_IV.val => 0)))
8888
push!(raterules_subs, rhs ~ o.lhs)
8989
end
90+
zero_rates = []
91+
for (k, v) in merge(model.parameters, model.compartments)
92+
if is_event_assignment(k, model)
93+
if v.constant
94+
ErrorException("$k appears in event assignment but should be constant.")
95+
end
96+
push!(zero_rates, D(create_var(k, IV; isbcspecies = true)) ~ 0)
97+
end
98+
end
9099
if haskey(kwargs, :defaults)
91100
defs = ModelingToolkit._merge(defs, kwargs[:defaults])
92101
kwargs = filter(x -> !isequal(first(x), :defaults), kwargs)
93102
end
94-
rs = ReactionSystem([rxs..., algrules..., raterules_subs..., obsrules_rearranged...],
103+
rs = ReactionSystem([rxs..., algrules..., raterules_subs..., obsrules_rearranged..., zero_rates...],
95104
IV, first.(u0map), first.(parammap);
96105
defaults = defs, name = gensym(:SBML),
97106
continuous_events = get_events(model),

0 commit comments

Comments
 (0)