@@ -8,12 +8,13 @@ function lower_varname(var::Variable, idv, order)
88end
99
1010function ode_order_lowering (sys:: DiffEqSystem )
11- eqs_lowered = ode_order_lowering (sys. eqs, sys. iv)
12- DiffEqSystem (eqs_lowered, sys. iv, sys . dvs , sys. ps)
11+ eqs_lowered, vars_lowered = ode_order_lowering (sys. eqs, sys. iv)
12+ DiffEqSystem (eqs_lowered, sys. iv, vars_lowered , sys. ps)
1313end
1414function ode_order_lowering (eqs, iv)
1515 var_order = Dict {Variable,Int} ()
1616 vars = Variable[]
17+ new_vars = Variable[]
1718 new_eqs = similar (eqs, DiffEq)
1819
1920 for (i, eq) ∈ enumerate (eqs)
@@ -23,6 +24,7 @@ function ode_order_lowering(eqs, iv)
2324 any (isequal (var), vars) || push! (vars, var)
2425 end
2526 var′ = lower_varname (eq. x, eq. t, eq. n - 1 )
27+ push! (new_vars, var′)
2628 rhs′ = rename (eq. rhs)
2729 new_eqs[i] = DiffEq (var′, iv, 1 , rhs′)
2830 end
@@ -31,13 +33,14 @@ function ode_order_lowering(eqs, iv)
3133 order = var_order[var]
3234 for o in (order- 1 ): - 1 : 1
3335 lvar = lower_varname (var, iv, o- 1 )
36+ push! (new_vars, lvar)
3437 rhs = lower_varname (var, iv, o)
3538 eq = DiffEq (lvar, iv, 1 , rhs)
3639 push! (new_eqs, eq)
3740 end
3841 end
3942
40- return new_eqs
43+ return new_eqs, new_vars
4144end
4245
4346function rename (O:: Expression )
0 commit comments