@@ -19,8 +19,8 @@ function fixpoint_sub(x, dict)
19
19
return x
20
20
end
21
21
22
- function substitute_aliases (diffeqs, outputs )
23
- lhss (diffeqs) .~ fixpoint_sub .(rhss (diffeqs), (Dict ( lhss (outputs) .=> rhss (outputs)) ,))
22
+ function substitute_aliases (diffeqs, dict )
23
+ lhss (diffeqs) .~ fixpoint_sub .(rhss (diffeqs), (dict ,))
24
24
end
25
25
26
26
function make_lhs_0 (eq)
@@ -53,12 +53,13 @@ function alias_elimination(sys::ODESystem)
53
53
54
54
eliminate = setdiff (convert .(Variable, all_vars), newstates)
55
55
56
- outputs = solve_for (eqs[alg_idxs], map (x-> x (sys. iv ()), eliminate))
56
+ vars = map (x-> x (sys. iv ()), eliminate)
57
+ outputs = solve_for (eqs[alg_idxs], vars)
57
58
58
59
diffeqs = eqs[setdiff (1 : length (eqs), alg_idxs)]
59
60
60
- diffeqs′ = substitute_aliases (diffeqs, outputs)
61
+ diffeqs′ = substitute_aliases (diffeqs, Dict (vars .=> outputs) )
61
62
62
- ODESystem (diffeqs′, sys. iv (), new_stateops, parameters (sys), observed= outputs)
63
+ ODESystem (diffeqs′, sys. iv (), new_stateops, parameters (sys), observed= vars .~ outputs)
63
64
end
64
65
0 commit comments