11using ModelingToolkit, OrdinaryDiffEq, JumpProcesses, IfElse, DynamicQuantities
22using Test
33MT = ModelingToolkit
4+ using ModelingToolkit: t, D
45@parameters τ [unit = u " s" ] γ
5- @variables t [unit = u " s" ] E (t) [unit = u " J" ] P (t) [unit = u " W" ]
6- D = Differential (t)
6+ @variables E (t) [unit = u " J" ] P (t) [unit = u " W" ]
77
88# Basic access
99@test MT. get_unit (t) == u " s"
@@ -66,22 +66,11 @@ good_eqs = [connect(p1, p2)]
6666@named sys = ODESystem (good_eqs, t, [], [])
6767
6868# Array variables
69- @variables t [unit = u " s " ] x (t)[1 : 3 ] [unit = u " m" ]
69+ @variables x (t)[1 : 3 ] [unit = u " m" ]
7070@parameters v[1 : 3 ]= [1 , 2 , 3 ] [unit = u " m/s" ]
71- D = Differential (t)
7271eqs = D .(x) .~ v
7372ODESystem (eqs, name = :sys )
7473
75- # Difference equation
76- @parameters t [unit = u " s" ] a [unit = u " s" ^- 1 ]
77- @variables x (t) [unit = u " kg" ]
78- δ = Differential (t)
79- D = Difference (t; dt = 0.1 u " s" )
80- eqs = [
81- δ (x) ~ a * x,
82- ]
83- de = ODESystem (eqs, t, [x], [a], name = :sys )
84-
8574# Nonlinear system
8675@parameters a [unit = u " kg" ^- 1 ]
8776@variables x [unit = u " kg" ]
@@ -92,8 +81,7 @@ eqs = [
9281
9382# SDE test w/ noise vector
9483@parameters τ [unit = u " s" ] Q [unit = u " W" ]
95- @variables t [unit = u " s" ] E (t) [unit = u " J" ] P (t) [unit = u " W" ]
96- D = Differential (t)
84+ @variables E (t) [unit = u " J" ] P (t) [unit = u " W" ]
9785eqs = [D (E) ~ P - E / τ
9886 P ~ Q]
9987
@@ -112,9 +100,8 @@ noiseeqs = [0.1u"W" 0.1u"W"
112100@test ! MT. validate (eqs, noiseeqs)
113101
114102# Non-trivial simplifications
115- @variables t [unit = u " s " ] V (t) [unit = u " m" ^ 3 ] L (t) [unit = u " m" ]
103+ @variables V (t) [unit = u " m" ^ 3 ] L (t) [unit = u " m" ]
116104@parameters v [unit = u " m/s" ] r [unit = u " m" ^ 3 / u " s" ]
117- D = Differential (t)
118105eqs = [D (L) ~ v,
119106 V ~ L^ 3 ]
120107@named sys = ODESystem (eqs)
@@ -126,7 +113,7 @@ eqs = [D(V) ~ r,
126113sys_simple = structural_simplify (sys)
127114
128115@variables V [unit = u " m" ^ 3 ] L [unit = u " m" ]
129- @parameters v [unit = u " m/s" ] r [unit = u " m" ^ 3 / u " s" ] t [unit = u " s " ]
116+ @parameters v [unit = u " m/s" ] r [unit = u " m" ^ 3 / u " s" ]
130117eqs = [V ~ r * t,
131118 V ~ L^ 3 ]
132119@named sys = NonlinearSystem (eqs, [V, L], [t, r])
@@ -138,7 +125,7 @@ eqs = [L ~ v * t,
138125sys_simple = structural_simplify (sys)
139126
140127# Jump System
141- @parameters β [unit = u " (mol^2*s)^-1" ] γ [unit = u " (mol*s)^-1" ] t [unit = u " s " ] jumpmol [
128+ @parameters β [unit = u " (mol^2*s)^-1" ] γ [unit = u " (mol*s)^-1" ] jumpmol [
142129 unit = u " mol" ,
143130]
144131@variables S (t) [unit = u " mol" ] I (t) [unit = u " mol" ] R (t) [unit = u " mol" ]
@@ -164,9 +151,9 @@ maj2 = MassActionJump(γ, [I => 1], [I => -1, R => 1])
164151@named js3 = JumpSystem ([maj1, maj2], t, [S, I, R], [β, γ])
165152
166153# Test unusual jump system
167- @parameters β γ t
154+ @parameters β γ
168155@variables S (t) I (t) R (t)
169156
170157maj1 = MassActionJump (2.0 , [0 => 1 ], [S => 1 ])
171158maj2 = MassActionJump (γ, [S => 1 ], [S => - 1 ])
172- @named js4 = JumpSystem ([maj1, maj2], t , [S], [β, γ])
159+ @named js4 = JumpSystem ([maj1, maj2], ModelingToolkit . t_nounits , [S], [β, γ])
0 commit comments