Skip to content

Commit e5c9603

Browse files
feat: return observed equations in SII.default_values, add test
also move SII testset to SII group
1 parent 79325be commit e5c9603

File tree

3 files changed

+16
-6
lines changed

3 files changed

+16
-6
lines changed

src/systems/abstractsystem.jl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,12 @@ function SymbolicIndexingInterface.is_observed(sys::AbstractSystem, sym)
495495
!is_independent_variable(sys, sym) && symbolic_type(sym) != NotSymbolic()
496496
end
497497

498-
SymbolicIndexingInterface.default_values(sys::AbstractSystem) = get_defaults(sys)
498+
function SymbolicIndexingInterface.default_values(sys::AbstractSystem)
499+
return merge(
500+
Dict(eq.lhs => eq.rhs for eq in observed(sys)),
501+
defaults(sys)
502+
)
503+
end
499504

500505
SymbolicIndexingInterface.is_time_dependent(::AbstractTimeDependentSystem) = true
501506
SymbolicIndexingInterface.is_time_dependent(::AbstractTimeIndependentSystem) = false

test/runtests.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ end
2424
@safetestset "Parsing Test" include("variable_parsing.jl")
2525
@safetestset "Simplify Test" include("simplify.jl")
2626
@safetestset "Direct Usage Test" include("direct.jl")
27-
@safetestset "SymbolicIndeingInterface test" include("symbolic_indexing_interface.jl")
2827
@safetestset "System Linearity Test" include("linearity.jl")
2928
@safetestset "Input Output Test" include("input_output_handling.jl")
3029
@safetestset "Clock Test" include("clock.jl")
@@ -73,6 +72,7 @@ end
7372
end
7473

7574
if GROUP == "All" || GROUP == "InterfaceI" || GROUP == "SymbolicIndexingInterface"
75+
@safetestset "SymbolicIndexingInterface test" include("symbolic_indexing_interface.jl")
7676
@safetestset "MTKParameters Test" include("mtkparameters.jl")
7777
end
7878

test/symbolic_indexing_interface.jl

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
using ModelingToolkit, SymbolicIndexingInterface, SciMLBase
2+
using ModelingToolkit: t_nounits as t, D_nounits as D
23

3-
@parameters t a b
4-
@variables x(t)=1.0 y(t)=2.0
5-
D = Differential(t)
4+
@parameters a b
5+
@variables x(t)=1.0 y(t)=2.0 xy(t)
66
eqs = [D(x) ~ a * y + t, D(y) ~ b * t]
7-
@named odesys = ODESystem(eqs, t, [x, y], [a, b])
7+
@named odesys = ODESystem(eqs, t, [x, y], [a, b]; observed = [xy ~ x + y])
88

99
@test all(is_variable.((odesys,), [x, y, 1, 2, :x, :y]))
1010
@test all(.!is_variable.((odesys,), [a, b, t, 3, 0, :a, :b]))
@@ -24,6 +24,11 @@ eqs = [D(x) ~ a * y + t, D(y) ~ b * t]
2424
@test !isempty(default_values(odesys))
2525
@test default_values(odesys)[x] == 1.0
2626
@test default_values(odesys)[y] == 2.0
27+
@test isequal(default_values(odesys)[xy], x + y)
28+
29+
@named odesys = ODESystem(
30+
eqs, t, [x, y], [a, b]; defaults = [xy => 3.0], observed = [xy ~ x + y])
31+
@test default_values(odesys)[xy] == 3.0
2732

2833
@variables x y z
2934
@parameters σ ρ β

0 commit comments

Comments
 (0)