Similitude

Physical unit system constants (Metric, English, Natural, etc...)

DOI

In aggregate, the UnitSystem data generated here constitutes a new universal standardization for dimensional analysis, which generalizes upon previous historical systems up to the 2019 redefinition and unifies them in a common Universe. This enables a more precise and generalized standardization than the 2019 redefinition, which was comparatively limited in scope. Specified default UnitSystem values are to be taken as a newly defined mutually-compatible recommended standard, verified to be consistent and coherent. A UnitSystem can only be useful as a measuring standard if it can be scientifically reproduced, so the data here has been implemented in several important scientific programming languages (initially in the Julia language but also Wolfram language and Rust language) as well as presented abstractly in terms of dimensional formulas.

In fact there is nothing transcendental about dimensions; the ultimate principle is precisely expressible (in Newton's terminology) as one of similitude, exact or approximate, to be tested by the rule that mere change in the magnitudes of the ordered scheme of units of measurement that is employed must not affect sensibly the forms of the equations that are the adequate expression of the underlying relations of the problem. (J.L.)

Specifications for dimensional units are in the UnitSystems.jl and Similitude.jl and MeasureSystems.jl repositories. The three packages are designed so that they can be interchanged with compatibility. On its own UnitSystems is the fastest package, while Similitude (provides Quantity type) and MeasureSystems (introduces Measurements.jl uncertainty) build additional features on top of UnitSystems base defintions. Additionally, in the UnitSystems repository there is an equivalent Wolfram language paclet Kernel and also an unmaintained Rust src implementation. Defaults are shared: Metric, SI2019, CODATA, Conventional, International, InternationalMean, MetricTurn, MetricGradian, MetricDegree, MetricArcminute, MetricArcsecond, Engineering, Gravitational, FPS, IPS, British, English, Survey, Gauss, LorentzHeaviside, EMU, ESU, IAU, IAUE, IAUJ, Hubble, Cosmological, CosmologicalQuantum, Meridian, Nautical, MPH, KKH, MTS, FFF, Planck, PlanckGauss, Stoney, Hartree, Rydberg, Schrodinger, Electronic, Natural, NaturalGauss, QCD, QCDGauss, QCDoriginal.

julia> using UnitSystems # or Similitude or MeasureSystems
UnitSystems.similitudeFunction
UnitSystems.similitude() = haskey(ENV,"SIMILITUDE")

An optional environment variable ENV["SIMILITUDE"] induces UnitSystems.similitude() to return true, giving flexibility for building dependencies whenever it is desirable to toggle usage between UnitSystems (default) and Similitude (requires environment variable specification). For example, in MeasureSystems and Geophysics this option is used to increase flexibility with variety in local compilation workflow.

A UnitSystem is a consistent set of dimensional values selected to accomodate a particular use case standardization. It is possible to convert derived physical quantities from any UnitSystem specification into any other using accurate values. Eleven fundamental constants kB, ħ, 𝘤, μ₀, mₑ, Mᵤ, Kcd, ϕ, λ, αL, g₀ are used to govern a specific unit system consistent scaling. These are the constants boltzmann, planckreduced, lightspeed, vacuumpermeability, electronmass, molarmass, luminousefficacy, angle, rationalization, lorentz, and gravity. Different choices of natural units or physical measurements result in a variety of unit systems for many purposes.

\[k_B, \qquad \hbar, \qquad c, \qquad \mu_0, \qquad m_e, \qquad M_u, \qquad K_{cd}, \qquad \phi, \qquad \lambda, \qquad \alpha_L, \qquad g_0\]

Historically, older electromagnetic unit systems also relied on a rationalization constant λ and a lorentz force proportionality constant αL. In most unit systems these extra constants have a value of 1 unless specified.

UnitSystems.UnitSystemType
UnitSystem(kB, ħ, 𝘤, μ₀, mₑ, Mᵤ, Kcd, ϕ, λ, αL, g₀, Universe)

A UnitSystem is a consistent set of dimensional values selected to accomodate a particular use case or standardization. It is possible to convert derived physical quantities from any UnitSystem specification into any other using accurate values. Eleven fundamental constants kB, ħ, 𝘤, μ₀, mₑ, Mᵤ, Kcd, ϕ, λ, αL, g₀ are used to govern a specific unit system consistent scaling. Different choices of natural units or physical measurements result in a variety of unit systems for many purposes.

Fundamental constants of physics are: kB Boltzmann's constant, ħ reduced Planck's constant, 𝘤 speed of light, μ₀ vacuum permeability, mₑ electron rest mass, Mᵤ molar mass, Kcd luminous efficacy, ϕ radian angle, λ Gauss rationalization, αL Lorentz's constant, and g₀ gravitational force reference. Primarily the Metric SI unit system is used in addition to the historic English engineering unit system. These constants induce derived values for avogadro, boltzmann, molargas, planck, planckreduced, lightspeed, planckmass, dalton, protonmass, electronmass, newton, einstein, vacuumpermeability, vacuumpermittivity, electrostatic, and additional constants molarmass, luminousefficacy, gravity, radian, turn, spat, stefan, radiationdensity, magnetostatic, lorentz, biotsavart, rationalization, vacuumimpedance, elementarycharge, magneton, conductancequantum, faraday, magneticfluxquantum, josephson, klitzing, hartree, rydberg, bohr.

Standardized unit/derived quantities are hyperfine, loschmidt, wienwavelength, wienfrequency, mechanicalheat, eddington, solarmass, jupitermass, earthmass, lunarmass, earthradius, greatcircle, radarmile, hubble, cosmological, steradian, spatian, degree, squaredegree, gradian, bradian, arcminute, arcsecond, second, minute, hour, day, gaussianmonth, siderealmonth, synodicmonth, year, gaussianyear, siderealyear, jovianyear, angstrom, inch, foot, surveyfoot, yard, meter, earthmeter, mile, statutemile, meridianmile, admiraltymile, nauticalmile, lunardistance, astronomicalunit, jupiterdistance, lightyear, parsec, barn, hectare, acre, surveyacre, liter, gallon, quart, pint, cup, fluidounce, teaspoon, tablespoon, bubnoff, ips, fps, fpm, ms, kmh, mph, knot, mps, grain, gram, earthgram, kilogram, tonne, ton, pound, ounce, slug, slinch, hyl, dyne, newton, poundal, poundforce, kilopond, psi, pascal, bar, barye, technicalatmosphere, atmosphere, inchmercury, torr, electronvolt, erg, joule, footpound, calorie, kilocalorie, meancalorie, earthcalorie, thermalunit, gasgallon, tontnt, watt, horsepower, horsepowerwatt, horsepowermetric, electricalhorsepower, tonsrefrigeration, boilerhorsepower, coulomb, earthcoulomb, ampere, volt, henry, ohm, siemens, farad, weber, tesla, abcoulomb, abampere, abvolt, abhenry, abohm, abmho, abfarad, maxwell, gauss, oersted, gilbert, statcoulomb, statampere, statvolt, stathenry, statohm, statmho, statfarad, statweber, stattesla, kelvin, rankine, celsius, fahrenheit, sealevel, boiling, mole, earthmole, poundmole, slugmole, slinchmole, katal, amagat, lumen, candela, lux, phot, footcandle, nit, apostilb, stilb, lambert, footlambert, bril, talbot, lumerg, neper, bel, decibel, hertz, apm, rpm, kayser, diopter, rayleigh, flick, gforce, galileo, eotvos, darcy, poise, reyn, stokes, rayl, mpge, langley, jansky, solarflux, curie, gray, roentgen, rem.

Additional reference UnitSystem variants: EMU, ESU, Gauss, LorentzHeaviside, SI2019, SI1976, CODATA, Conventional, International, InternationalMean, Engineering, Gravitational, IAU, IAUE, IAUJ, FPS, IPS, British, Survey, Hubble, Cosmological, CosmologicalQuantum, Meridian, Nautical, MPH, KKH, MTS, FFF; and natural atomic units based on gravitational coupling and finestructure constant (Planck, PlanckGauss, Stoney, Hartree, Rydberg, Schrodinger, Electronic, Natural, NaturalGauss, QCD, QCDGauss, and QCDoriginal).

Derived dimensions can be obtained from multiplicative base of 11 fundamental dimension symbols F, M, L, T, Q, Θ, N, J, A, R, C corresponding to force, mass, length, time, charge, temperature, molaramount, luminousflux, angle, demagnetizingfactor, and a nonstandard dimension. Specification of a UnitSystem is in dimensions of entropy, angularmomentum, speed, permeability, mass, molarmass, luminousefficacy, angle, rationalization, lorentz, gravityforce; whose Constant values are interpreted by units.

Mechanics: angle, angle, solidangle, time, angulartime, length, angularlength, area, angulararea, volume, wavenumber, angularwavenumber, fuelefficiency, numberdensity, frequency, angularfrequency, frequencydrift, stagnance, speed, acceleration, jerk, snap, crackle, pop, volumeflow, etendue, photonintensity, photonirradiance, photonradiance, inertia, mass, massflow, lineardensity, areadensity, density, specificweight, specificvolume, force, specificforce, gravityforce, pressure, compressibility, viscosity, diffusivity, rotationalinertia, impulse, momentum, angularmomentum, yank, energy, specificenergy, action, fluence, power, powerdensity, irradiance, radiance, radiantintensity, spectralflux, spectralexposure, soundexposure, impedance, specificimpedance, admittance, compliance, inertance; Electromagnetics: charge, chargedensity, linearchargedensity, exposure, mobility, current, currentdensity, resistance, conductance, resistivity, conductivity, capacitance, inductance, reluctance, permeance, permittivity, permeability, susceptibility, specificsusceptibility, demagnetizingfactor, vectorpotential, electricpotential, magneticpotential, electricfield, magneticfield, electricflux, magneticflux, electricdisplacement, magneticfluxdensity, electricdipolemoment, magneticdipolemoment, electricpolarizability, magneticpolarizability, magneticmoment, specificmagnetization, polestrength; Thermodynamics: temperature, entropy, specificentropy, volumeheatcapacity, thermalconductivity, thermalconductance, thermalresistivity, thermalresistance, thermalexpansion, lapserate, molarmass, molality, molaramount, molarity, molarvolume, molarentropy, molarenergy, molarconductivity, molarsusceptibility, catalysis, specificity, diffusionflux, luminousflux, luminousintensity, luminance, illuminance, luminousenergy, luminousexposure, luminousefficacy.

Specification of Universe with the dimensionless Coupling constants coupling, finestructure, electronunit, protonunit, protonelectron, and darkenergydensity. Alterations to these values can be facilitated and quantified using parametric polymorphism. Due to the Coupling interoperability, the MeasureSystems package is made possible to support calculations with Measurements having error standard deviations.

Similar packages: UnitSystems.jl, Similitude.jl, MeasureSystems.jl, PhysicalConstants.jl, MathPhysicalConstants.jl, Unitful.jl, UnitfulUS.jl, UnitfulAstro.jl, UnitfulAtomic.jl, NaturallyUnitful.jl, and UnitfulMoles.jl.

Multiplicative Group

In the base UnitSystems package, simply Float64 numbers are used to generate the group of UnitSystem constants. However, in the Similitude package, instead Constant numbers are used to generate an abstract multiplicative Group, which is only converted to a Float64 value at compile time where appropriate.

FieldConstants.ConstantType

In UnitSystems and Similitude, the spectrum of Constant values is generated by a group of 11 mathematical constants (7 Integer primes and 4 Irrational numbers) with 33 physical measurement definitions. These are 𝟐, 𝟑, 𝟓, 𝟕, 𝟏𝟏, 𝟏𝟗, 𝟒𝟑, φ, γ, , τ, kB, NA, 𝘩, 𝘤, 𝘦, Kcd, ΔνCs, R∞, α, μₑᵤ, μₚᵤ, ΩΛ, H0, g₀, aⱼ, au, ft, ftUS, lb, T₀, atm, inHg, RK90, KJ90, RK, KJ, Rᵤ2014, Ωᵢₜ, Vᵢₜ, kG, mP, GME, GMJ.

Constant{N} <: Real

Numerical field constant N with known value at compile time.

julia> Constant(100)
100

Operations on Constant are closed (*, /, +, -, ^), yet they also behave like Float64 values when mixed with non-Constant arguments.

source
MeasureSystems.twoConstant
julia> one # 𝟏
𝟏 = 1.0

julia> two # 𝟐
2 = 2.0

julia> three # 𝟑
3 = 3.0

julia> five # 𝟓
5 = 5.0

julia> seven # 𝟕
7 = 7.0

julia> eleven # 𝟏𝟏
11 = 11.0

julia> nineteen # 𝟏𝟗
19 = 19.0

julia> fourtythree # 𝟒𝟑
43 = 43.0

julia> sixty # 𝟔𝟎
2²3⋅5 = 60.0
MeasureSystems.tauConstant
Constant{N} where N

Truncated Irrational constant N with known value at compile time.

julia> golden # φ
φ = 1.618033988749895

julia> eulergamma # γ
γ = 0.5772156649015329

julia> exp # ℯ
ℯ = 2.718281828459045

julia> pi # π
3.141592653589793

julia> tau # τ
τ = 6.283185307179586

Furthermore, in Similitude there is a dimension type which encodes the dimensional Group{:USQ} for the Quantity type using the same implementation principles as Constant. This enables the unified usage of Group homomorphisms to transform Quantity algebra elements with varying numbers of dimensionless constants.

Originally, the Newtonian group used for UnitSystems would be made up of force, mass, length, time (or F, M, L, T). Although force is typically thought of as a derived dimension when the reference gravity is taken to be dimensionless, force is actually considered a base dimension in general engineering UnitSystem foundations. With the development of electricity and magnetism came an interest for an additional dimension called charge or Q. When the thermodynamics of entropy became further developed, the temperature or Θ was introduced as another dimension. In the field of chemistry, it became desirable to introduce another dimension of molaramount or N as fundamental. To complete the existing International System of Quantities (ISQ) it is also necessary to consider luminousflux or J as a visual perception related dimension. In order to resolve ambiguity with solidangle unit conversion, angle or A is explicitly tracked in the underlying dimension and Group. However, this is yet insufficient to fully specify all the historical variations of UnitSystem, including the EMU, ESU, Gauss and LorentzHeavise specifications. Therefore, there is also a dimension basis for rationalization (denoted R) and lorentz (denoted by C⁻¹).

In combination, all these required base dimension definitions are necessary in order to coherently implement unit conversion for Quantity elements. Since the existing International System of Quantities (ISQ) is an insufficient definition for dimension, a new Unified System of Quantities (USQ) is being proposed here as composed of force, mass, length, time, charge, temperature, molaramount, luminousflux, angle, rationalization, and a nonstandard dimension (denoted by F, M, L, T, Q, Θ,N, J, A, R, C).

Similitude.USQConstant

Physical dimension Constant represented by Group element D.

F, M, L, T, Q, Θ, N, J, A, R, C

Operations on Constant are closed (*, /, +, -, ^).

julia> force(Unified)
F [ħ⁻¹𝘤³mₑ²ϕ⁻¹g₀⁻²] Unified

julia> mass(Unified)
M [mₑ] Unified

julia> length(Unified)
L [ħ⋅𝘤⁻¹mₑ⁻¹ϕ⋅g₀] Unified

julia> time(Unified)
T [ħ⋅𝘤⁻²mₑ⁻¹ϕ⋅g₀] Unified

julia> charge(Unified)
Q [ħ¹ᐟ²𝘤⁻¹ᐟ²μ₀⁻¹ᐟ²ϕ¹ᐟ²λ⁻¹ᐟ²αL⁻¹] Unified

julia> temperature(Unified)
Θ [kB⁻¹𝘤²mₑ⋅g₀⁻¹] Unified

julia> molaramount(Unified)
N [mₑ⋅Mᵤ⁻¹] Unified

julia> luminousflux(Unified)
J [ħ⁻¹𝘤⁴mₑ²Kcd⋅ϕ⁻¹g₀⁻²] Unified

julia> angle(Unified)
A [ϕ] Unified

julia> rationalization(Unified)
R [λ] Unified

julia> lorentz(Unified)
C⁻¹ [αL] Unified

Derived dimension can be obtained from multiplicative base of 11 fundamental dimension symbols corresponding to force, mass, length, time, charge, temperature, molaramount, luminousflux, angle, demagnetizingfactor, and a nonstandard dimension.

Mechanics: angle, angle, solidangle, time, angulartime, length, angularlength, area, angulararea, volume, wavenumber, angularwavenumber, fuelefficiency, numberdensity, frequency, angularfrequency, frequencydrift, stagnance, speed, acceleration, jerk, snap, crackle, pop, volumeflow, etendue, photonintensity, photonirradiance, photonradiance, inertia, mass, massflow, lineardensity, areadensity, density, specificweight, specificvolume, force, specificforce, gravityforce, pressure, compressibility, viscosity, diffusivity, rotationalinertia, impulse, momentum, angularmomentum, yank, energy, specificenergy, action, fluence, power, powerdensity, irradiance, radiance, radiantintensity, spectralflux, spectralexposure, soundexposure, impedance, specificimpedance, admittance, compliance, inertance; Electromagnetics: charge, chargedensity, linearchargedensity, exposure, mobility, current, currentdensity, resistance, conductance, resistivity, conductivity, capacitance, inductance, reluctance, permeance, permittivity, permeability, susceptibility, specificsusceptibility, demagnetizingfactor, vectorpotential, electricpotential, magneticpotential, electricfield, magneticfield, electricflux, magneticflux, electricdisplacement, magneticfluxdensity, electricdipolemoment, magneticdipolemoment, electricpolarizability, magneticpolarizability, magneticmoment, specificmagnetization, polestrength; Thermodynamics: temperature, entropy, specificentropy, volumeheatcapacity, thermalconductivity, thermalconductance, thermalresistivity, thermalresistance, thermalexpansion, lapserate, molarmass, molality, molaramount, molarity, molarvolume, molarentropy, molarenergy, molarconductivity, molarsusceptibility, catalysis, specificity, diffusionflux, luminousflux, luminousintensity, luminance, illuminance, luminousenergy, luminousexposure, luminousefficacy.

Similitude.QuantityType
(U::UnitSystem)(v::Number, D::Constant) ↦ Quantity(D,U,v) = Quantity{D,U}(v)

Numerical Quantity having value v with D::Constant specified in U::UnitSystem.

julia> Metric(1,energy)
1 [J] Metric

julia> English(1,energy)
1 [lbf⋅ft] English

An alternate syntax Quantity(D::Constant, U::UnitSystem, v::Number) is also available as standard syntax. When using UnitSystems instead of using Similitude, this same syntax can be written so that code doesn't need to be changed while the output is generated.

Similitude.ConvertUnitType
(D::Constant)(U::UnitSystem,S::UnitSystem) = ConvertUnit{D,U,S}()

Constant for unit conversion for D::Constant from U::UnitSystem to S::UnitSystem.

julia> energy(Metric,CGS)
2⁷5⁷ = 1.0e7 [erg]/[J] Metric -> Gauss

julia> energy(Metric,English)
g₀⁻¹ft⁻¹lb⁻¹ = 0.7375621492772653 [lbf⋅ft]/[J] Metric -> English

There still exists further opportunity to expand on the implementation of ConvertUnit.

Unified System of Quantities (USQ)

However, it turns out that the new Unified System of Quantities proposed here is not a convenient or Natural way of specifying UnitSystem definitions. As proposed by Planck (both a person and his proposed UnitSystem), specification of the dimensionless boltzmann, planckreduced, and lightspeed is of immense interest in the syntactic grammar of UnitSystem definitions. In fact, it turns out that these are the Natural units of entropy, angularmomentum and speed induced by the UnitSystem.

For electromagnetism, there have been several proposed base definitions for extension. Recently with the SI2019 redefinition, it was proposed that elementarycharge is to be taken as a base definition for electromagnetic units. Yet, this is a mistake as elementarycharge is not the Natural unit of charge induced by the UnitSystem, making it unsuitable as fundamental Constant for any UnitSystem. Meanwhile, vacuumpermeability exactly corresponds to the Natural unit of permeability induced by the UnitSystem, making it suitable as a base definition for the electromagnetic unit extension.

Much simpler to understand is that electronmass is the Natural unit of mass induced by the UnitSystem. Molecular chemistry units are then defined by the Natural unit of molarmass induced by the UnitSytem. Specification of luminousefficacy is a Natural unit of human perception induced by the UnitSystem. Altered angle scaling is defined by the Natural unit of radian induced by the UnitSystem. Additionally, for the Gauss and LorentzHeaviside electromagnetic UnitSystem definitions, there is an induced Natural unit of rationalization and a nonstandard unit named lorentz. Finally, the gravityforce specifies the reference Natural unit of gravity induced by the UnitSystem.

Therefore, for the sake of Natural units, instead of defining a UnitSystem in terms of the USQ dimensions the following are used: boltzmann, planckreduced, lightspeed, vacuumpermeability, electronmass, molarmass, luminousefficacy, angle, rationalization, lorentz, gravityforce (or entropy, angularmomentum, speed, permeability, mass, molarmass, luminousefficacy, angle, rationalization, and the nonstandard one).

Similitude.UnifiedConstant
Unified = UnitSystem(...) # Unified System of Quantities (USQ)
F, M, L, T, Q, Θ, N, J, A, R, C # fundamental base dimensions

Standard Unified system of Quantities (USQ) in terms of UnitSystem basis, transformed from the basis of force, mass, length, time, charge, temperature, molaramount, luminousflux, angle, rationalization, and a nonstandard dimension.

julia> boltzmann(Unified) # entropy
FLΘ⁻¹ [kB] Unified

julia> planckreduced(Unified) # angularmomentum
FLTA⁻¹ [ħ] Unified

julia> lightspeed(Unified) # speed
LT⁻¹ [𝘤] Unified

julia> vacuumpermeability(Unified) # permeability
FT²Q⁻²R⁻¹C² [μ₀] Unified

julia> electronmass(Unified) # mass
M [mₑ] Unified

julia> molarmass(Unified) # molarmass
MN⁻¹ [Mᵤ] Unified

julia> luminousefficacy(Unified) # luminousefficacy
F⁻¹L⁻¹TJ [Kcd] Unified

julia> radian(Unified) # angle
A [ϕ] Unified

julia> rationalization(Unified) # demagnetizingfactor
R [λ] Unified

julia> lorentz(Unified) # nonstandard
C⁻¹ [αL] Unified

julia> gravity(Unified) # gravityforce
F⁻¹MLT⁻² [g₀] Unified
MeasureSystems.@unitgroupMacro
@unitgroup(U::UnitSystem,S::UnitSystem) -> (u::typeof(normal(U)))(d::Group) = normal(S)(d)

Implements Group homomorphism for U in terms of existing specification from S.

MeasureSystems.@unitdimMacro
@unitdim(U::UnitSystem,F,M,L,T,Q,Θ,N,J="lm",A="rad")

Specify the print output for each base dimension of U::UnitSystem with String input arguments force, mass, length, time, charge, temperature, molaramount, luminousflux, angle.

@unitdim Gauss "gf" "g" "cm" "s" "C" "K" "mol"
@unitdim Metric "kgf" "kg" "m" "s" "C" "K" "mol"
@unitdim British "lb" "slug" "ft" "s" "C" "°R" "slug-mol"
@unitdim IPS "lb" "slinch" "in" "s" "C" "°R" "slinch-mol"
@unitdim FPS "pdl" "lb" "ft" "s" "C" "°R" "lb-mol"
@unitdim English "lbf" "lbm" "ft" "s" "C" "°R" "lb-mol"
@unitdim IAU☉ "M☉f" "M☉" "au" "D" "C" "K" "mol"

These standard examples are some of the built-in defaults.

@unitdim(U::UnitSystem,S::UnitSystem) -> dimtext(::typeof(normal(U))) = dimtext(normal(S))

Specify the print output for each base dimension of U upon prior existing S data.

@unitdim EMU Gauss
@unitdim ESU Gauss
@unitdim LorentzHeaviside Gauss
@unitdim SI2019 Metric
@unitdim SI1976 Metric
@unitdim CODATA Metric
@unitdim Conventional Metric
@unitdim International Metric
@unitdim InternationalMean Metric
@unitdim Survey English

These standard examples are some of the built-in defaults.

@unitdim(D,U,S) -> showgroup(io::IO,::typeof(U(D)),::typeof(normal(U))) = print(io,S)

Specify the print output S::String for derived dimension D in U::UnitSystem.

@unitdim magneticflux Gauss "Mx"
@unitdim magneticfluxdensity Gauss "G"
@unitdim magneticfield Gauss "Oe"
@unitdim frequency Metric "Hz"
@unitdim force Metric "N"
@unitdim pressure Metric "Pa"
@unitdim energy Metric "J"
@unitdim power Metric "W"
@unitdim mass British "slug"
@unitdim force FPS "pdl"

These standard examples are some of the built-in defaults.

Default UnitSystems

By default, this package provides a modern unified re-interpretation of various historical unit systems which were previously incompatible. In order to make each UnitSystem consistently compatible with each other, a few convenience assumptions are made. Specifically, it is assumed that all default modern unit systems share the same common Universe of dimensionless constants, although this can be optionally changed. Therefore, the philosophy is to characterize differences among UnitSystem instances by means of dimensional constants. As a result, all the defaults are ideal modern variants of these historical unit systems based on a common underlying Universe, which are completely consistent and compatible with each other. These default UnitSystem values are to be taken as a newly defined mutually-compatible recommended standard, verified to be consistent and coherent.

Metric SI Unit Systems

In the Systeme International d'Unites (the SI units) the UnitSystem constants are derived from the most accurate possible physical measurements and a few exactly defined constants. Exact values are the avogadro number, boltzmann constant, planck constant, lightspeed definition, and elementary charge definition.

\[N_A = 6.02214076\mathrm{e}{23}, k_B = 1.380649\mathrm{e}{-23}, h = 6.62607015\mathrm{e}{-34}, c = 299792458, e = 1.602176634\mathrm{e}{-19}\]
julia> NA # avogadro
NA = 6.02214076e23

julia> kB # boltzmann
kB = 1.380649e-23

julia> 𝘩 # planck
𝘩 = 6.62607015e-34

julia> 𝘤 # lightspeed
𝘤 = 2.99792458e8

julia> 𝘦 # charge
𝘦 = 1.602176634e-19

Physical measured values with uncertainty are electron to proton mass ratio μₑᵤ, proton to atomic mass ratio μₚᵤ, inverted fine structure constant αinv, the Rydberg R∞ constant, and the Planck mass mP.

\[\mu_{eu} = \frac{m_e}{m_u} \approx \frac{1}{1822.9}, \mu_{pu} = \frac{m_p}{m_u} \approx 1.00727647, \alpha \approx \frac{1}{137.036}, R_\infty \approx 1.097373\mathrm{e}{7}, m_P \approx 2.176434\mathrm{e}{-8},\]
julia> μₑᵤ # electronunit
μₑᵤ = 0.000548579909065 ± 1.6e-14

julia> μₚᵤ # protonunit
μₚᵤ = 1.007276466621 ± 5.3e-11

julia> αinv # 1/finestructure
α⁻¹ = 137.035999084 ± 2.1e-8

julia> R∞ # rydbgerg
R∞ = 1.097373156816e7 ± 2.1e-5

julia> mP # planckmass
mP = 2.176434e-8 ± 2.4e-13

From these numbers along with the optional Gaussian rationalization value, the constants planckreduced, permeability, electronmass, molarmass, and proton to electon mass ratio are computed.

\[\hbar = \frac{h}{2\pi}, \qquad \mu_0 = \frac{2h\alpha}{ce^2}, \qquad m_e = \frac{2hR_\infty}{c\alpha^2}, \qquad M_u = \frac{m_e}{\mu_{eu}}N_A = \frac{2h R_\infty N_A}{c\alpha^2\mu_{eu}}, \qquad \mu_{pe} = \frac{\mu_{pu}}{\mu_{eu}} = \frac{m_p}{m_e}\]
julia> ħ # planckreduced
𝘩*τ⁻¹ = 1.0545718176461565e-34

julia> μ₀ # vacuumpermeability
𝘩*𝘤⁻¹𝘦⁻²α*2 = 1.25663706212e-6 ± 1.9e-16

julia> mₑ # electronmass
𝘩*𝘤⁻¹R∞*α⁻²2 = 9.1093837016e-31 ± 2.8e-40

julia> Mᵤ # molarmass
𝘩*𝘤⁻¹NA*R∞*α⁻²μₑᵤ⁻¹2 = 0.00099999999966 ± 3.1e-13

julia> μₚₑ # protonelectron
μₑᵤ⁻¹μₚᵤ = 1836.15267343 ± 1.1e-7

Additional reference values include the ground state hyperfine structure transition frequency of caesium-133 ΔνCs and luminousefficacy of monochromatic radiation Kcd of 540 THz.

julia> ΔνCs # hyperfine
ΔνCs = 9.19263177e9

julia> Kcd # luminousefficacy
Kcd = 683.01969009009

As result, there are variants based on the original molarmass constant and Gaussian permeability along with the 2019 redefined exact values. The main difference between the two is determined by $M_u$ and $\mu_0$ offset.

\[(M_u,\mu_0,R_u,g_0,h,c,R_\infty,\alpha,\mu_{eu}) \quad \mapsto \quad m_e = \frac{2R_\infty h}{c\alpha^2}, \quad k_B = \frac{m_e R_u}{\mu_{eu} g_0 M_u}, \quad K_{cd} = 683\frac{555.016\tilde h}{555h}\]

Construction of UnitSystem instances based on specifying the the constants molarmass, the vacuumpermeability, and the molargas along with some other options is facilitated by MetricSystem. This construction helps characterize the differences between

MeasureSystems.MetricSystemFunction
MetricSystem(Mu=Mᵤ,μ0=μ₀,Ru=Rᵤ,g0=𝟏,θ=𝟏,h=𝘩,me=R∞*𝟐*h/𝘤/α^2)

Constructs new UnitSystem from molarmass constant, vacuumpermeability, molargas constant, gravity force reference, angle scale, and planck constant.

UnitSystem(Ru*me/Mu/μₑᵤ/g0,h/τ/g0/θ,𝘤,μ0,me,Mu,Kcd*(mₑ/me)^2*(h/𝘩)*g0,θ,𝟏,𝟏,g0)

Examples include SI2019, SI1976, Metric, Engineering, MetricTurn, MetricSpatian, MetricGradian, MetricDegree, MetricArcminute, MetricArcsecond. In addition, the ConventionalSystem constructor further builds on MetricSystem, resulting in variations.

Other derived UnitSystem instances such as British or English or IAU are derived from an existing Metric specification generated by MetricSystem. The constructor MetricSystem incorporates several standard common numerical values and exposes variable arguments which can be substituted for customization, yielding the capability to generate historical variations having a common Universe. Derivative constructors are EntropySystem, ElectricSystem, GaussSystem, RankineSystem, and AstronomicalSystem.

Historically, the josephson and klitzing constants have been used to define Conventional and CODATA variants.

\[(R_K,K_J) \quad \mapsto \quad \mu_0 = \frac{2R_K\alpha}{c}, \quad h = \frac{4}{R_KK_J^2}, \quad m_e = \frac{2R_\infty h}{c\alpha^2}, \quad k_B = \frac{m_e R_u}{\mu_{eu} M_u}, \quad K_{cd} = 683\frac{555.016\times 4}{555R_KK_J^2h}\]
MeasureSystems.ConventionalSystemFunction
ConventionalSystem(RK,KJ,Ru=Rᵤ,g0=𝟏) = MetricSystem(milli,𝟐*RK/𝘤*α,Ru,g0,𝟐^2/RK/KJ^2)

Constructs new UnitSystem from von klitzing constant and josephson constant, with an optional specification of universal gas constant and gravity reference constant.

Examples include Conventional (based on 1990) and CODATA (based on 2014).

Originally, the practical units where specified by resistance and electricpotential.

\[(\Omega,V) \quad \mapsto \quad k_B\frac{\Omega}{V^2}, \quad h\frac{\Omega}{V^2}, \quad c\frac{1}{1}, \quad \mu_0\frac{\Omega}{V^2}, \quad m_e\frac{\Omega}{V^2}, \quad M_u\frac{\Omega}{V^2}, \quad K_{cd}\frac{V^2}{\Omega}\]
UnitSystems.ElectricSystemFunction
ElectricSystem(U::UnitSystem,Ω,V) = EntropySystem(U,𝟏,𝟏,V^2/Ω,𝟏,vacuumpermeability(U)/Ω)

Constructs new UnitSystem from U with mass rescaled by electricpotential and resistance. In the International system, Ωᵢₜ and Vᵢₜ are used as definitions from the more recent United States results, while in InternationalMean an earlier estimate based on other nations was used.

Electromagnetic CGS Systems

Alternatives to the SI unit system are the centimetre-gram-second variants, where the constants are rescaled with centi meter and milli kilogram units along with introduction of additional rationalization and lorentz constants or electromagnetic units.

\[(\mu_0,\lambda,\alpha_L,t,l,m,g_0) \quad \mapsto \quad \frac{k_Bt^2}{m l^2g_0}, \quad \frac{ht}{ml^2g_0}, \quad c\frac{t}{l}, \quad \frac{m_e}{m}, \quad \mu_0, \quad \frac{M_u}{m}, \quad K_{cd}\frac{ml^2g_0}{t^3}, \quad \lambda, \quad \alpha_L\]

There are multiple choices of elctromagnetic units for these variants based on electromagnetic units, electrostatic units, Gaussian non-rationalized units, and Lorentz-Heaviside rationalized units.

UnitSystems.GaussSystemFunction
GaussSystem(U::UnitSystem,μ0,λ,αL=𝟏,l=centi,m=milli,g0=gravity(U))

Constructs new UnitSystem from U rescaled for CGS with electromagnetic options. The first three options are to set the values for vacuumpermeability, rationalization, and lorentz constants. The following two parameters are scaling for length and mass, while the last is an option to change the gravity reference.

Examples include EMU, ESU, Gauss, LorentzHeaviside, and Kennelly.

Modified (Entropy) Unit Systems

Most other un-natural unit systems are derived from the construction above by rescaling time, length, mass, temperature, and gravity; which results in modified entropy constants:

\[(t,l,m,T,g_0) \quad \mapsto \quad k_B\frac{t^2T}{m l^2g_0}, \quad h\frac{t}{ml^2g_0}, \quad c\frac{t}{l}, \quad \mu_0\frac{1}{ml}, \quad m_e\frac{1}{m}, \quad M_u\frac{1}{m}, \quad K_{cd}\frac{ml^2g_0}{t^3}\]
UnitSystems.EntropySystemFunction
EntropySystem(U::UnitSystem,t,l,m,θ=𝟏)
EntropySystem(U::UnitSystem,t,l,m,θ,μ0,Mu=molarmass(U)/m,g0=gravity(U))

Constructs new UnitSystem from U rescaled along time, length, mass, and temperature by the first four parameters. Additional optional parameters allow for customization of the vacuumpermeability, molarmass, and gravity constants.

Examples of this type include Nautical, Meridian, Gravitational, MTS, KKH, MPH, IAU☉, IAUE, IAUJ, Hubble, Cosmological, CosmologicalQuantum. However, most other constructors for UnitSystem derivations are based on internally calling EntropySystem, such as AstronomicalSystem, ElectricSystem, GaussSystem, and RankineSystem. This means EntropySystem also constructs the examples listed there.

Foot-Pound-Second-Rankine

In Britain and the United States an English system of engineering units was commonly used.

\[(t,l,m,g_0) \quad \mapsto \quad k_B\frac{5t^2}{9m l^2g_0}, \quad h\frac{t}{ml^2g_0}, \quad c\frac{t}{l}, \quad \mu_0\frac{1}{mlg_0}, \quad m_e\frac{1}{m}, \quad M_u 10^3, \quad K_{cd}\frac{ml^2g_0}{t^3}\]
MeasureSystems.RankineSystemFunction
RankineSystem(U::UnitSystem,l,m,g0=𝟏)

Constructs new UnitSystem from U rescaled along length and mass with optional gravity reference constant used to define technical and engineering units.

EntropySystem(U,𝟏,l,m,°R,vacuumpermeability(U)/m/l/g0,kilo*molarmass(U),g0)

Examples: FPS, British, IPS, English, Survey.

Astronomical Unit Systems

The International Astronomical Union (IAU) units are based on the solar mass, distance from the sun to the earth, and the length of a terrestrial day.

UnitSystems.AstronomicalSystemFunction
AstronomicalSystem(U::UnitSystem,t,l,m)

Constructs new UnitSystem from U rescaled along time, length, mass, and dimensionless boltzmann and molarmass constants. Examples are Hubble, Cosmological, CosmologicalQuantum.

Natural Unit Systems

With the introduction of the planckmass a set of natural atomic unit systems can be derived in terms of the gravitational coupling constant.

\[\alpha_G = \left(\frac{m_e}{m_P}\right)^2, \qquad \tilde k_B = 1, \qquad (\tilde M_u = 1, \quad \tilde \lambda = 1, \quad \tilde \alpha_L = 1)\]
julia> αG # (mₑ/mP)^2
𝘩²𝘤⁻²mP⁻²R∞²α⁻⁴2² = 1.75181e-45 ± 3.9e-50

Some of the notable variants include

Planck       ::UnitSystem{1,1,1,1,√(4π*αG)}
PlanckGauss  ::UnitSystem{1,1,1,4π,√αG}
Stoney       ::UnitSystem{1,1/α,1,4π,√(αG/α)}
Hartree      ::UnitSystem{1,1,1/α,4π*α^2,1}
Rydberg      ::UnitSystem{1,1,2/,π*α^2,1/2}
Schrodinger  ::UnitSystem{1,1,1/α,4π*α^2,√(αG/α)}
Electronic   ::UnitSystem{1,1/α,1,4π,1}
Natural      ::UnitSystem{1,1,1,1,1}
NaturalGauss ::UnitSystem{1,1,1,4π,1}
QCD          ::UnitSystem{1,1,1,1,1/μₚₑ}
QCDGauss     ::UnitSystem{1,1,1,4π,1/μₚₑ}
QCDoriginal  ::UnitSystem{1,1,1,4π*α,1/μₚₑ}

UnitSystem Index