Extends Unitful.jl to include angle as a dimension and allow dispatching on angles.
Install DimensionfulAngles.jl the usual way Julia packages are installed, i.e., using Julia package manager:
using Pkg
Pkg.add("DimensionfulAngles")or in the Pkg REPL (enter from the Julia REPL with ]):
pkg> add DimensionfulAnglesIf you use this code for your research please consider citing:
Michelén Ströfer, C. A. (2022). DimensionfulAngles.jl (Version 0.1.0) [Computer software]. https://github.com/cmichelenstrofer/DimensionfulAngles.jl
BibTeX:
@software{Michelen_Strofer_DimensionfulAngles_jl_2022,
author = {Michelén Ströfer, Carlos Alejandro},
doi = {10.5281/zenodo.7500588},
month = {12},
title = {{DimensionfulAngles.jl}},
url = {https://github.com/cmichelenstrofer/DimensionfulAngles.jl},
version = {0.1.0},
year = {2022}
}
Use DimensionfulAngles.jl for units containing angles and Unitful.jl for all other units.
The units in DimensionfulAngles.jl are differentiated from their dimensionless counterparts with a subscript ᵃ.
Simply add this subscript to any angle units to make it dimensionful.
In Julia environments this can be typed as \^a<tab>.
julia> using Unitful
julia> using DimensionfulAngles
julia> dimensionless_angle = 1u"rad"
1 rad
julia> dimensionful_angle = 1u"radᵃ"
1 rad
julia> typeof(dimensionless_angle)
Quantity{Int64, NoDims, Unitful.FreeUnits{(rad,), NoDims, nothing}}
julia> typeof(dimensionful_angle)
Quantity{Int64, 𝐀, Unitful.FreeUnits{(rad,), 𝐀, nothing}}When defining quantities with units from DimensionfulAngles.jl you can use the ua string instead and omit the subscript ᵃ.
But when defining quantities with units from both it is more convenient to use the u string.
julia> dimensionful_angle = 1ua"rad"
1 rad
julia> typeof(dimensionful_angle)
Quantity{Int64, 𝐀, Unitful.FreeUnits{(rad,), 𝐀, nothing}}
julia> angular_velocity = 1.2u"radᵃ/s"
1.2 rad s⁻¹
julia> typeof(angular_velocity)
Quantity{Float64, 𝐀 𝐓⁻¹, Unitful.FreeUnits{(rad, s⁻¹), 𝐀 𝐓⁻¹, nothing}}A third alternative is to directly import only the units you will be using and renaming those from DimensionfulAngles.jl to remove the superscript ᵃ.
julia> using Unitful
julia> using Unitful: m, s, kg
julia> using DimensionfulAngles: radᵃ as rad, °ᵃ as °
julia> angular_velocity = 1.2rad / s
1.2 rad s⁻¹Contributions are welcome! 🎊 Please see the contribution guidelines for ways to contribute to the project.
Thanks goes to these wonderful people (emoji key):
Carlos A. Michelén Ströfer 💻 📖 |
Sebastian Stock 🤔 |
Kristoffer Carlsson 🚧 |
Daniel Boland 🤔 |
Some portions of this software are adapted from:
- UnitfulAngles.jl: Copyright (c) 2017: Yakir Luc Gagnon.
- UnitfulUS.jl: Copyright (c) 2017, California Institute of Technology. All rights reserved.