# DimensionfulAngles.jl

Extends Unitful.jl to include *angle* as a dimension and allow dispatching on *angles*.

⚙

Installation

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 DimensionfulAngles`

📜

Documentation

The full documentation can be found at https://cmichelenstrofer.github.io/DimensionfulAngles.

📝

Citing

If 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}
}
```

## Basic Usage

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⁻¹
```

## Contributing

Contributions are welcome!

✨

Contributors Thanks goes to these wonderful people (emoji key):

_{Carlos A. Michelén Ströfer} |
_{Sebastian Stock} |
_{Kristoffer Carlsson} |
_{Daniel Boland} |

## Acknowledgments

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.