@@ -2,66 +2,55 @@ using ModelingToolkit, OrdinaryDiffEq, JumpProcesses, Unitful
22using Test
33MT = ModelingToolkit
44
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 )
198@independent_variables t [unit = u " ms" ]
209@parameters τ [unit = u " ms" ] γ
2110@variables E (t) [unit = u " kJ" ] P (t) [unit = u " MW" ]
2211D = Differential (t)
2312
2413# 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 / τ)^ γ))
2817
2918# 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
3625
3726# Prohibited unit types
3827@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 (γ)
4231
4332# 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"
5746
5847eqs = [D (E) ~ P - E / τ
5948 0 ~ P]
60- @test UMT . validate (eqs)
49+ @test ModelingToolkit . validate (eqs)
6150@named sys = System (eqs, t)
6251
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 * τ)
6554
6655# Disabling unit validation/checks selectively
6756@test_throws MT. ArgumentError System (eqs, t, [E, P, t], [τ], name = :sys )
10291good_eqs = [connect (p1, p2)]
10392bad_eqs = [connect (p1, p2, op)]
10493bad_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)
10897@named sys = System (good_eqs, t, [], [])
10998@test_throws MT. ValidationError System (bad_eqs, t, [], []; name = :sys )
11099
@@ -144,7 +133,7 @@ noiseeqs = [0.1u"MW" 0.1u"MW"
144133# Invalid noise matrix
145134noiseeqs = [0.1 u " MW" 0.1 u " MW"
146135 0.1 u " MW" 0.1 u " s" ]
147- @test ! UMT . validate (eqs, noiseeqs)
136+ @test ! ModelingToolkit . validate (eqs, noiseeqs)
148137
149138# Non-trivial simplifications
150139@independent_variables t [unit = u " s" ]
236225@test ModelingToolkit. getdefault (sys. a) ≈ [0.01 , 0.03 ]
237226
238227@variables x (t)
239- @test ModelingToolkit. get_unit (sin (x)) == ModelingToolkit . unitless
228+ @test ModelingToolkit. get_unit (sin (x)) == unitless
240229
241230@mtkmodel ExpressionParametersTest begin
242231 @parameters begin
0 commit comments