@@ -2,66 +2,55 @@ using ModelingToolkit, OrdinaryDiffEq, JumpProcesses, Unitful
2
2
using Test
3
3
MT = ModelingToolkit
4
4
5
- # Create UnitfulUnitCheck compatibility interface
6
- # With the extension, all functions are accessible directly from ModelingToolkit
7
- const unitless_unit = ModelingToolkit. DQ. Quantity (1.0 ) # Use DQ unitless consistently
8
- UMT = (
9
- equivalent = ModelingToolkit. equivalent,
10
- unitless = unitless_unit,
11
- get_unit = ModelingToolkit. get_unit,
12
- get_literal_unit = ModelingToolkit. get_literal_unit,
13
- safe_get_unit = ModelingToolkit. safe_get_unit,
14
- validate = ModelingToolkit. validate,
15
- screen_unit = ModelingToolkit. screen_unit,
16
- ValidationError = ModelingToolkit. ValidationError,
17
- SciMLBase = SciMLBase
18
- )
5
+ # All unit functions are now directly available from ModelingToolkit
6
+ # Extension automatically loads when Unitful is imported
7
+ const unitless = ModelingToolkit. DQ. Quantity (1.0 )
19
8
@independent_variables t [unit = u " ms" ]
20
9
@parameters τ [unit = u " ms" ] γ
21
10
@variables E (t) [unit = u " kJ" ] P (t) [unit = u " MW" ]
22
11
D = Differential (t)
23
12
24
13
# This is how equivalent works:
25
- @test UMT . equivalent (u " MW" , u " kJ/ms" )
26
- @test ! UMT . equivalent (u " m" , u " cm" )
27
- @test UMT . equivalent (UMT . get_unit (P^ γ), UMT . get_unit ((E / τ)^ γ))
14
+ @test ModelingToolkit . equivalent (u " MW" , u " kJ/ms" )
15
+ @test ! ModelingToolkit . equivalent (u " m" , u " cm" )
16
+ @test ModelingToolkit . equivalent (ModelingToolkit . get_unit (P^ γ), ModelingToolkit . get_unit ((E / τ)^ γ))
28
17
29
18
# Basic access
30
- @test UMT . get_unit (t) == u " ms"
31
- @test UMT . get_unit (E) == u " kJ"
32
- @test UMT . get_unit (τ) == u " ms"
33
- @test UMT . get_unit (γ) == UMT . unitless
34
- @test UMT . get_unit (0.5 ) == UMT . unitless
35
- @test UMT . get_unit (UMT . SciMLBase. NullParameters ()) == UMT . unitless
19
+ @test ModelingToolkit . get_unit (t) == u " ms"
20
+ @test ModelingToolkit . get_unit (E) == u " kJ"
21
+ @test ModelingToolkit . get_unit (τ) == u " ms"
22
+ @test ModelingToolkit . get_unit (γ) == unitless
23
+ @test ModelingToolkit . get_unit (0.5 ) == unitless
24
+ @test ModelingToolkit . get_unit (ModelingToolkit . SciMLBase. NullParameters ()) == unitless
36
25
37
26
# Prohibited unit types
38
27
@parameters β [unit = u " °" ] α [unit = u " °C" ] γ [unit = 1 u " s" ]
39
- @test_throws UMT . ValidationError UMT . get_unit (β)
40
- @test_throws UMT . ValidationError UMT . get_unit (α)
41
- @test_throws UMT . ValidationError UMT . get_unit (γ)
28
+ @test_throws ModelingToolkit . ValidationError ModelingToolkit . get_unit (β)
29
+ @test_throws ModelingToolkit . ValidationError ModelingToolkit . get_unit (α)
30
+ @test_throws ModelingToolkit . ValidationError ModelingToolkit . get_unit (γ)
42
31
43
32
# Non-trivial equivalence & operators
44
- @test UMT . get_unit (τ^- 1 ) == u " ms^-1"
45
- @test UMT . equivalent (UMT . get_unit (D (E)), u " MW" )
46
- @test UMT . equivalent (UMT . get_unit (E / τ), u " MW" )
47
- @test UMT . get_unit (2 * P) == u " MW"
48
- @test UMT . get_unit (t / τ) == UMT . unitless
49
- @test UMT . equivalent (UMT . get_unit (P - E / τ), u " MW" )
50
- @test UMT . equivalent (UMT . get_unit (D (D (E))), u " MW/ms" )
51
- @test UMT . get_unit (ifelse (t > t, P, E / τ)) == u " MW"
52
- @test UMT . get_unit (1.0 ^ (t / τ)) == UMT . unitless
53
- @test UMT . get_unit (exp (t / τ)) == UMT . unitless
54
- @test UMT . get_unit (sin (t / τ)) == UMT . unitless
55
- @test UMT . get_unit (sin (1 * u " rad" )) == UMT . unitless
56
- @test UMT . get_unit (t^ 2 ) == u " ms^2"
33
+ @test ModelingToolkit . get_unit (τ^- 1 ) == u " ms^-1"
34
+ @test ModelingToolkit . equivalent (ModelingToolkit . get_unit (D (E)), u " MW" )
35
+ @test ModelingToolkit . equivalent (ModelingToolkit . get_unit (E / τ), u " MW" )
36
+ @test ModelingToolkit . get_unit (2 * P) == u " MW"
37
+ @test ModelingToolkit . get_unit (t / τ) == unitless
38
+ @test ModelingToolkit . equivalent (ModelingToolkit . get_unit (P - E / τ), u " MW" )
39
+ @test ModelingToolkit . equivalent (ModelingToolkit . get_unit (D (D (E))), u " MW/ms" )
40
+ @test ModelingToolkit . get_unit (ifelse (t > t, P, E / τ)) == u " MW"
41
+ @test ModelingToolkit . get_unit (1.0 ^ (t / τ)) == unitless
42
+ @test ModelingToolkit . get_unit (exp (t / τ)) == unitless
43
+ @test ModelingToolkit . get_unit (sin (t / τ)) == unitless
44
+ @test ModelingToolkit . get_unit (sin (1 * u " rad" )) == unitless
45
+ @test ModelingToolkit . get_unit (t^ 2 ) == u " ms^2"
57
46
58
47
eqs = [D (E) ~ P - E / τ
59
48
0 ~ P]
60
- @test UMT . validate (eqs)
49
+ @test ModelingToolkit . validate (eqs)
61
50
@named sys = System (eqs, t)
62
51
63
- @test ! UMT . validate (D (D (E)) ~ P)
64
- @test ! UMT . validate (0 ~ P + E * τ)
52
+ @test ! ModelingToolkit . validate (D (D (E)) ~ P)
53
+ @test ! ModelingToolkit . validate (0 ~ P + E * τ)
65
54
66
55
# Disabling unit validation/checks selectively
67
56
@test_throws MT. ArgumentError System (eqs, t, [E, P, t], [τ], name = :sys )
102
91
good_eqs = [connect (p1, p2)]
103
92
bad_eqs = [connect (p1, p2, op)]
104
93
bad_length_eqs = [connect (op, lp)]
105
- @test UMT . validate (good_eqs)
106
- @test ! UMT . validate (bad_eqs)
107
- @test ! UMT . validate (bad_length_eqs)
94
+ @test ModelingToolkit . validate (good_eqs)
95
+ @test ! ModelingToolkit . validate (bad_eqs)
96
+ @test ! ModelingToolkit . validate (bad_length_eqs)
108
97
@named sys = System (good_eqs, t, [], [])
109
98
@test_throws MT. ValidationError System (bad_eqs, t, [], []; name = :sys )
110
99
@@ -144,7 +133,7 @@ noiseeqs = [0.1u"MW" 0.1u"MW"
144
133
# Invalid noise matrix
145
134
noiseeqs = [0.1 u " MW" 0.1 u " MW"
146
135
0.1 u " MW" 0.1 u " s" ]
147
- @test ! UMT . validate (eqs, noiseeqs)
136
+ @test ! ModelingToolkit . validate (eqs, noiseeqs)
148
137
149
138
# Non-trivial simplifications
150
139
@independent_variables t [unit = u " s" ]
236
225
@test ModelingToolkit. getdefault (sys. a) ≈ [0.01 , 0.03 ]
237
226
238
227
@variables x (t)
239
- @test ModelingToolkit. get_unit (sin (x)) == ModelingToolkit . unitless
228
+ @test ModelingToolkit. get_unit (sin (x)) == unitless
240
229
241
230
@mtkmodel ExpressionParametersTest begin
242
231
@parameters begin
0 commit comments