1
1
using ModelingToolkit, DelayDiffEq, Test
2
+ using ModelingToolkit: t_nounits as t, D_nounits as D
3
+
2
4
p0 = 0.2 ;
3
5
q0 = 0.3 ;
4
6
v0 = 1 ;
@@ -29,21 +31,21 @@ prob2 = DDEProblem(bc_model, u0, h2, tspan, constant_lags = lags)
29
31
sol2 = solve (prob2, alg, reltol = 1e-7 , abstol = 1e-10 )
30
32
31
33
@parameters p0= 0.2 p1= 0.2 q0= 0.3 q1= 0.3 v0= 1 v1= 1 d0= 5 d1= 1 d2= 1 beta0= 1 beta1= 1
32
- @variables t x₀ (t) x₁ (t) x₂ (.. )
34
+ @variables x₀ (t) x₁ (t) x₂ (.. )
33
35
tau = 1
34
- D = Differential (t)
35
36
eqs = [D (x₀) ~ (v0 / (1 + beta0 * (x₂ (t - tau)^ 2 ))) * (p0 - q0) * x₀ - d0 * x₀
36
37
D (x₁) ~ (v0 / (1 + beta0 * (x₂ (t - tau)^ 2 ))) * (1 - p0 + q0) * x₀ +
37
38
(v1 / (1 + beta1 * (x₂ (t - tau)^ 2 ))) * (p1 - q1) * x₁ - d1 * x₁
38
39
D (x₂ (t)) ~ (v1 / (1 + beta1 * (x₂ (t - tau)^ 2 ))) * (1 - p1 + q1) * x₁ - d2 * x₂ (t)]
39
- @named sys = System (eqs)
40
- prob = DDEProblem (sys,
40
+ @named sys = System (eqs, t)
41
+ final_sys = structural_simplify (sys)
42
+ prob = DDEProblem (final_sys,
41
43
[x₀ => 1.0 , x₁ => 1.0 , x₂ (t) => 1.0 ],
42
44
tspan,
43
45
constant_lags = [tau])
44
46
sol_mtk = solve (prob, alg, reltol = 1e-7 , abstol = 1e-10 )
45
47
@test sol_mtk. u[end ] ≈ sol. u[end ]
46
- prob2 = DDEProblem (sys ,
48
+ prob2 = DDEProblem (final_sys ,
47
49
[x₀ => 1.0 - t * q1 * 10 , x₁ => 1.0 - t * q1 * 10 , x₂ (t) => 1.0 - t * q1 * 10 ],
48
50
tspan,
49
51
constant_lags = [tau])
@@ -70,21 +72,18 @@ prob = SDDEProblem(hayes_modelf, hayes_modelg, [1.0], h, tspan, pmul;
70
72
constant_lags = (pmul[1 ],));
71
73
sol = solve (prob, RKMil ())
72
74
73
- @variables t x (.. )
75
+ @variables x (.. )
74
76
@parameters a= - 4.0 b= - 2.0 c= 10.0 α= - 1.3 β= - 1.2 γ= 1.1
75
- D = Differential (t)
76
77
@brownian η
77
78
τ = 1.0
78
79
eqs = [D (x (t)) ~ a * x (t) + b * x (t - τ) + c + (α * x (t) + γ) * η]
79
- @named sys = System (eqs)
80
+ @named sys = System (eqs, t )
80
81
sys = structural_simplify (sys)
81
82
@test equations (sys) == [D (x (t)) ~ a * x (t) + b * x (t - τ) + c]
82
83
@test isequal (ModelingToolkit. get_noiseeqs (sys), [α * x (t) + γ;;])
83
84
prob_mtk = SDDEProblem (sys, [x (t) => 1.0 + t], tspan; constant_lags = (τ,));
84
85
@test_nowarn sol_mtk = solve (prob_mtk, RKMil ())
85
86
86
- @variables t
87
- D = Differential (t)
88
87
@parameters x (.. ) a
89
88
90
89
function oscillator (; name, k = 1.0 , τ = 0.01 )
@@ -93,7 +92,7 @@ function oscillator(; name, k = 1.0, τ = 0.01)
93
92
eqs = [D (x (t)) ~ y,
94
93
D (y) ~ - k * x (t - τ) + jcn,
95
94
delx ~ x (t - τ)]
96
- return System (eqs; name = name)
95
+ return System (eqs, t ; name = name)
97
96
end
98
97
99
98
systems = @named begin
0 commit comments