@@ -51,6 +51,8 @@ prob2 = DDEProblem(sys,
5151 constant_lags = [tau])
5252sol2_mtk = solve (prob2, alg, reltol = 1e-7 , abstol = 1e-10 )
5353@test sol2_mtk. u[end ] ≈ sol2. u[end ]
54+ @test_nowarn sol2_mtk[[x₀, x₁, x₂ (t)]]
55+ @test_nowarn sol2_mtk[[x₀, x₁, x₂ (t - 0.1 )]]
5456
5557using StochasticDelayDiffEq
5658function hayes_modelf (du, u, h, p, t)
102104eqs = [osc1. jcn ~ osc2. delx,
103105 osc2. jcn ~ osc1. delx]
104106@named coupledOsc = System (eqs, t)
105- @test ModelingToolkit. is_dde (coupledOsc)
106107@named coupledOsc = compose (coupledOsc, systems)
107108@test ModelingToolkit. is_dde (coupledOsc)
108109@named coupledOsc2 = System (eqs, t; systems)
@@ -112,3 +113,14 @@ for coupledOsc in [coupledOsc, coupledOsc2]
112113 @test length (equations (sys)) == 4
113114 @test length (unknowns (sys)) == 4
114115end
116+ sys = structural_simplify (coupledOsc)
117+ prob = DDEProblem (sys, [], (0.0 , 10.0 ); constant_lags = [sys. osc1. τ, sys. osc2. τ])
118+ sol = solve (prob, MethodOfSteps (Tsit5 ()))
119+ obsfn = ModelingToolkit. build_explicit_observed_function (
120+ sys, [sys. osc1. delx, sys. osc2. delx])
121+ obsval = @test_nowarn obsfn (sol. u[1 ], (_, t) -> sol (t), prob. p, sol. t[1 ])
122+ @test obsval ≈ sol (sol. t[1 ] - 0.01 ; idxs = [sys. osc1. x, sys. osc2. x])
123+ #= TODO : Uncomment when implemented
124+ @test_nowarn sol[[sys.osc1.delx, sys.osc2.delx]]
125+ @test sol[sys.osc1.delx] ≈ sol(sol.t .- 0.01; idxs = sys.osc1.x)
126+ =#
0 commit comments