Skip to content

Commit 54158ca

Browse files
authored
Merge pull request #98 from SymbolicML/unitful-compatibility
More unitful compatibility
2 parents 6d53d77 + a6df107 commit 54158ca

File tree

4 files changed

+34
-10
lines changed

4 files changed

+34
-10
lines changed

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,14 @@ julia> x = 0.3u"km/s"
7878

7979
julia> y = 42 * u"kg"
8080
42.0 kg
81+
```
82+
83+
or by importing explicitly:
84+
85+
```julia
86+
julia> using DynamicQuantities: kPa
8187

82-
julia> room_temp = 100u"kPa"
88+
julia> room_temp = 100kPa
8389
100000.0 m⁻¹ kg s⁻²
8490
```
8591

docs/src/examples.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,13 @@ using DynamicQuantities
4747
Set up initial conditions as quantities:
4848

4949
```julia
50-
y0 = 10u"km"
51-
v0 = 250u"m/s"
50+
# Can explicitly import units:
51+
using DynamicQuantities: km, m, s, min
52+
53+
y0 = 10km
54+
v0 = 250m/s
5255
θ = deg2rad(60)
53-
g = 9.81u"m/s^2"
56+
g = 9.81m/s^2
5457
```
5558

5659
Next, we use trig functions to calculate x and y components of initial velocity.
@@ -67,7 +70,7 @@ Note that these are the same dimension (time), so it's fine to treat
6770
them as dimensionally equivalent!
6871

6972
```julia
70-
t = range(0u"s", 1.3u"min", length=100)
73+
t = range(0s, 1.3min, length=100)
7174
```
7275

7376
Next, use kinematic equations to calculate x and y as a function of time.

src/DynamicQuantities.jl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,18 @@ import .Units
2828
import .Constants
2929
import .UnitsParse: uparse, @u_str
3030

31+
using .Units: UNIT_SYMBOLS
32+
33+
# Copy all units to top level:
34+
let _units_import_expr = :(using .Units: m, g)
35+
append!(
36+
_units_import_expr.args[1].args,
37+
map(s -> Expr(:(.), s), filter(s -> s (:m, :g), UNIT_SYMBOLS))
38+
)
39+
eval(_units_import_expr)
40+
end
41+
42+
3143
function __init__()
3244
@require_extensions
3345
end

src/units.jl

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ end
5959
@add_prefixes mol (m,)
6060

6161
@doc(
62-
"Length in meters. Available variants: `fm`, `pm`, `nm`, `μm` (/`um`), `cm`, `dm`, `mm`, `km`, `Mm`, `Gm`.",
62+
"Length in meters. Available variants: `fm`, `pm`, `nm`, `μm` (/`um`), `cm`, `inch`, `dm`, `mm`, `ft`, `km`, `mi`, `Mm`, `Gm`.",
6363
m,
6464
)
6565
@doc(
@@ -100,11 +100,11 @@ end
100100
@register_unit ohm Ω
101101
@register_unit T N / (A * m)
102102

103-
@add_prefixes Hz (k, M, G)
103+
@add_prefixes Hz (n, μ, u, m, k, M, G)
104104
@add_prefixes N ()
105105
@add_prefixes Pa (k,)
106106
@add_prefixes J (k,)
107-
@add_prefixes W (k, M, G)
107+
@add_prefixes W (m, k, M, G)
108108
@add_prefixes C ()
109109
@add_prefixes V (m, k, M, G)
110110
@add_prefixes F ()
@@ -114,7 +114,7 @@ end
114114

115115
# SI derived units
116116
@doc(
117-
"Frequency in Hertz. Available variants: `kHz`, `MHz`, `GHz`.",
117+
"Frequency in Hertz. Available variants: `nHz`, `μHz` (/`uHz`), `mHz`, `kHz`, `MHz`, `GHz`.",
118118
Hz,
119119
)
120120
@doc(
@@ -130,7 +130,7 @@ end
130130
J,
131131
)
132132
@doc(
133-
"Power in Watts. Available variants: `kW`, `MW`, `GW`.",
133+
"Power in Watts. Available variants: `mW`, `kW`, `MW`, `GW`.",
134134
W,
135135
)
136136
@doc(
@@ -164,6 +164,9 @@ end
164164
@register_unit d day
165165
@register_unit wk 7 * day
166166
@register_unit yr 365.25 * day
167+
@register_unit inch 2.54 * cm
168+
@register_unit ft 12 * inch
169+
@register_unit mi 5280 * ft
167170

168171
@add_prefixes min ()
169172
@add_prefixes minute ()

0 commit comments

Comments
 (0)