Skip to content

Commit 97fc7bd

Browse files
Merge pull request #51 from JuliaDiffEq/ode
Add a transformation for ODE order lowering
2 parents 8b2e58f + c56c694 commit 97fc7bd

File tree

2 files changed

+9
-14
lines changed

2 files changed

+9
-14
lines changed

src/systems/diffeqs/first_order_transform.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ function lower_varname(sym::Symbol, idv, order::Int, subtype::Symbol, naming_sch
1010
Variable(name, subtype=subtype)
1111
end
1212

13+
function ode_order_lowering(sys::DiffEqSystem; kwargs...)
14+
eqs = sys.eqs
15+
ivs = sys.ivs
16+
eqs_lowered = ode_order_lowering(eqs; kwargs...)
17+
DiffEqSystem(eqs_lowered, ivs)
18+
end
1319
ode_order_lowering(eqs; naming_scheme = "_") = ode_order_lowering!(deepcopy(eqs), naming_scheme)
1420
function ode_order_lowering!(eqs, naming_scheme)
1521
ind = findfirst(x->!(isintermediate(x)), eqs)

test/system_construction.jl

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -40,19 +40,8 @@ test_vars_extraction(de, de2)
4040
@DVar u u_tt u_t x_t
4141
eqs = [D3*u ~ 2(D2*u) + D*u + D*x + 1
4242
D2*x ~ D*x + 2]
43-
neweqs = ode_order_lowering(eqs)
44-
de = DiffEqSystem(neweqs, [t], [u,x,u_tt,u_t,x_t], Variable[], Variable[])
45-
de2 = DiffEqSystem(neweqs, [t])
46-
47-
function test_vars_extraction2(de, de2)
48-
for el in (:ivs, :dvs, :vs, :ps)
49-
names2 = sort(collect(var.name for var in getfield(de2,el)))
50-
names = sort(collect(var.name for var in getfield(de,el)))
51-
names2 == names
52-
end
53-
false
54-
end
55-
@test_broken test_vars_extraction2(de, de2)
43+
de = DiffEqSystem(eqs, [t])
44+
de1 = ode_order_lowering(de)
5645
lowered_eqs = [D*u_tt ~ 2u_tt + u_t + x_t + 1
5746
D*x_t ~ x_t + 2
5847
D*u_t ~ u_tt
@@ -69,7 +58,7 @@ function test_eqs(eqs1, eqs2)
6958
end
7059
@test_broken eq
7160
end
72-
test_eqs(neweqs, lowered_eqs)
61+
test_eqs(de1.eqs, lowered_eqs)
7362

7463
# Internal calculations
7564
eqs = [a ~ y-x,

0 commit comments

Comments
 (0)