A library that extends SIUnits.jl to handle units through a string macro and enables the user to select the display unit.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
deps
src
test
.gitignore
.travis.yml
LICENSE.md
README.md
REQUIRE
appveyor.yml

README.md

Linux: Build Status   Windows: Build status

EngUnits

This library extends SIUnits.jl to handle Engineering units through a string macro. Variables with units can be written as:

julia> a = 3*25.4u"mm"
0.07619999999999999 m
julia> b = 4 * u"inch"
0.1016 m
julia> sqrt(a^2 + b^2)==5u"inch"

All units inputted with the unit string u"", will be converted to the SI unit equvilant, hence one inch is converted to 0.00254 m. SI prefixes and operators can also be used in a unit string as:

julia> 1.0u"N/mm^2"
1.0e6 Pa

As it is an extension of SIUnits.jl it can also multiply units as:

julia> 1u"N"/1u"m^2"
1.0 Pa

The package do also enable the user to select the display unit as:

julia> a = 1000u"N*m"
1000.0 J
julia> display_unit(u"kN*m", "kN m")

julia> b = 1u"kN*m"
1.0 kN m

julia> unitless(a) == unitless(b)
true

Even though the display unit is kN m the calculations is performed using the siunit and the value of a and b are therefore the same. the only difference is how the value is displayed to the user.

Known issues/limitations

  • u"in" do not give inches use u"inch" instead. This is caused by in is a infix operator in julia and because the unit string macro use julia's parser to parse the unit strings in cannot be used to mean inches.
  • Not all methods can take units. If a method do not take unitfull arguments then a unit can be converted to a unitless value by calling unitless on the variable.

Don't hesitate to file an issue or pull-request to improve the package.