Skip to content

Commit c113dd1

Browse files
Merge pull request #2962 from hersle/iv_property
Expose independent variable as a system property
2 parents c755b35 + 91cd222 commit c113dd1

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

src/systems/abstractsystem.jl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1004,6 +1004,7 @@ function Base.propertynames(sys::AbstractSystem; private = false)
10041004
has_observed(sys) && for s in get_observed(sys)
10051005
push!(names, getname(s.lhs))
10061006
end
1007+
has_iv(sys) && push!(names, getname(get_iv(sys)))
10071008
return names
10081009
end
10091010
end
@@ -1062,6 +1063,13 @@ function getvar(sys::AbstractSystem, name::Symbol; namespace = !iscomplete(sys))
10621063
end
10631064
end
10641065

1066+
if has_iv(sys)
1067+
iv = get_iv(sys)
1068+
if getname(iv) == name
1069+
return iv
1070+
end
1071+
end
1072+
10651073
throw(ArgumentError("System $(nameof(sys)): variable $name does not exist"))
10661074
end
10671075

test/odesystem.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1308,3 +1308,10 @@ end
13081308
u0_v, p_v, _ = ModelingToolkit.get_u0_p(sys, u0, p)
13091309
@test prob.f(u0_v, p_v, 0.0) == [c_b, c_a]
13101310
end
1311+
1312+
@testset "Independent variable as system property" begin
1313+
@variables x(t)
1314+
@named sys = ODESystem([x ~ t], t)
1315+
@named sys = compose(sys, sys) # nest into a hierarchical system
1316+
@test t === sys.t === sys.sys.t
1317+
end

test/reduction.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ lorenz2 = lorenz(:lorenz2)
6565
lorenz1.u ~ lorenz2.F
6666
lorenz2.u ~ lorenz1.F],
6767
t, systems = [lorenz1, lorenz2])
68-
@test length(Base.propertynames(connected)) == 10
68+
@test length(Base.propertynames(connected)) == 10 + 1 # + 1 for independent variable
6969
@test isequal((@nonamespace connected.lorenz1.x), x)
7070
__x = x
7171
@unpack lorenz1 = connected

0 commit comments

Comments
 (0)