2626function ode_order_lowering (eqs, iv, states)
2727 var_order = Dict {Variable,Int} ()
2828 vars = Variable[]
29- new_eqs = Equation[]
30- new_vars = Variable[]
3129 D = Differential (iv ())
30+ diff_eqs = Equation[]
31+ diff_vars = Variable[]
32+ alge_eqs = Equation[]
33+ alge_vars = Variable[]
3234
3335 for (i, (eq, ss)) ∈ enumerate (zip (eqs, states))
3436 if isequal (eq. lhs, Constant (0 ))
35- push! (new_vars , ss)
36- push! (new_eqs , eq)
37+ push! (alge_vars , ss)
38+ push! (alge_eqs , eq)
3739 else
3840 var, maxorder = var_from_nested_derivative (eq. lhs)
3941 if maxorder > get (var_order, var, 0 )
@@ -42,8 +44,8 @@ function ode_order_lowering(eqs, iv, states)
4244 end
4345 var′ = lower_varname (var, iv, maxorder - 1 )
4446 rhs′ = rename_lower_order (eq. rhs)
45- push! (new_vars , var′)
46- push! (new_eqs , D (var′ (iv ())) ~ rhs′)
47+ push! (diff_vars , var′)
48+ push! (diff_eqs , D (var′ (iv ())) ~ rhs′)
4749 end
4850 end
4951
@@ -52,15 +54,15 @@ function ode_order_lowering(eqs, iv, states)
5254 for o in (order- 1 ): - 1 : 1
5355 lvar = lower_varname (var, iv, o- 1 )
5456 rvar = lower_varname (var, iv, o)
55- push! (new_vars , lvar)
57+ push! (diff_vars , lvar)
5658
5759 rhs = rvar (iv ())
5860 eq = Differential (iv ())(lvar (iv ())) ~ rhs
59- push! (new_eqs , eq)
61+ push! (diff_eqs , eq)
6062 end
6163 end
6264
63- return (new_eqs, new_vars )
65+ return (vcat (diff_eqs, alge_eqs), vcat (diff_vars, alge_vars) )
6466end
6567
6668function rename_lower_order (O:: Expression )
0 commit comments