Skip to content

Commit e08b602

Browse files
committed
Switch from as_u to uconvert
- Motive: for consistency with Unitful - Also, we make the first argument the symbolic quantity
1 parent 9ffa627 commit e08b602

File tree

6 files changed

+20
-18
lines changed

6 files changed

+20
-18
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,9 +207,9 @@ julia> expand_units(x^2)
207207
8.987551787368176e16 m² s⁻⁴
208208
```
209209

210-
You can also convert a quantity in regular base SI units to symbolic units with `as_u`:
210+
You can also convert a quantity in regular base SI units to symbolic units with `uconvert`:
211211
```julia
212-
julia> as_u(5e-9u"m", us"nm") # can also write 5e-9u"m" |> as_u(us"nm")
212+
julia> uconvert(us"nm", 5e-9u"m") # can also write 5e-9u"m" |> uconvert(us"nm")
213213
5.0 nm
214214
```
215215

docs/src/examples.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ julia> p = sqrt(2 * m_e * (E - Φ)) # momentum of ejected electrons
3030
julia> λ = h / p # wavelength of ejected electrons
3131
3.029491247878056e-9 m
3232
33-
julia> as_u(λ, us"nm") # return answer in nanometers
33+
julia> uconvert(us"nm", λ) # return answer in nanometers
3434
3.0294912478780556 nm
3535
```
3636
Since units are automatically propagated, we can verify the dimension of our answer and all intermediates.

docs/src/symbolic_units.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ To convert a quantity to its regular base SI units, use `expand_units`:
2020
expand_units
2121
```
2222

23-
To convert a quantity in regular base SI units to corresponding symbolic units, use `as_u`:
23+
To convert a quantity in regular base SI units to corresponding symbolic units, use `uconvert`:
2424

2525
```@docs
26-
as_u
26+
uconvert
2727
```

src/DynamicQuantities.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ export AbstractQuantity, AbstractDimensions
55
export Quantity, Dimensions, SymbolicDimensions, QuantityArray, DimensionError
66
export ustrip, dimension
77
export ulength, umass, utime, ucurrent, utemperature, uluminosity, uamount
8-
export uparse, @u_str, sym_uparse, @us_str, expand_units, as_u
8+
export uparse, @u_str, sym_uparse, @us_str, expand_units, uconvert
99

1010
include("fixed_rational.jl")
1111
include("types.jl")

src/symbolic_dimensions.jl

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -98,38 +98,40 @@ end
9898
9999
Expand the symbolic units in a quantity to their base SI form.
100100
In other words, this converts a `Quantity` with `SymbolicDimensions`
101-
to one with `Dimensions`.
101+
to one with `Dimensions`. The opposite of this function is `uconvert`,
102+
for converting to specific symbolic units, or `convert(Quantity{<:Any,<:SymbolicDimensions}, q)`,
103+
for assuming SI units as the output symbols.
102104
"""
103105
function expand_units(q::Q) where {T,R,D<:SymbolicDimensions{R},Q<:AbstractQuantity{T,D}}
104106
return convert(constructor_of(Q){T,Dimensions{R}}, q)
105107
end
106108
expand_units(q::QuantityArray) = expand_units.(q)
107109

108110
"""
109-
as_u(q::AbstractQuantity{<:Any, <:Dimensions}, qout::AbstractQuantity{<:Any, <:SymbolicDimensions})
110-
as_u(q::AbstractQuantity{<:Any, <:Dimensions}, ustr::String)
111+
uconvert(qout::AbstractQuantity{<:Any, <:SymbolicDimensions}, q::AbstractQuantity{<:Any, <:Dimensions})
112+
uconvert(ustr::String, q::AbstractQuantity{<:Any, <:Dimensions})
111113
112114
Convert a quantity `q` with base SI units to the symbolic units of `qout`, for `q` and `qout` with compatible units.
113115
Mathematically, the result has value `q / expand_units(qout)` and units `dimension(qout)`.
114116
For string input, `qout` is created by parsing `ustr` as a symbolic unit, i.e. `qout = sym_uparse(ustr)`.
115117
"""
116-
function as_u(q::AbstractQuantity{<:Any, <:Dimensions}, qout::AbstractQuantity{<:Any, <:SymbolicDimensions})
118+
function uconvert(qout::AbstractQuantity{<:Any, <:SymbolicDimensions}, q::AbstractQuantity{<:Any, <:Dimensions})
117119
qout_expanded = expand_units(qout)
118120
dimension(q) == dimension(qout_expanded) || throw(DimensionError(q, qout_expanded))
119121
return new_quantity(typeof(qout), ustrip(q) / ustrip(qout_expanded), dimension(qout))
120122
end
121-
as_u(q::AbstractQuantity{<:Any, <:Dimensions}, ustr::String) = as_u(q, sym_uparse(ustr))
123+
uconvert(ustr::String, q::AbstractQuantity{<:Any, <:Dimensions}) = uconvert(sym_uparse(ustr), q)
122124

123125
"""
124-
as_u(qout::AbstractQuantity{<:Any, <:SymbolicDimensions})
125-
as_u(ustr::String)
126+
uconvert(qout::AbstractQuantity{<:Any, <:SymbolicDimensions})
127+
uconvert(ustr::String)
126128
127129
Create a function that converts an input quantity `q` with base SI units to the symbolic units of `qout`, i.e
128-
a function equivalent to `q -> as_u(q, qout)`.
130+
a function equivalent to `q -> uconvert(qout, q)`.
129131
For string input, `qout` is created by parsing `ustr` as a symbolic unit, i.e. `qout = sym_uparse(ustr)`.
130132
"""
131-
as_u(qout::AbstractQuantity{<:Any, <:SymbolicDimensions}) = Base.Fix2(as_u, qout)
132-
as_u(ustr::String) = Base.Fix2(as_u, ustr)
133+
uconvert(qout::AbstractQuantity{<:Any, <:SymbolicDimensions}) = Base.Fix1(uconvert, qout)
134+
uconvert(ustr::String) = uconvert(sym_uparse(ustr))
133135

134136
Base.copy(d::SymbolicDimensions) = SymbolicDimensions(copy(getfield(d, :nzdims)), copy(getfield(d, :nzvals)))
135137
function Base.:(==)(l::SymbolicDimensions, r::SymbolicDimensions)

test/unittests.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -569,8 +569,8 @@ end
569569
@test us"Constants.h" != us"h"
570570
@test expand_units(us"Constants.h") == u"Constants.h"
571571

572-
@test as_u(5e-9u"m", us"nm") as_u(5e-9u"m", "nm") (5e-9u"m" |> as_u(us"nm")) (5e-9u"m" |> as_u("nm")) 5us"nm"
573-
@test_throws DimensionError as_u(5e-9u"m", us"nm * J")
572+
@test uconvert(us"nm", 5e-9u"m") uconvert("nm", 5e-9u"m") (5e-9u"m" |> uconvert(us"nm")) (5e-9u"m" |> uconvert("nm")) 5us"nm"
573+
@test_throws DimensionError uconvert(us"nm * J", 5e-9u"m")
574574

575575
# Actually expands to:
576576
@test dimension(us"Constants.h")[:m] == 2

0 commit comments

Comments
 (0)