diff --git a/Project.toml b/Project.toml index 115f841..8fc2ac4 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "UnitSystems" uuid = "3a241a3c-2137-41aa-af5e-1388e404ca09" authors = ["Michael Reed"] -version = "0.3.5" +version = "0.3.6" [deps] LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" diff --git a/README.md b/README.md index 4ce7c76..a97246c 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Specifications for dimensional units are in the [UnitSystems.jl](https://github. 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](https://github.com/JuliaPhysics/Measurements.jl) uncertainty) build additional features on top of `UnitSystems` base defintions. Additionally, in the `UnitSystems` repository there is an equivalent [Wolfram language paclet](https://reference.wolfram.com/language/guide/Paclets) `Kernel` and also an unmaintained Rust `src` implementation. -Defaults are shared: `Metric`, `SI2019`, `CODATA`, `Conventional`, `International`, `InternationalMean`, `MetricEngineering`, `SI2019Engineering`, `GravitationalMetric`, `GravitationalSI2019`, `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`. +Defaults are shared: `Metric`, `SI2019`, `CODATA`, `Conventional`, `International`, `InternationalMean`, `MetricTurn`, `MetricGradian`, `MetricDegree`, `MetricArcminute`, `MetricArcsecond`, `MetricEngineering`, `GravitationalMetric`, `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 julia> using UnitSystems # or Similitude or MeasureSystems @@ -44,12 +44,12 @@ In most unit systems these extra constants have a value of `1` unless specified. 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, `θ` angle measure, `λ` 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`, `atomicmass`, `protonmass`, `electronmass`, `newton`, `einstein`, `vacuumpermeability`, `vacuumpermittivity`, `electrostatic`, and +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`, `angle`, `turn`, `spat`, `stefan`, `radiationdensity`, `magnetostatic`, `lorentz`, `biotsavart`, `rationalization`, `vacuumimpedance`, `elementarycharge`, `magneton`, `conductancequantum`, `faraday`, `magneticfluxquantum`, `josephson`, `klitzing`, `hartree`, `rydberg`, `bohr`. Physics constant documentation is at https://geophysics.crucialflow.com/dev/constants -Standardized unit/derived quantities are `hyperfine`, `loschmidt`, `wienwavelength`, `wienfrequency`, `mechanicalheat`, `solarmass`, `jupitermass`, `earthmass`, `lunarmass`, `earthradius`, `greatcircle`, `radarmile`, `hubble`, `cosmological`, `radian`, `steradian`, `degree`, `gradian`, `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`, `bubnoff`, `ips`, `fps`, `fpm`, `ms`, `kmh`, `mph`, `knot`, `mps`, `barn`, `hectare`, `acre`, `surveyacre`, `liter`, `gallon`, `quart`, `pint`, `cup`, `fluidounce`, `teaspoon`, `tablespoon`, `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`, `neper`, `bel`, `decibel`, `hertz`, `apm`, `rpm`, `kayser`, `diopter`, `gforce`, `galileo`, `eotvos`, `darcy`, `poise`, `reyn`, `stokes`, `rayl`, `mpge`, `langley`, `jansky`, `solarflux`, `curie`, `sievert`, `roentgen`, `rem`. +Standardized unit/derived quantities are `hyperfine`, `loschmidt`, `wienwavelength`, `wienfrequency`, `mechanicalheat`, `eddington`, `solarmass`, `jupitermass`, `earthmass`, `lunarmass`, `earthradius`, `greatcircle`, `radarmile`, `hubble`, `cosmological`, `radian`, `steradian`, `degree`, `squaredegree`, `gradian`, `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`, `bubnoff`, `ips`, `fps`, `fpm`, `ms`, `kmh`, `mph`, `knot`, `mps`, `barn`, `hectare`, `acre`, `surveyacre`, `liter`, `gallon`, `quart`, `pint`, `cup`, `fluidounce`, `teaspoon`, `tablespoon`, `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`, `neper`, `bel`, `decibel`, `hertz`, `apm`, `rpm`, `kayser`, `diopter`, `gforce`, `galileo`, `eotvos`, `darcy`, `poise`, `reyn`, `stokes`, `rayl`, `mpge`, `langley`, `jansky`, `solarflux`, `curie`, `sievert`, `roentgen`, `rem`. Standard physics units are at https://geophysics.crucialflow.com/dev/units @@ -60,7 +60,7 @@ Unit conversion documentation is at https://geophysics.crucialflow.com/dev/conve **Derived Unit conversions:** Mechanics: `angle`, `solidangle`, `time`, `length`, `area`, `volume`, `wavenumber`, `angularwavenumber`, `fuelefficiency`, `numberdensity`, `frequency`, `angularfrequency`, `frequencydrift`, `speed`, `acceleration`, `jerk`, `snap`, `crackle`, `pop`, `volumeflow`, -`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`, `intensity`, `spectralflux`, `soundexposure`, `impedance`, `specificimpedance`, `admittance`, `compliance`, `inertance`; +`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`, `electricfluxdensity`, `magneticfluxdensity`, `electricdipolemoment`, `magneticdipolemoment`, `electricpolarizability`, `magneticpolarizability`, `magneticmoment`, `specificmagnetization`, `polestrength`; Thermodynamics: `temperature`, `entropy`, `specificentropy`, `volumeheatcapacity`, `thermalconductivity`, `thermalconductance`, `thermalresistivity`, `thermalresistance`, `thermalexpansion`, `lapserate`, `molarmass`, `molality`, `mole`, `molarity`, `molarvolume`, `molarentropy`, `molarenergy`, `molarconductivity`, `molarsusceptibility`, `catalysis`, `specificity`, diff --git a/src/UnitSystems.jl b/src/UnitSystems.jl index 5457cf3..cf0eaff 100644 --- a/src/UnitSystems.jl +++ b/src/UnitSystems.jl @@ -18,12 +18,12 @@ module UnitSystems import Base: @pure, length, time, angle, rem -const Systems = (:Metric,:SI2019,:SI1976,:CODATA,:Conventional,:International,:InternationalMean,:MetricEngineering,:SI2019Engineering,:GravitationalMetric,:GravitationalSI2019,:MTS,:EMU,:ESU,:Gauss,:LorentzHeaviside,:Kennelly,:FPS,:IPS,:British,:English,:Survey,:FFF,:MPH,:KKH,:Nautical,:Meridian,:MeridianEngineering,:GravitationalMeridian,:IAU☉,:IAUE,:IAUJ,:Hubble,:Cosmological,:CosmologicalQuantum,:Planck,:PlanckGauss,:Stoney,:Hartree,:Rydberg,:Schrodinger,:Electronic,:Natural,:NaturalGauss,:QCD,:QCDGauss,:QCDoriginal) +const Systems = (:Metric,:SI2019,:SI1976,:CODATA,:Conventional,:International,:InternationalMean,:MetricTurn,:MetricDegree,:MetricArcminute,:MetricArcsecond,:MetricGradian,:MetricEngineering,:GravitationalMetric,:MTS,:EMU,:ESU,:Gauss,:LorentzHeaviside,:Kennelly,:FPS,:IPS,:British,:English,:Survey,:FFF,:MPH,:KKH,:Nautical,:Meridian,:IAU☉,:IAUE,:IAUJ,:Hubble,:Cosmological,:CosmologicalQuantum,:Planck,:PlanckGauss,:Stoney,:Hartree,:Rydberg,:Schrodinger,:Electronic,:Natural,:NaturalGauss,:QCD,:QCDGauss,:QCDoriginal) const Dimensionless = (:coupling,:finestructure,:electronunit,:protonunit,:protonelectron,:darkenergydensity) const Constants = (:lightspeed,:planck,:planckreduced,:electronmass,:molarmass,:boltzmann,:permeability,:rationalization,:lorentz,:luminousefficacy,:gravity) #angle -const Physics = (:turn,:spat,:atomicmass,:protonmass,:planckmass,:gravitation,:gaussgravitation,:einstein,:hartree,:rydberg,:bohr,:electronradius,:avogadro,:molargas,:stefan,:radiationdensity,:vacuumpermeability,:vacuumpermittivity,:electrostatic,:magnetostatic,:biotsavart,:elementarycharge,:faraday,:vacuumimpedance,:conductancequantum,:klitzing,:josephson,:magneticfluxquantum,:magneton) -const Derived = (:hyperfine,:loschmidt,:wienwavelength,:wienfrequency,:mechanicalheat,:solarmass,:jupitermass,:earthmass,:lunarmass,:earthradius,:greatcircle,:radarmile,:hubble,:cosmological, - :radian,:steradian,:degree,:gradian,:arcminute,:arcsecond, +const Physics = (:turn,:spat,:dalton,:protonmass,:planckmass,:gravitation,:gaussgravitation,:einstein,:hartree,:rydberg,:bohr,:electronradius,:avogadro,:molargas,:stefan,:radiationdensity,:vacuumpermeability,:vacuumpermittivity,:electrostatic,:magnetostatic,:biotsavart,:elementarycharge,:faraday,:vacuumimpedance,:conductancequantum,:klitzing,:josephson,:magneticfluxquantum,:magneton) +const Derived = (:hyperfine,:loschmidt,:wienwavelength,:wienfrequency,:mechanicalheat,:eddington,:solarmass,:jupitermass,:earthmass,:lunarmass,:earthradius,:greatcircle,:radarmile,:hubble,:cosmological, + :radian,:steradian,: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, @@ -43,7 +43,7 @@ const Derived = (:hyperfine,:loschmidt,:wienwavelength,:wienfrequency,:mechanica :kayser,:diopter,:gforce,:galileo,:eotvos,:darcy,:poise,:reyn,:stokes,:rayl, :mpge,:langley,:jansky,:solarflux,:curie,:sievert,:roentgen,:rem) const Kinematic = (:solidangle,:time,:length,:area,:volume,:wavenumber,:angularwavenumber,:fuelefficiency,:numberdensity,:frequency,:angularfrequency,:frequencydrift,:speed,:acceleration,:jerk,:snap,:crackle,:pop,:volumeflow) #angle -const Mechanical = (: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,:intensity,:spectralflux,:soundexposure,:impedance,:specificimpedance,:admittance,:compliance,:inertance) +const Mechanical = (: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) const Electromagnetic = (: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,:electricfluxdensity,:magneticfluxdensity,:electricdipolemoment,:magneticdipolemoment,:electricpolarizability,:magneticpolarizability,:magneticmoment,:specificmagnetization,:polestrength) const Thermodynamic = (:temperature,:entropy,:specificentropy,:volumeheatcapacity,:thermalconductivity,:thermalconductance,:thermalresistivity,:thermalresistance,:thermalexpansion,:lapserate) const Molar = (:molarmass,:molality,:molaramount,:molarity,:molarvolume,:molarentropy,:molarenergy,:molarconductivity,:molarsusceptibility,:catalysis,:specificity) @@ -110,7 +110,7 @@ Base.display(U::Coupling) = println("Coupling{αG = $(coupling(U)), α = $(fines 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, `θ` angle measure, `λ` 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`, `atomicmass`, `protonmass`, `electronmass`, `newton`, `einstein`, `vacuumpermeability`, `vacuumpermittivity`, `electrostatic`, and +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`, `angle`, `turn`, `spat`, `stefan`, `radiationdensity`, `magnetostatic`, `lorentz`, `biotsavart`, `rationalization`, `vacuumimpedance`, `elementarycharge`, `magneton`, `conductancequantum`, `faraday`, `magneticfluxquantum`, `josephson`, `klitzing`, `hartree`, `rydberg`, `bohr`. Standardized unit/derived quantities are `$(listext(Derived))`. @@ -123,7 +123,7 @@ Mechanics: `angle`, `$(listext(Kinematic))`, `$(listext(Mechanical))`; Electromagnetics: `$(listext(Electromagnetic))`; Thermodynamics: `$(listext(Thermodynamic))`, `$(listext(Molar))`, `$(listext(Photometric))`. -""" #`Rᵤ,mᵤ,σ,ħ,μ₀,ε₀,kₑ,𝘦,𝔉,RK,Z₀,G₀` +""" #`Rᵤ,Da,σ,ħ,μ₀,ε₀,kₑ,𝘦,𝔉,RK,Z₀,G₀` struct UnitSystem{kB,ħ,𝘤,μ₀,mₑ,Mᵤ,extra} @pure UnitSystem{kB,ħ,𝘤,μ₀,mₑ,Mᵤ,extra}() where {kB,ħ,𝘤,μ₀,mₑ,Mᵤ,extra} = new{kB,ħ,𝘤,μ₀,mₑ,Mᵤ,extra}() end # UnitSystem{kB,ħ,𝘤,μ₀,mₑ,Mᵤ,(Kcd,θ,λ,αL,g,C,τ,𝟐,𝟑,𝟓,𝟕,𝟏𝟏,𝟏𝟗,𝟒𝟑)} @@ -215,13 +215,6 @@ function DimensionSystem(U::UnitSystem,L,M,T,I,Θ,N,J,A,Λ,G,C) UnitSystem(kB,ħ,c,μ0,me,Mu,Kcd,A,λ,αL,g₀,universe(U),τ,x,y,z,u,v,w,p) end -""" - AstronomicalSystem(U::UnitSystem) = EntropySystem(U,𝟏,𝟏,𝟏/gravitation(U)) - -Constructs new `UnitSystem` from `U` with `mass` rescaled by `newton` gravitational constant. An example of this type is `AstronomicalSystem(Metric)`. -""" -AstronomicalSystem(u) = EntropySystem(u,one(u),one(u),inv(gravitation(u))) - """ ElectricSystem(U::UnitSystem,Ω,V) = EntropySystem(U,𝟏,𝟏,V^2/Ω,𝟏,vacuumpermeability(U)/Ω) @@ -253,16 +246,26 @@ This means `EntropySystem` also constructs the examples listed there. function EntropySystem(u,t,l,m,θ=one(u)) EntropySystem(u,t,l,m,θ,permeability(u)/(m*l),molarmass(u)/m,gravity(u),m*l*l/(t*t)) end -function EntropySystem(u,t,l,m,θ,μ0,Mu=molarmass(u)/m,g0=gravity(u),e=m*l*l/(t*t),λ=one(u),αL=one(u)) - UnitSystem( +function EntropySystem(u,t,l,m,θ,μ0,Mu=molarmass(u)/m,g0=gravity(u),e=m*l*l/(t*t),λ=one(u),αL=one(u),Kcd=luminousefficacy(u)*e/t*g0) + normal(UnitSystem( boltzmann(u)*θ/e/g0, planckreduced(u)/t/e/g0, lightspeed(u)*t/l, μ0, electronmass(u)/m, Mu, - luminousefficacy(u)*e/t*g0, - angle(u),λ,αL,g0,universe(u),twopi(u),two(u),three(u),five(u),seven(u),eleven(u),nineteen(u),fourtythree(u)) + Kcd, + angle(u),λ,αL,g0,universe(u),twopi(u),two(u),three(u),five(u),seven(u),eleven(u),nineteen(u),fourtythree(u))) +end + +""" + 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`. +""" +function AstronomicalSystem(u,t,l,m,e=m*lightspeed(u)^2) + EntropySystem(u,t,l,m,e/boltzmann(u),spat(u),one(u),one(u),e,one(u),one(u),one(u)) end @pure unit(x,y=1) = isapprox(y,x,rtol=eps()^0.9) ? y : x @@ -291,7 +294,7 @@ for unit ∈ (Convert...,:angle) @eval begin @pure @inline $unit(v::Real,U::UnitSystem) = isquantity(U) ? evaldim($unit)(v,U) : $unit(v,U,Metric) @pure @inline $unit(v::Real,U::UnitSystem,S::UnitSystem) = isquantity(U,S) ? evaldim($unit)(v,U,S) : (u=$unit(U,S);isone(u) ? v : v/u) - @pure @inline $unit(v::Real,U::UnitSystem{kB,ħ,𝘤,μ₀,mₑ},S::UnitSystem{kB,ħ,𝘤,μ₀,mₑ}) where {kB,ħ,𝘤,μ₀,mₑ} = v + @pure @inline $unit(v::Real,U::UnitSystem{kB,ħ,𝘤,μ₀,mₑ,Mᵤ,extra},S::UnitSystem{kB,ħ,𝘤,μ₀,mₑ,Mᵤ,extra}) where {kB,ħ,𝘤,μ₀,mₑ,Mᵤ,extra} = v end if unit ∉ (Constants...,:angle,:permeability) @eval @pure @inline $unit(U::UnitSystem) = isquantity(U) ? evaldim($unit)(U) : $unit(Natural,U) diff --git a/src/derived.jl b/src/derived.jl index 26446db..f07e526 100644 --- a/src/derived.jl +++ b/src/derived.jl @@ -16,10 +16,12 @@ @pure radian(U::UnitSystem) = angle(one(U),U,Metric) @pure steradian(U::UnitSystem) = solidangle(one(U),U,Metric) -@pure degree(U::UnitSystem) = angle(turn(U)/two(U)^3/three(U)^2/five(U),U,Metric) -@pure gradian(U::UnitSystem) = angle(turn(U)/two(U)^4/five(U)^2,U,Metric) -@pure arcminute(U::UnitSystem) = degree(U)/two(U)^2/three(U)/five(U) -@pure arcsecond(U::UnitSystem) = arcminute(U)/two(U)^2/three(U)/five(U) +@pure degree(U::UnitSystem) = angle(one(U),U,MetricDegree) +@pure squaredegree(U::UnitSystem) = solidangle(one(U),U,MetricDegree) +@pure gradian(U::UnitSystem) = angle(one(U),U,MetricGradian) +@pure arcminute(U::UnitSystem) = angle(one(U),U,MetricArcminute) +@pure arcsecond(U::UnitSystem) = angle(one(U),U,MetricArcsecond) +@pure bradian(U::UnitSystem) = angle(turn(U)/two(U)^8,U,Metric) @pure apm(U::UnitSystem) = one(U)/minute(U) @pure rpm(U::UnitSystem) = turn(U)/minute(U) diff --git a/src/derivedocs.jl b/src/derivedocs.jl index 13b6d55..6c3469c 100644 --- a/src/derivedocs.jl +++ b/src/derivedocs.jl @@ -116,69 +116,187 @@ $yobi @doc """ $(unitext(:radian,"angle(𝟏,U,Metric)")) -Unit of `angle` which is dimensionless. +Unit of `angle` which is dimensionless (rad). ```Julia -julia> radian(MetricEngineering) +julia> radian(MetricEngineering) # rad $(radian(MetricEngineering)) -``` -""" radian -@doc """ -$(unitext(:steradian,"solidangle(𝟏,U,Metric)")) +julia> radian(MetricDegree) # deg +$(radian(MetricDegree)) -Unit of `solidangle` which is dimensionless. -```Julia -julia> steradian(MetricEngineering) -$(steradian(MetricEngineering)) +julia> radian(MetricArcminute) # amin +$(radian(MetricArcminute)) + +julia> radian(MetricArcsecond) # asec +$(radian(MetricArcsecond)) + +julia> radian(MetricGradian) # gon +$(radian(MetricGradian)) ``` -""" steradian +""" radian @doc """ -$(unitext(:degree,"angle(τ/𝟐^3/𝟑^2/𝟓,U,Metric)")) +$(unitext(:degree,"angle(𝟏,U,MetricDegree)")) -Unit of `angle` which divides a `turn` into `360` parts. +Unit of `angle` which divides a `turn` into `360` parts (rad). ```Julia -julia> degree(MetricEngineering) +julia> degree(MetricEngineering) # rad $(degree(MetricEngineering)) + +julia> degree(MetricDegree) # deg +$(degree(MetricDegree)) + +julia> degree(MetricArcminute) # amin +$(degree(MetricArcminute)) + +julia> degree(MetricArcsecond) # asec +$(degree(MetricArcsecond)) + +julia> degree(MetricGradian) # gon +$(degree(MetricGradian)) ``` """ degree @doc """ -$(unitext(:gradian,"angle(τ/𝟐^4/𝟓^2,U,Metric)")) +$(unitext(:gradian,"angle(𝟏,U,MetricGradian)")) -Unit of `angle` which divides a `turn` into `400` parts. +Unit of `angle` which divides a `turn` into `400` parts (rad). ```Julia -julia> gradian(MetricEngineering) +julia> gradian(MetricEngineering) # rad $(gradian(MetricEngineering)) + +julia> gradian(MetricDegree) # deg +$(gradian(MetricDegree)) + +julia> gradian(MetricArcminute) # amin +$(gradian(MetricArcminute)) + +julia> gradian(MetricArcsecond) # asec +$(gradian(MetricArcsecond)) + +julia> gradian(MetricGradian) # gon +$(gradian(MetricGradian)) ``` """ gradian @doc """ -$(unitext(:arcminute,"degree(U)/𝟐^2/𝟑/𝟓")) +$(unitext(:bradian,"angle(τ/𝟐^8,U,Metric)")) -Unit of `angle` which divides a `degree` into `60` parts. +Unit of `angle` which divides a `turn` into `𝟐^8` or `256` parts (rad). ```Julia -julia> arcminute(MetricEngineering) +julia> bradian(MetricEngineering) # rad +$(bradian(MetricEngineering)) + +julia> bradian(MetricDegree) # deg +$(bradian(MetricDegree)) + +julia> bradian(MetricArcminute) # amin +$(bradian(MetricArcminute)) + +julia> bradian(MetricArcsecond) # asec +$(bradian(MetricArcsecond)) + +julia> bradian(MetricGradian) # gon +$(bradian(MetricGradian)) +``` +""" bradian + +@doc """ +$(unitext(:arcminute,"angle(𝟏,U,MetricArcminute)")) + +Unit of `angle` which divides a `degree` into `60` parts (rad). +```Julia +julia> arcminute(MetricEngineering) # rad $(arcminute(MetricEngineering)) + +julia> arcminute(MetricDegree) # deg +$(arcminute(MetricDegree)) + +julia> arcminute(MetricArcminute) # amin +$(arcminute(MetricArcminute)) + +julia> arcminute(MetricArcsecond) # asec +$(arcminute(MetricArcsecond)) + +julia> arcminute(MetricGradian) # gon +$(arcminute(MetricGradian)) ``` """ arcminute @doc """ -$(unitext(:arcsecond,"arcminute(U)/𝟐^2/𝟑/𝟓")) +$(unitext(:arcsecond,"angle(𝟏,U,MetricArcsecond)")) -Unit of `angle` which divides a `arcminute` into `60` parts. +Unit of `angle` which divides a `arcminute` into `60` parts (rad). ```Julia -julia> arcsecond(MetricEngineering) +julia> arcsecond(MetricEngineering) # rad $(arcsecond(MetricEngineering)) + +julia> arcsecond(MetricDegree) # deg +$(arcsecond(MetricDegree)) + +julia> arcsecond(MetricArcminute) # amin +$(arcsecond(MetricArcminute)) + +julia> arcsecond(MetricArcsecond) # asec +$(arcsecond(MetricArcsecond)) + +julia> arcsecond(MetricGradian) # gon +$(arcsecond(MetricGradian)) ``` """ arcsecond +# solidangle + +@doc """ +$(unitext(:steradian,"solidangle(𝟏,U,Metric)")) + +Unit of `solidangle` which is dimensionless (rad²). +```Julia +julia> steradian(MetricEngineering) # rad² +$(steradian(MetricEngineering)) + +julia> steradian(MetricDegree) # deg² +$(steradian(MetricDegree)) + +julia> steradian(MetricArcminute) # amin² +$(steradian(MetricArcminute)) + +julia> steradian(MetricArcsecond) # asec² +$(steradian(MetricArcsecond)) + +julia> steradian(MetricGradian) # gon² +$(steradian(MetricGradian)) +``` +""" steradian + +@doc """ +$(unitext(:squaredegree,"solidangle(𝟏,U,MetricDegree)")) + +Unit of `solidangle` which is a `degree` squared (rad²). +```Julia +julia> squaredegree(MetricEngineering) # rad² +$(squaredegree(MetricEngineering)) + +julia> squaredegree(MetricDegree) # deg² +$(squaredegree(MetricDegree)) + +julia> squaredegree(MetricArcminute) # amin² +$(squaredegree(MetricArcminute)) + +julia> squaredegree(MetricArcsecond) # asec² +$(squaredegree(MetricArcsecond)) + +julia> squaredegree(MetricGradian) # gon² +$(squaredegree(MetricGradian)) +``` +""" squaredegree + # time @doc """ $(unitext(:second,"time(𝟏,U,Metric)")) -Unit of `time` defined by `hyperfine` transition frequency of Cs-133 atom. +Unit of `time` defined by `hyperfine` transition frequency of Cs-133 atom (s). ```Julia julia> second(Metric) # s $(second(Metric)) @@ -194,7 +312,7 @@ $(second(IAU)) @doc """ $(unitext(:minute,"𝟐^2*𝟑*𝟓*second(U)")) -Unit of `time` defined by 60 `second` intervals. +Unit of `time` defined by 60 `second` intervals (s). ```Julia julia> minute(Metric) # s $(minute(Metric)) @@ -210,7 +328,7 @@ $(minute(IAU)) @doc """ $(unitext(:hour,"𝟐^2*𝟑*𝟓*minute(U)")) -Unit of `time` defined by 60 `minute` intervals. +Unit of `time` defined by 60 `minute` intervals (s). ```Julia julia> hour(Metric) # s $(hour(Metric)) @@ -226,7 +344,7 @@ $(hour(IAU)) @doc """ $(unitext(:day,"𝟐^3*𝟑*hour(U)")) -Unit of `time` defined by 24 `hour` intervals. +Unit of `time` defined by 24 `hour` intervals (s). ```Julia julia> day(Metric) # s $(day(Metric)) @@ -242,7 +360,7 @@ $(day(IAU)) @doc """ $(unitext(:year,"aⱼ*day(U)")) -Unit of `time` defined by Julian calendar year interval. +Unit of `time` defined by Julian calendar year interval (s). ```Julia julia> year(Metric) # s $(year(Metric)) @@ -258,7 +376,7 @@ $(year(IAU)) @doc """ $(unitext(:radarmile,"𝟐*nauticalmile(U)/lightspeed(U)")) -Unit of `time` delay from a two-way `nauticalmile` radar return. +Unit of `time` delay from a two-way `nauticalmile` radar return (s). ```Julia julia> radarmile(Metric) $(radarmile(Metric)) @@ -906,6 +1024,9 @@ $(grain(CGS)) julia> grain(English) # lb $(grain(English)) + +julia> grain(QCD) # mₚ +$(grain(QCD)) ``` """ grain @@ -2402,8 +2523,14 @@ $(unitext(:candela,"luminousintensity(𝟏,U,Metric)")) Common unit of `luminousintensity` (cd). ```Julia -julia> candela(MetricEngineering) # cd -$(candela(Metric)) +julia> candela(MetricEngineering) # lm⋅rad⁻² +$(candela(MetricEngineering)) + +julia> candela(MetricDegree) # lm⋅deg⁻² +$(candela(MetricDegree)) + +julia> candela(MetricGradian) # lm⋅gon⁻² +$(candela(MetricGradian)) julia> candela(CGS) # cd $(candela(CGS)) @@ -2466,8 +2593,14 @@ $(unitext(:nit,"luminance(𝟏,U,Metric)")) Metric unit of `luminance` (lx⋅rad⁻²). ```Julia -julia> nit(Metric) # nt -$(nit(Metric)) +julia> nit(MetricEngineering) # nt +$(nit(MetricEngineering)) + +julia> nit(MetricDegree) # lm⋅m⁻²deg⁻² +$(nit(MetricDegree)) + +julia> nit(MetricGradian) # lm⋅m⁻²gon⁻² +$(nit(MetricGradian)) julia> nit(CGS) # sb $(nit(CGS)) @@ -2482,8 +2615,14 @@ $(unitext(:apostilb,"luminance(𝟐/turn(U),U,Metric)")) Metric unit of `luminance` (lx⋅rad⁻²). ```Julia -julia> apostilb(Metric) # nt -$(apostilb(Metric)) +julia> apostilb(MetricEngineering) # nt +$(apostilb(MetricEngineering)) + +julia> apostilb(MetricDegree) # lm⋅m⁻²deg⁻² +$(apostilb(MetricDegree)) + +julia> apostilb(MetricGradian) # lm⋅m⁻²gon⁻² +$(apostilb(MetricGradian)) julia> apostilb(CGS) # sb $(apostilb(CGS)) @@ -2498,8 +2637,14 @@ $(unitext(:stilb,"luminance(𝟏,U,Gauss)")) Historic unit of `luminance` (lx⋅rad⁻²). ```Julia -julia> stilb(Metric) # nt -$(stilb(Metric)) +julia> stilb(MetricEngineering) # nt +$(stilb(MetricEngineering)) + +julia> stilb(MetricDegree) # lm⋅m⁻²deg⁻² +$(stilb(MetricDegree)) + +julia> stilb(MetricGradian) # lm⋅m⁻²gon⁻² +$(stilb(MetricGradian)) julia> stilb(CGS) # sb $(stilb(CGS)) @@ -2514,8 +2659,14 @@ $(unitext(:lambert,"luminance(𝟐/turn(U),U,Gauss)")) Historic unit of `luminance` (nt). ```Julia -julia> lambert(Metric) # nt -$(lambert(Metric)) +julia> lambert(MetricEngineering) # nt +$(lambert(MetricEngineering)) + +julia> lambert(MetricDegree) # lm⋅m⁻²deg⁻² +$(lambert(MetricDegree)) + +julia> lambert(MetricGradian) # lm⋅m⁻²gon⁻² +$(lambert(MetricGradian)) julia> lambert(CGS) # sb $(lambert(CGS)) @@ -2530,8 +2681,14 @@ $(unitext(:footlambert,"luminance(𝟐/turn(U),U,English)")) English unit of `luminance` (nt). ```Julia -julia> footlambert(Metric) # nt -$(footlambert(Metric)) +julia> footlambert(MetricEngineering) # nt +$(footlambert(MetricEngineering)) + +julia> footlambert(MetricDegree) # lm⋅m⁻²deg⁻² +$(footlambert(MetricDegree)) + +julia> footlambert(MetricGradian) # lm⋅m⁻²gon⁻² +$(footlambert(MetricGradian)) julia> footlambert(CGS) # sb $(footlambert(CGS)) @@ -2546,8 +2703,14 @@ $(unitext(:bril,"centi*nano*lambert(U)")) Reference unit of `luminance` (nt). ```Julia -julia> bril(Metric) # nt -$(bril(Metric)) +julia> bril(MetricEngineering) # nt +$(bril(MetricEngineering)) + +julia> bril(MetricDegree) # lm⋅m⁻²deg⁻² +$(bril(MetricDegree)) + +julia> bril(MetricGradian) # lm⋅m⁻²gon⁻² +$(bril(MetricGradian)) julia> bril(CGS) # sb $(bril(CGS)) @@ -2577,8 +2740,11 @@ $(unitext(:apm,"𝟏/minute(U)")) Actions per minute `apm` unit of `frequency` (s⁻¹). ```Julia -julia> apm(MetricEngineering) # s⁻¹ -$(apm(MetricEngineering)) +julia> apm(Metric) # s⁻¹ +$(apm(Metric)) + +julia> apm(MPH) # h⁻¹ +$(apm(MPH)) julia> apm(IAU) # D⁻¹ $(apm(IAU)) @@ -2588,12 +2754,27 @@ $(apm(IAU)) @doc """ $(unitext(:rpm,"turn(U)/minute(U)")) -Revolutions per minute `rpm` unit of `angularfrequency` (s⁻¹). +Revolutions per minute `rpm` unit of `angularfrequency` (rad⋅s⁻¹). ```Julia julia> rpm(MetricEngineering) # rad⋅s⁻¹ $(rpm(MetricEngineering)) -julia> rpm(IAU) # D⁻¹ +julia> rpm(MetricGradian) # gon⋅s⁻¹ +$(rpm(MetricGradian)) + +julia> rpm(MetricDegree) # deg⋅s⁻¹ +$(rpm(MetricDegree)) + +julia> rpm(MetricArcminute) # amin⋅s⁻¹ +$(rpm(MetricArcminute)) + +julia> rpm(MetricArcsecond) # asec⋅s⁻¹ +$(rpm(MetricArcsecond)) + +julia> rpm(MPH) # rad⋅h⁻¹ +$(rpm(MPH)) + +julia> rpm(IAU) # rad⋅D⁻¹ $(rpm(IAU)) ``` """ rpm diff --git a/src/initdata.jl b/src/initdata.jl index cf77db0..98882e8 100644 --- a/src/initdata.jl +++ b/src/initdata.jl @@ -20,14 +20,14 @@ const kibi,mebi,gibi,tebi,pebi,exbi,zebi,yobi = 𝟐^10,𝟐^20,𝟐^30,𝟐^40, const fur,°R,K,HOUR,k = 𝟐^2*𝟑*𝟓*𝟏𝟏*ft,𝟓/𝟑^2,𝟑^2/𝟓,𝟐^4*𝟑^2*𝟓^2,kG*τ/(𝟐^7*𝟑^4*𝟓^3) const mₑ,μ₀ = αinv^2*R∞*𝟐*𝘩/𝘤,𝟐*𝘩/𝘤*α/𝘦^2 # ≈ 4π*(1e-7+5.5e-17), exact charge -const ħ,μₚₑ,Rᵤ,αL,αG,Mᵤ = 𝘩/τ,μₚᵤ/μₑᵤ,NA*kB,centi/𝘤,(mₑ/mP)^2,NA*mₑ/μₑᵤ +const ħ,μₚₑ,μₑₚ,Rᵤ,αL,αG,Mᵤ = 𝘩/τ,μₚᵤ/μₑᵤ,μₑᵤ/μₚᵤ,NA*kB,centi/𝘤,(mₑ/mP)^2,NA*mₑ/μₑᵤ const pc,G,DAY,nm = au*𝟐^7*𝟑^4*𝟓^3/τ,𝘤*ħ/mP^2,𝟐^7*𝟑^3*𝟓^2,sqrt(GME/g₀)*τ/𝟐^5/𝟑^3/𝟓^2 const GM☉ =au^3*k^2/DAY^2; const th = 𝟏𝟎^3*pc/H0; const ΛC = 𝟑*ΩΛ*(th*𝘤)^-2 -const lc,mc,ρΛ = 𝟐*sqrt(τ/ΛC),𝘤^2/(𝟐*sqrt(τ*ΛC*G)),ΛC*𝘤^4/(𝟐^2*τ)/G -const lcq,mcq = sqrt.(sqrt.((𝘤*ħ/ρΛ,ρΛ*ħ^3/𝘤^5))) +const lc,mc,ρΛ,𝘦ₙ = 𝟐*sqrt(τ/ΛC),𝘤^2/(𝟐*G*sqrt(τ*ΛC)),ΛC*𝘤^4/(𝟐^2*τ)/G,𝘦/√α +const lcq,mcq = sqrt.(sqrt.((𝘤*ħ/ρΛ,ρΛ*ħ^3/𝘤^5))); const 𝘦ᵣ = 𝘦ₙ/√(𝟐*τ) const tcq,em,mi = lcq*sqrt(mcq/sqrt(sqrt(ρΛ*(𝘤*ħ)^3))),sqrt(GME/g₀)*τ/𝟐^9/𝟓^7,𝟐^5*𝟑*𝟓*𝟏𝟏 -@pure sackurtetrode(U::UnitSystem,P=atm,T=𝟏,m=atomicmass(U)) = normal(log((Constant(exp(5/2))*boltzmann(U)*sqrt(boltzmann(U)/gravity(U)/turn(U)/planckreduced(U)^2)^3)*(T/P*sqrt(m*T)^3))) +@pure sackurtetrode(U::UnitSystem,P=atm,T=𝟏,m=dalton(U)) = normal(log((Constant(exp(5/2))*boltzmann(U)*sqrt(boltzmann(U)/gravity(U)/turn(U)/planckreduced(U)^2)^3)*(T/P*sqrt(m*T)^3))) const Universe = Coupling(αG,α,μₑᵤ,μₚᵤ,ΩΛ) @@ -37,13 +37,13 @@ export MetricSystem, ConventionalSystem, RankineSystem export AstronomicalSystem, ElectricSystem, GaussSystem, EntropySystem """ - MetricSystem(Mu=Mᵤ,μ0=μ₀,Ru=Rᵤ,g0=𝟏,h=𝘩) + MetricSystem(Mu=Mᵤ,μ0=μ₀,Ru=Rᵤ,g0=𝟏,θ=𝟏,h=𝘩) -Constructs new `UnitSystem` from `molarmass` constant, `vacuumpermeability`, `molargas` constant, `gravity` force reference, and `planck` constant. +Constructs new `UnitSystem` from `molarmass` constant, `vacuumpermeability`, `molargas` constant, `gravity` force reference, `angle` scale, and `planck` constant. -Examples include `SI2019`, `Metric`, `SI2019Engineering`, `MetricEngineering`, `SI1976`. In addition, the `ConventionalSystem` constructor further builds on `MetricSystem`, resulting in variations. +Examples include `SI2019`, `Metric`, `SI2019Engineering`, `MetricEngineering`, `SI1976`, `MetricDegree`, `MetricGradian`. In addition, the `ConventionalSystem` constructor further builds on `MetricSystem`, resulting in variations. """ -MetricSystem(Mu=Mᵤ,μ0=μ₀,Ru=Rᵤ,g0=𝟏,h=𝘩,me=αinv^2*R∞*𝟐*h/𝘤) = UnitSystem(Ru*me/Mu/μₑᵤ/g0,h/τ/g0,𝘤,μ0,me,Mu,Kcd*(mₑ/me)^2*(h/𝘩)*g0,𝟏,𝟏,𝟏,g0,Universe,τ,𝟐,𝟑,𝟓,𝟕,𝟏𝟏,𝟏𝟗,𝟒𝟑) +MetricSystem(Mu=Mᵤ,μ0=μ₀,Ru=Rᵤ,g0=𝟏,θ=𝟏,h=𝘩,me=αinv^2*R∞*𝟐*h/𝘤) = UnitSystem(Ru*me/Mu/μₑᵤ/g0,h/τ/g0,𝘤,μ0,me,Mu,Kcd*(mₑ/me)^2*(h/𝘩)*g0,θ,𝟏,𝟏,g0,Universe,τ,𝟐,𝟑,𝟓,𝟕,𝟏𝟏,𝟏𝟗,𝟒𝟑) """ ConventionalSystem(RK,KJ,Ru=Rᵤ,g0=𝟏) = MetricSystem(milli,𝟐*RK/𝘤*α,Ru,g0,𝟐^2/RK/KJ^2) @@ -52,7 +52,7 @@ Constructs new `UnitSystem` from von `klitzing` constant and `josephson` constan Examples include `Conventional` (based on 1990) and `CODATA` (based on 2014). """ -ConventionalSystem(klitz,joseph,Ru=Rᵤ,g0=𝟏) = MetricSystem(milli,𝟐*klitz/𝘤*α,Ru,g0,(𝟐*𝟐)/klitz/(joseph*joseph)) +ConventionalSystem(klitz,joseph,Ru=Rᵤ,g0=𝟏,θ=𝟏) = MetricSystem(milli,𝟐*klitz/𝘤*α,Ru,g0,θ,(𝟐*𝟐)/klitz/(joseph*joseph)) """ RankineSystem(U::UnitSystem,l,m,g0=𝟏) = EntropySystem(U,𝟏,l,m,°R,vacuumpermeability(U)/m/l/g0,kilo*molarmass(U),g0) @@ -67,8 +67,13 @@ RankineSystem(u,l,m,g0=𝟏) = EntropySystem(u,𝟏,l,m,°R,UnitSystems.vacuumpe const SI2019 = Quantity(MetricSystem()) const Metric = Quantity(MetricSystem(milli,τ/𝟐^6/𝟓^7)) -const SI2019Engineering = Quantity(MetricSystem(Mᵤ,μ₀/g₀,Rᵤ,g₀)) +#const SI2019Engineering = Quantity(MetricSystem(Mᵤ,μ₀/g₀,Rᵤ,g₀)) const MetricEngineering = Quantity(MetricSystem(milli,τ/𝟐^6/𝟓^7/g₀,Rᵤ,g₀)) +const MetricTurn = Quantity(MetricSystem(milli,τ/𝟐^6/𝟓^7,Rᵤ,𝟏,𝟏/τ)) +const MetricDegree = Quantity(MetricSystem(milli,τ/𝟐^6/𝟓^7,Rᵤ,𝟏,𝟐^3*𝟑^2*𝟓/τ)) +const MetricArcminute = Quantity(MetricSystem(milli,τ/𝟐^6/𝟓^7,Rᵤ,𝟏,𝟐^5*𝟑^3*𝟓^2/τ)) +const MetricArcsecond = Quantity(MetricSystem(milli,τ/𝟐^6/𝟓^7,Rᵤ,𝟏,𝟐^7*𝟑^4*𝟓^3/τ)) +const MetricGradian = Quantity(MetricSystem(milli,τ/𝟐^6/𝟓^7,Rᵤ,𝟏,𝟐^4*𝟓^2/τ)) const SI1976 = Quantity(MetricSystem(milli,τ/𝟐^6/𝟓^7,Constant(8.31432))) const CODATA = Quantity(ConventionalSystem(RK2014,KJ2014,Rᵤ2014)) const Conventional = Quantity(ConventionalSystem(RK1990,KJ1990)) @@ -93,19 +98,19 @@ const FPS = Quantity(RankineSystem(Metric,ft,lb)) const IPS = Quantity(RankineSystem(Metric,ft/𝟐^2/𝟑,lb*g₀*𝟐^2*𝟑/ft)) #const IPS2019 = Quantity(RankineSystem(SI2019,ft/𝟐^2/𝟑,lb*g₀*𝟐^2*𝟑/ft)) -#const Astronomical = Quantity(AstronomicalSystem(Metric)) -const Hubble = Quantity(EntropySystem(Metric,th,𝘤*th,𝟏)) -const Cosmological = Quantity(EntropySystem(Metric,lc/𝘤,lc,mc)) -const CosmologicalQuantum = Quantity(EntropySystem(Metric,tcq,lcq,mcq)) +#const Astronomical = Quantity(EntropySystem(Metric,𝟏,𝟏,𝟏/G)) +const Hubble = Quantity(AstronomicalSystem(Metric,th,𝘤*th,mₑ))#ħ/th/𝘤^2/mP^2)) +const Cosmological = Quantity(AstronomicalSystem(Metric,lc/𝘤,lc,mc)) +const CosmologicalQuantum = Quantity(AstronomicalSystem(Metric,tcq,lcq,mcq)) #const EMU2019 = Quantity(EntropySystem(SI2019,𝟏,centi,milli)) #const ESU2019 = Quantity(EntropySystem(SI2019,𝟏,centi,milli,𝟏,kilo*μ₀/𝘤^2)) #const Mixed = Quantity(EntropySystem(Metric,𝟏,𝟏,𝟏,𝟏,μ₀)) const Nautical = Quantity(EntropySystem(Metric,HOUR,nm,em^3,𝟏,τ*𝟑^3/𝟐^10/𝟓^12,milli)) const Meridian = Quantity(EntropySystem(Metric,𝟏,em,em^3,𝟏,τ/𝟐^6/𝟓^7,milli)) -const MeridianEngineering = Quantity(EntropySystem(Metric,𝟏,em,em^3,𝟏,τ/𝟐^6/𝟓^7*em/g₀,milli,g₀/em)) -const GravitationalSI2019 = Quantity(EntropySystem(SI2019,𝟏,𝟏,g₀)) +#const MeridianEngineering = Quantity(EntropySystem(Metric,𝟏,em,em^3,𝟏,τ/𝟐^6/𝟓^7*em/g₀,milli,g₀/em)) +#const GravitationalSI2019 = Quantity(EntropySystem(SI2019,𝟏,𝟏,g₀)) const GravitationalMetric = Quantity(EntropySystem(Metric,𝟏,𝟏,g₀)) -const GravitationalMeridian = Quantity(EntropySystem(Metric,𝟏,em,g₀*em^2,𝟏,τ/𝟐^6/𝟓^7*em/g₀,milli)) +#const GravitationalMeridian = Quantity(EntropySystem(Metric,𝟏,em,g₀*em^2,𝟏,τ/𝟐^6/𝟓^7*em/g₀,milli)) const IAU☉ = Quantity(EntropySystem(Metric,DAY,au,GM☉/G)) const IAUE = Quantity(EntropySystem(Metric,DAY,LD,GME/G)) const IAUJ = Quantity(EntropySystem(Metric,DAY,JD,GMJ/G)) @@ -129,10 +134,10 @@ const QCD = Quantity(UnitSystem(𝟏,𝟏,𝟏,𝟏,inv(μₚₑ))) const QCDGauss = Quantity(UnitSystem(𝟏,𝟏,𝟏,𝟐*τ,inv(μₚₑ))) const QCDoriginal = Quantity(UnitSystem(𝟏,𝟏,𝟏,𝟐*τ*α,inv(μₚₑ))) -export SI, MKS, SIE, ME, GSI2019, GSI, GM, CGS, CGS2019, CGSm, CGSe, HLU, FFF, AE, EE, BG +export SI, MKS, ME, GM, CGS, CGS2019, CGSm, CGSe, HLU, FFF, AE, EE, BG # SIE, GSI, GSI2019 export EnglishEngineering, BritishGravitational, AbsoluteEnglish, EnglishUS, EE2019, IAU -const SI, MKS, SIE, ME, IAU = SI2019, Metric, SI2019Engineering, MetricEngineering, IAU☉ -const GSI2019, GSI, GM = GravitationalSI2019, GravitationalSI2019, GravitationalMetric +#const SIE, GSI2019, GSI = SI2019Engineering, GravitationalSI2019, GravitationalSI2019 +const SI, MKS, ME, GM, IAU = SI2019, Metric, MetricEngineering, GravitationalMetric, IAU☉ const CGS, CGSm, CGSe, HLU = Gauss, EMU, ESU, LorentzHeaviside const EnglishEngineering, BritishGravitational, BG = English, British, British const EnglishUS, AbsoluteEnglish, AE, EE = Survey, FPS, FPS, English diff --git a/src/kinematic.jl b/src/kinematic.jl index 19c0051..ba4b5db 100644 --- a/src/kinematic.jl +++ b/src/kinematic.jl @@ -149,7 +149,10 @@ $(time(PlanckGauss,Metric)) @pure specificvolume(U::UnitSystem,S::UnitSystem) = unit(volume(U,S)/mass(U,S)) @pure action(U::UnitSystem,S::UnitSystem) = unit(energy(U,S)*time(U,S)) #@pure stiffness(U::UnitSystem,S::UnitSystem) = unit(force(U,S)/length(U,S)) -@pure intensity(U::UnitSystem,S::UnitSystem) = unit(power(U,S)/area(U,S)) +@pure irradiance(U::UnitSystem,S::UnitSystem) = unit(power(U,S)/area(U,S)) +@pure radiance(U::UnitSystem,S::UnitSystem) = unit(irradiance(U,S)/solidangle(U,S)) +@pure radiantintensity(U::UnitSystem,S::UnitSystem) = unit(power(U,S)/solidangle(U,S)) +@pure spectralexposure(U::UnitSystem,S::UnitSystem) = unit(force(U,S)/speed(U,S)) @pure diffusivity(U::UnitSystem,S::UnitSystem) = unit(speed(U,S)*length(U,S)) @pure viscosity(U::UnitSystem,S::UnitSystem) = unit(force(U,S)/speed(U,S)/length(U,S)) @pure lineardensity(U::UnitSystem,S::UnitSystem) = unit(mass(U,S)/length(U,S)) diff --git a/src/kinematicdocs.jl b/src/kinematicdocs.jl index 3bad694..5f2ce5f 100644 --- a/src/kinematicdocs.jl +++ b/src/kinematicdocs.jl @@ -660,21 +660,75 @@ $(stiffness(English,Metric)) """ stiffness=# @doc """ -$(convertext(:intensity,"power(U,S)/area(U,S)")) +$(convertext(:irradiance,"power(U,S)/area(U,S)")) Heat flux density or irradiance or `power` per `area` (W⋅m⁻², kg⋅s⁻³), unit conversion factor. ```Julia -julia> intensity(CGS,Metric) # kg⋅g⁻¹ -$(intensity(CGS,Metric)) +julia> irradiance(CGS,Metric) # kg⋅g⁻¹ +$(irradiance(CGS,Metric)) -julia> intensity(CGS,English) # lb⋅g⁻¹ -$(intensity(CGS,English)) +julia> irradiance(CGS,English) # lb⋅g⁻¹ +$(irradiance(CGS,English)) -julia> intensity(English,Metric) # kg⋅lb⁻¹ -$(intensity(English,Metric)) +julia> irradiance(English,Metric) # kg⋅lb⁻¹ +$(irradiance(English,Metric)) ``` -""" intensity +""" irradiance, intensity + +@doc """ +$(convertext(:radiance,"irradiance(U,S)/solidangle(U,S)")) + +Radiance or `irradiance` per `solidangle` (W⋅m⁻²⋅sr⁻¹, kg⋅s⁻³⋅sr⁻¹), unit conversion factor. + +```Julia +julia> radiance(CGS,Metric) # kg⋅g⁻¹ +$(radiance(CGS,Metric)) + +julia> radiance(CGS,English) # lb⋅g⁻¹ +$(radiance(CGS,English)) + +julia> radiance(English,Metric) # kg⋅lb⁻¹ +$(radiance(English,Metric)) +``` +""" radiance + +@doc """ +$(convertext(:radiantintensity,"power(U,S)/solidangle(U,S)")) + +Radiant intensity or `power` per `solidangle` (W⋅sr⁻¹, W⋅rad⁻²), unit conversion factor. + +```Julia +julia> radiantintensity(CGS,Metric) # W⋅s⋅erg⁻¹ +$(radiantintensity(CGS,Metric)) + +julia> radiantintensity(English,Metric) # W⋅s⋅ft⁻¹⋅lb⁻¹ +$(radiantintensity(English,Metric)) +``` +""" radiantintensity + +@doc """ +$(convertext(:spectralexposure,"force(U,S)/speed(U,S)")) + +Spectral exposure or `fluence` per `frequency` (N⋅s⋅m⁻¹, J⋅s⋅m⁻²), unit conversion factor. + +```Julia +julia> spectralexposure(CGS,Metric) # kg⋅g⁻¹ +$(spectralexposure(CGS,Metric)) + +julia> spectralexposure(CGS,English) # lb⋅g⁻¹ +$(spectralexposure(CGS,English)) + +julia> spectralexposure(CODATA,Metric) # kg⋅kg⁻¹ +$(spectralexposure(CODATA,Metric)) + +julia> spectralexposure(Conventional,Metric) # kg⋅kg⁻¹ +$(spectralexposure(Conventional,Metric)) + +julia> spectralexposure(English,Metric) # kg⋅lb⁻¹ +$(spectralexposure(English,Metric)) +``` +""" spectralexposure @doc """ $(convertext(:diffusivity,"speed(U,S)*length(U,S)")) diff --git a/src/physics.jl b/src/physics.jl index 0b9cc56..3275e10 100644 --- a/src/physics.jl +++ b/src/physics.jl @@ -13,7 +13,7 @@ # https://crucialflow.com @pure avogadro(U::UnitSystem,C::Coupling=universe(U)) = molarmass(U,C)*electronunit(C)/electronmass(U,C) -@pure atomicmass(U::UnitSystem,C::Coupling=universe(U)) = electronmass(U,C)/electronunit(C) +@pure dalton(U::UnitSystem,C::Coupling=universe(U)) = electronmass(U,C)/electronunit(C) @pure protonmass(U::UnitSystem,C::Coupling=universe(U)) = protonelectron(C)*electronmass(U,C) @pure gaussgravitation(U::UnitSystem,C::Coupling=universe(U)) = sqrt(normal(gravitation(IAU)))*radian(U)/day(U) @pure einstein(U::UnitSystem,C::Coupling=universe(U)) = two(U)*spat(U)*gravitation(U,C)/lightspeed(U,C)^4 @@ -45,6 +45,7 @@ @pure amagat(U::UnitSystem) = loschmidt(U)/avogadro(U) @pure wienwavelength(U::UnitSystem) = planck(U)*lightspeed(U)/boltzmann(U)/Constant(4.965114231744276303) @pure wienfrequency(U::UnitSystem) = Constant(2.821439372122078893)*boltzmann(U)/planck(U) +@pure eddington(U::UnitSystem) = mass(𝟏,U,Cosmological) @pure solarmass(U::UnitSystem) = mass(GM☉/G,U,Metric) @pure earthmass(U::UnitSystem) = mass(GME/G,U,Metric) @pure jupitermass(U::UnitSystem) = mass(GMJ/G,U,Metric) diff --git a/src/physicsdocs.jl b/src/physicsdocs.jl index fec6015..5ce8759 100644 --- a/src/physicsdocs.jl +++ b/src/physicsdocs.jl @@ -36,7 +36,7 @@ $αG julia> ΩΛ # darkenergydensity(Universe) $ΩΛ ``` -""" Universe, μₑᵤ, μₚᵤ, μₚₑ, αinv, αG, meu, mpu, mpe, ainv, aG, ΩΛ, electronunit, protonunit, protonelectron, finestructure, coupling, darkenergydensity +""" Universe, μₑᵤ, μₚᵤ, μₚₑ, μₑₚ, αinv, αG, meu, mpu, mpe, ainv, aG, ΩΛ, electronunit, protonunit, protonelectron, finestructure, coupling, darkenergydensity @doc """ $(unitext(:turn,"2π/angle(U)")) @@ -45,6 +45,18 @@ Complete rotation `angle` of revolution from a full circle. ```Julia julia> turn(MetricEngineering) $(turn(MetricEngineering)) + +julia> turn(MetricDegree) +$(turn(MetricDegree)) + +julia> turn(MetricArcminute) +$(turn(MetricArcminute)) + +julia> turn(MetricArcsecond) +$(turn(MetricArcsecond)) + +julia> turn(MetricGradian) +$(turn(MetricGradian)) ``` """ turn @@ -55,6 +67,18 @@ Complete spherical `solidangle` around point from a full sphere. ```Julia julia> spat(MetricEngineering) $(spat(MetricEngineering)) + +julia> spat(MetricDegree) +$(spat(MetricDegree)) + +julia> spat(MetricArcminute) +$(spat(MetricArcminute)) + +julia> spat(MetricArcsecond) +$(spat(MetricArcsecond)) + +julia> spat(MetricGradian) +$(spat(MetricGradian)) ``` """ spat @@ -100,9 +124,9 @@ $(molarmass(International)) """ molarmass, Mᵤ, Mu @doc """ -$(unitext(:avogadro, "molargas(x)/boltzmann(x) # Mᵤ/atomicmass(x)")) +$(unitext(:avogadro, "molargas(x)/boltzmann(x) # Mᵤ/dalton(x)")) -Avogadro `NA` is `molarmass(x)/atomicmass(x)` number of atoms in a 12 g sample of C₁₂. +Avogadro `NA` is `molarmass(x)/dalton(x)` number of atoms in a 12 g sample of C₁₂. ```Julia julia> avogadro(SI2019) # mol⁻¹ $(avogadro(SI2019)) @@ -317,8 +341,14 @@ $(electronmass(Conventional)) julia> electronmass(International) # kg $(electronmass(International)) -julia> electronmass(Metric)/atomicmass(Metric) # Da -$μₑᵤ +julia> electronmass(Metric)/dalton(Metric) # Da +$(electronmass(Metric)/dalton(Metric)) + +julia> electronmass(QCD) # mₚ +$(electronmass(QCD)) + +julia> electronmass(Hartree) # mₑ +$(electronmass(Hartree)) julia> electronmass(Metric)*lightspeed(Metric)^2 # J $(electronmass(Metric)*lightspeed(Metric)^2) @@ -332,29 +362,32 @@ $(electronmass(English)) """ electronmass, mₑ, me @doc """ -$(unitext(:atomicmass,"Mᵤ/avogadro(U) # $(molarmass(SI2019)) ≈ 0.001-3.5e-13")) +$(unitext(:dalton,"molarmass(U)/avogadro(U)")) -Atomic mass unit `mᵤ` of 1/12 of the C₁₂ carbon-12 atom's mass (kg or slugs). +Atomic mass unit `Da` of 1/12 of the C₁₂ carbon-12 atom's mass (kg or slugs). ```Julia -julia> atomicmass(Metric) # kg -$(atomicmass(Metric)) +julia> dalton(Metric) # kg +$(dalton(Metric)) + +julia> dalton(Hartree) # mₑ +$(dalton(Hartree)) -julia> atomicmass(Metric)/electronmass(Metric) # mₑ -$(atomicmass(Metric)/electronmass(Metric)) +julia> dalton(QCD) # mₚ +$(dalton(QCD)) -julia> atomicmass(Metric)*lightspeed(Metric)^2 # J -$(atomicmass(Metric)*lightspeed(Metric)^2) +julia> dalton(Metric)*lightspeed(Metric)^2 # J +$(dalton(Metric)*lightspeed(Metric)^2) -julia> atomicmass(SI2019)*lightspeed(SI2019)^2/elementarycharge(SI2019) # eV⋅𝘤⁻² -$(atomicmass(SI2019)*lightspeed(SI2019)^2/elementarycharge(SI2019)) +julia> dalton(SI2019)*lightspeed(SI2019)^2/elementarycharge(SI2019) # eV⋅𝘤⁻² +$(dalton(SI2019)*lightspeed(SI2019)^2/elementarycharge(SI2019)) -julia> atomicmass(British) # lb -$(atomicmass(British)) +julia> dalton(British) # lb +$(dalton(British)) ``` -""" atomicmass, mᵤ, mu +""" dalton, Da, mu, mᵤ, atomicmass @doc """ -$(unitext(:protonmass,"protonunit(U)*atomicmass(U)")) +$(unitext(:protonmass,"protonunit(U)*dalton(U)")) Proton mass `mₚ` of subatomic particle with `+𝘦` elementary charge (kg or mass). ```Julia @@ -364,11 +397,14 @@ $(protonmass(Metric)) julia> protonmass(SI2019)*lightspeed(SI2019)^2/elementarycharge(SI2019) # eV⋅𝘤⁻² $(protonmass(SI2019)*lightspeed(SI2019)^2/elementarycharge(SI2019)) -julia> protonmass(Metric)/atomicmass(Metric) # mᵤ -$(protonmass(Metric)/atomicmass(Metric)) +julia> protonmass(Metric)/dalton(Metric) # Da +$(protonmass(Metric)/dalton(Metric)) -julia> protonmass(Metric)/electronmass(Metric) # mₑ -$(protonmass(Metric)/electronmass(Metric)) +julia> protonmass(Hartree) # mₑ +$(protonmass(Hartree)) + +julia> protonmass(QCD) # mₚ +$(protonmass(QCD)) ``` """ protonmass, mₚ, mp @@ -383,14 +419,14 @@ $(planckmass(Metric)*lightspeed(Metric)^2/elementarycharge(Metric)) juila> planckmass(Metric) # kg $(planckmass(Metric)) -juila> planckmass(Metric)/atomicmass(Metric) # mᵤ -$(planckmass(Metric)/atomicmass(Metric)) +juila> planckmass(Metric)/dalton(Metric) # Da +$(planckmass(Metric)/dalton(Metric)) juila> planckmass(Metric)*lightspeed(Metric)^2/elementarycharge(Metric)/sqrt(𝟐^2*τ) # eV⋅𝘤⁻² $(planckmass(Metric)*lightspeed(Metric)^2/elementarycharge(Metric)/sqrt(𝟐^2*τ)) -juila> planckmass(Metric)/sqrt(𝟐^2*τ) # kg -$(planckmass(Metric)/sqrt(𝟐^2*τ)) +julia> planckmass(PlanckGauss) # mP +$(planckmass(PlanckGauss)) ``` """ planckmass, mP @@ -739,8 +775,8 @@ $(elementarycharge(EMU)) julia> elementarycharge(ESU) # statC $(elementarycharge(ESU)) -julia> elementarycharge(Planck) # sqrt(4π/αinv) -$(elementarycharge(Planck)) +julia> elementarycharge(Hartree) # 𝘦 +$(elementarycharge(Hartree)) ``` """ elementarycharge, 𝘦, ee @@ -1009,6 +1045,9 @@ $(electronradius(CODATA)) julia> electronradius(Conventional) # m $(electronradius(Conventional)) + +julia> electronradius(Hartree) # a₀ +$(electronradius(Hartree)) ``` """ electronradius, rₑ, re @@ -1195,6 +1234,12 @@ $(solarmass(IAUE)) julia> solarmass(IAUJ) # MJ $(solarmass(IAUJ)) + +julia> solarmass(QCD) # mₚ +$(solarmass(QCD)) + +julia> solarmass(Metric)/dalton(Metric) # Da +$(solarmass(Metric)/dalton(Metric)) ``` """ solarmass, mₛ @@ -1217,6 +1262,12 @@ $(earthmass(IAU)) julia> earthmass(IAUJ) # MJ $(earthmass(IAUJ)) + +julia> earthmass(QCD) # mₚ +$(earthmass(QCD)) + +julia> earthmass(Metric)/dalton(Metric) # Da +$(earthmass(Metric)/dalton(Metric)) ``` """ earthmass @@ -1239,6 +1290,12 @@ $(jupitermass(IAU)) julia> jupitermass(IAUE) # ME $(jupitermass(IAUE)) + +julia> jupitermass(QCD) # mₚ +$(jupitermass(QCD)) + +julia> jupitermass(Metric)/dalton(Metric) # Da +$(jupitermass(Metric)/dalton(Metric)) ``` """ jupitermass @@ -1264,6 +1321,12 @@ $(lunarmass(IAUE)) julia> lunarmass(IAUJ) # MJ $(lunarmass(IAUJ)) + +julia> lunarmass(QCD) # mₚ +$(lunarmass(QCD)) + +julia> lunarmass(Metric)/dalton(Metric) # Da +$(lunarmass(Metric)/dalton(Metric)) ``` """ lunarmass @@ -1272,8 +1335,20 @@ $(unitext(:gaussgravitation,"sqrt(gravitation(U)*solarmass(U)/astronomicalunit(U Gaussian gravitational constant `k` of Newton's laws (Hz or rad⋅D⁻¹). ```Julia -julia> gaussgravitation(Metric) -$(gaussgravitation(Metric)) +julia> gaussgravitation(MetricEngineering) +$(gaussgravitation(MetricEngineering)) + +julia> gaussgravitation(MetricGradian) +$(gaussgravitation(MetricGradian)) + +julia> gaussgravitation(MetricDegree) +$(gaussgravitation(MetricDegree)) + +julia> gaussgravitation(MetricArcminute) +$(gaussgravitation(MetricArcminute)) + +julia> gaussgravitation(MetricArcsecond) +$(gaussgravitation(MetricArcsecond)) juila> gaussgravitation(MPH) $(gaussgravitation(MPH)) @@ -1286,7 +1361,7 @@ $(gaussgravitation(IAU)) @doc """ $(unitext(:gaussianyear,"turn(U)/gaussgravitation(U)")) -Orbit `time` defined by `gaussgravitation` constant `kG` for neglible `mass` satellite. +Orbit `time` defined by `gaussgravitation` constant `kG` for neglible `mass` satellite (s). ```Julia julia> gaussianyear(Metric) # s $(gaussianyear(Metric)) @@ -1302,7 +1377,7 @@ $(gaussianyear(IAU)) @doc """ $(unitext(:siderealyear,"gaussianyear(U)/√(𝟏+earthmass(IAU)+lunarmass(IAU))")) -Orbit `time` defined by `gaussgravitation` constant `kG` and the Earth-Moon system `mass`. +Orbit `time` defined by `gaussgravitation` constant `kG` and Earth-Moon system `mass` (s). ```Julia julia> siderealyear(Metric) # s $(siderealyear(Metric)) @@ -1318,7 +1393,7 @@ $(siderealyear(IAU)) @doc """ $(unitext(:jovianyear,"τ*day(U)*√(jupiterdistance(U)^3/solarmass(U)/gravitation(U))/√(𝟏+jupitermass(IAU))")) -Orbit `time` defined by `jupiterdistance` and the Sun-Jupiter system `mass`. +Orbit `time` defined by `jupiterdistance` and the Sun-Jupiter system `mass` (s). ```Julia julia> jovianyear(Metric) # s $(jovianyear(Metric)) @@ -1334,7 +1409,7 @@ $(jovianyear(IAU)) @doc """ $(unitext(:gaussianmonth,"τ*sqrt(lunardistance(U)^3/earthmass(U)/gravitation(U))")) -Orbit `time` defined by `lunardistance` and `earthmass` for neglible `mass` satellite. +Orbit `time` defined by `lunardistance` and `earthmass` for neglible `mass` satellite (s). ```Julia julia> gaussianmonth(Metric) # s $(gaussianmonth(Metric)) @@ -1350,7 +1425,7 @@ $(gaussianmonth(IAU)) @doc """ $(unitext(:siderealmonth,"gaussianmonth(U)/√(𝟏+lunarmass(IAU))")) -Orbit `time` defined by standard `lunardistance` and the Earth-Moon system `mass`. +Orbit `time` defined by standard `lunardistance` and the Earth-Moon system `mass` (s). ```Julia julia> siderealmonth(Metric) # s $(siderealmonth(Metric)) @@ -1366,7 +1441,7 @@ $(siderealmonth(IAU)) @doc """ $(unitext(:synodicmonth,"𝟏/(𝟏/siderealmonth(U)-𝟏/siderealyear(U))")) -Orbit `time` defined by `siderealmonth` and `siderealyear` of the Sun-Earth-Moon system. +Orbit `time` defined by `siderealmonth` and `siderealyear` of Sun-Earth-Moon system (s). ```Julia julia> synodicmonth(Metric) # s $(synodicmonth(Metric)) @@ -1412,10 +1487,10 @@ $(greatcircle(IAU)) """ greatcircle @doc """ - sackurtetrode(U::UnitSystem,P=atm,T=𝟏,m=mᵤ) = log(kB*T/P*sqrt(m*kB*T/τ/ħ^2)^3)+5/2 + sackurtetrode(U::UnitSystem,P=atm,T=𝟏,m=Da) = log(kB*T/P*sqrt(m*kB*T/τ/ħ^2)^3)+5/2 dimensionless : [𝟙], [𝟙], [𝟙], [𝟙], [𝟙] -Ideal gas entropy density for pressure `P`, temperature `T`, atomicmass `m` (dimensionless). +Ideal gas entropy density for pressure `P`, temperature `T`, atomic mass `m` (dimensionless). ```Julia julia> sackurtetrode(Metric) $(sackurtetrode(Metric)) @@ -1451,4 +1526,26 @@ $(mechanicalheat(British)) ``` """ mechanicalheat +@doc """ + eddington(U::UnitSystem) = mass(𝟏,U,Cosmological) + +Approximate number of protons in the `Universe` as estimated by Eddington (kg or lb). +```Julia +julia> 𝟐^2^2^3/α # mₚ +$(𝟐^2^2^3/α) + +julia> eddington(QCD) # mₚ +$(eddington(QCD)) + +julia> eddington(Metric) # kg +$(eddington(Metric)) + +julia> eddington(IAU) # M☉ +$(eddington(IAU)) + +julia> eddington(Cosmological) +$(eddington(Cosmological)) +``` +""" eddington + include("derivedocs.jl") diff --git a/src/systems.jl b/src/systems.jl index 15e0f14..72c951a 100644 --- a/src/systems.jl +++ b/src/systems.jl @@ -19,10 +19,10 @@ export byte,kibi,mebi,gibi,tebi,pebi,exbi,zebi,yobi export slug, ft, KJ1990, KJ2014, RK1990, RK2014, mₑ1990, mₑ2014, temp, units, °R, T₀, eV export slugs, kilograms, lbm, meters, feet, rankine, kelvin, moles, molecules, universal export Universe, UnitSystem, US, universe, HOUR, DAY, th, lc, mc, tcq, lcq, mcq -export similitude, 𝟙, F, M, L, T, Q, Θ, N, J, A, Λ, C, sackurtetrode +export similitude, 𝟙, F, M, L, T, Q, Θ, N, J, A, Λ, C, sackurtetrode,atomicmass,intensity export °R, τ, 𝟏𝟎, 𝟐, 𝟑, 𝟓, nm, 𝟏, mₑ, μ₀, Mᵤ, Rᵤ, αG, GG, slug, ħ, μₚₑ, αL, 𝟕, 𝟏𝟏, 𝟏𝟗, 𝟒𝟑 -const EMU2019,ESU2019,stiffness = EMU,ESU,fluence +const EMU2019,ESU2019,stiffness,intensity,atomicmass = EMU,ESU,fluence,irradiance,dalton # == Metric is different const eV = electronvolt(SI2019) @@ -32,7 +32,7 @@ const μB = magneton(SI2019) # const ε₀ = vacuumpermittivity(SI2019) # const kₑ = electrostatic(SI2019) # const mₚ = protonmass(SI2019) -const mᵤ = atomicmass(SI2019) +const Da = dalton(SI2019) const 𝔉 = faraday(SI2019) # const Φ₀ = magneticfluxquantum(SI2019) # const Z₀ = vacuumimpedance(SI2019) # @@ -73,12 +73,13 @@ const universal = molargas # constant aliases -const US,mpe, meu, mpu, ainv, aG = UnitSystem,μₚₑ, μₑᵤ, μₚᵤ, αinv, αG -const Mu,Ru,SB,hh,cc,m0,e0,ke,me,mp,mu,ee,FF,Z0,G0,Eh,a0,re,g0,lP,aL,ϵ₀ = Mᵤ,Rᵤ,σ,𝘩,𝘤,μ₀,ε₀,kₑ,mₑ,mₚ,mᵤ,𝘦,𝔉,Z₀,G₀,Eₕ,a₀,rₑ,g₀,ℓP,αL,ε₀ -export κ, G, GG, NA, kB, Rᵤ, σ, 𝘩, ħ, 𝘤, μ₀, ε₀, kₑ, mₑ, mₚ, mᵤ, 𝘦, 𝔉, Φ₀, Z₀, G₀, Eₕ, R∞, a₀, rₑ, KJ, RK, Ru, SB, hh, cc, m0, e0, ke, me, mp, mu, ee, FF, Z0, G0, Eh, a0, re, μB +const US,mpe, mep, meu, mpu, ainv, aG = UnitSystem,μₚₑ, μₑₚ, μₑᵤ, μₚᵤ, αinv, αG +const Mu,Ru,SB,hh,cc,m0,e0,ke,me,mp,mu,mᵤ,ee,FF,Z0,G0,Eh,a0,re,g0,lP,aL,ϵ₀ = Mᵤ,Rᵤ,σ,𝘩,𝘤,μ₀,ε₀,kₑ,mₑ,mₚ,Da,Da,𝘦,𝔉,Z₀,G₀,Eₕ,a₀,rₑ,g₀,ℓP,αL,ε₀ +export κ, G, GG, NA, kB, Rᵤ, σ, 𝘩, ħ, 𝘤, μ₀, ε₀, kₑ, mₑ, mₚ, Da, 𝘦, 𝔉, Φ₀, Z₀, G₀, Eₕ, R∞, a₀, rₑ, KJ, RK, Ru, SB, hh, cc, m0, e0, ke, me, mp, mu, mᵤ, ee, FF, Z0, G0, Eh, a0, re, μB export αG, αinv, μₚₑ, μₑᵤ, μₚᵤ, mpe, meu, mpu, mP, δμ₀, Mᵤ, Mu, RH, Ry, ΔνCs, Kcd, ainv export cal, kcal, calₜₕ, kcalₜₕ, calᵢₜ, kcalᵢₜ, ℓP, g₀, g0, atm, lbm, BTUJ, BTUftlb, aG -export lP, tP, TP, lS, tS, mS, qS, lA, tA, mA, qA, lQCD, tQCD, mQCD, ϵ₀, αL, aL +export lP, tP, TP, lS, tS, mS, qS, lA, tA, mA, qA, lQCD, tQCD, mQCD, ϵ₀, αL, aL, μₑₚ, 𝘦ₙ +export GM☉, GME, GMJ, LD, JD, lb, fur, ftUS, Rᵤ2014, Ωᵢₜ, Vᵢₜ, em, mi, 𝘦ᵣ @doc """ Constant{D} <: Real @@ -151,6 +152,151 @@ $(luminousefficacy(SI2019)) ``` """ SI2019, SI +@doc """ + MetricTurn = MetricSystem(milli,𝟐*τ/𝟏𝟎^7,Rᵤ,𝟏,𝟏/τ) + +Standard `MetricTurn` system based on exact `molarmass` and `vacuumpermeability`. + +```Julia +julia> boltzmann(MetricTurn) # J⋅K⁻¹ +$(boltzmann(MetricTurn)) + +julia> planckreduced(MetricTurn) # J⋅s⋅τ⁻¹ +$(planckreduced(MetricTurn)) + +julia> lightspeed(MetricTurn) # m⋅s⁻¹ +$(lightspeed(MetricTurn)) + +julia> vacuumpermeability(MetricTurn) # H⋅m⁻¹ +$(vacuumpermeability(MetricTurn)) + +julia> electronmass(MetricTurn) # kg +$(electronmass(MetricTurn)) + +julia> molarmass(MetricTurn) # kg⋅mol⁻¹ +$(molarmass(MetricTurn)) + +julia> luminousefficacy(MetricTurn) # lm⋅W⁻¹ +$(luminousefficacy(MetricTurn)) +``` +""" MetricTurn + +@doc """ + MetricDegree = MetricSystem(milli,𝟐*τ/𝟏𝟎^7,Rᵤ,𝟏,𝟐^3*𝟑^2*𝟓/τ) + +Standard `MetricDegree` system based on exact `molarmass` and `vacuumpermeability`. + +```Julia +julia> boltzmann(MetricDegree) # J⋅K⁻¹ +$(boltzmann(MetricDegree)) + +julia> planckreduced(MetricDegree) # J⋅s⋅deg⁻¹ +$(planckreduced(MetricDegree)) + +julia> lightspeed(MetricDegree) # m⋅s⁻¹ +$(lightspeed(MetricDegree)) + +julia> vacuumpermeability(MetricDegree) # H⋅m⁻¹ +$(vacuumpermeability(MetricDegree)) + +julia> electronmass(MetricDegree) # kg +$(electronmass(MetricDegree)) + +julia> molarmass(MetricDegree) # kg⋅mol⁻¹ +$(molarmass(MetricDegree)) + +julia> luminousefficacy(MetricDegree) # lm⋅W⁻¹ +$(luminousefficacy(MetricDegree)) +``` +""" MetricDegree + +@doc """ + MetricArcminute = MetricSystem(milli,𝟐*τ/𝟏𝟎^7,Rᵤ,𝟏,𝟐^5*𝟑^3*𝟓^2/τ) + +Standard `MetricArcminute` system based on exact `molarmass` and `vacuumpermeability`. + +```Julia +julia> boltzmann(MetricArcminute) # J⋅K⁻¹ +$(boltzmann(MetricArcminute)) + +julia> planckreduced(MetricArcminute) # J⋅s⋅amin⁻¹ +$(planckreduced(MetricArcminute)) + +julia> lightspeed(MetricArcminute) # m⋅s⁻¹ +$(lightspeed(MetricArcminute)) + +julia> vacuumpermeability(MetricArcminute) # H⋅m⁻¹ +$(vacuumpermeability(MetricArcminute)) + +julia> electronmass(MetricArcminute) # kg +$(electronmass(MetricArcminute)) + +julia> molarmass(MetricArcminute) # kg⋅mol⁻¹ +$(molarmass(MetricArcminute)) + +julia> luminousefficacy(MetricArcminute) # lm⋅W⁻¹ +$(luminousefficacy(MetricArcminute)) +``` +""" MetricArcminute + +@doc """ + MetricArcsecond = MetricSystem(milli,𝟐*τ/𝟏𝟎^7,Rᵤ,𝟏,𝟐^7*𝟑^4*3/τ) + +Standard `MetricArcsecond` system based on exact `molarmass` and `vacuumpermeability`. + +```Julia +julia> boltzmann(MetricArcsecond) # J⋅K⁻¹ +$(boltzmann(MetricArcsecond)) + +julia> planckreduced(MetricArcsecond) # J⋅s⋅asec⁻¹ +$(planckreduced(MetricArcsecond)) + +julia> lightspeed(MetricArcsecond) # m⋅s⁻¹ +$(lightspeed(MetricArcsecond)) + +julia> vacuumpermeability(MetricArcsecond) # H⋅m⁻¹ +$(vacuumpermeability(MetricArcsecond)) + +julia> electronmass(MetricArcsecond) # kg +$(electronmass(MetricArcsecond)) + +julia> molarmass(MetricArcsecond) # kg⋅mol⁻¹ +$(molarmass(MetricArcsecond)) + +julia> luminousefficacy(MetricArcsecond) # lm⋅W⁻¹ +$(luminousefficacy(MetricArcsecond)) +``` +""" MetricArcsecond + +@doc """ + MetricGradian = MetricSystem(milli,𝟐*τ/𝟏𝟎^7,Rᵤ,𝟏,𝟐^4*𝟓^2/τ) + +Standard `MetricGradian` system based on exact `molarmass` and `vacuumpermeability`. + +```Julia +julia> boltzmann(MetricGradian) # J⋅K⁻¹ +$(boltzmann(MetricGradian)) + +julia> planckreduced(MetricGradian) # J⋅s⋅gon⁻¹ +$(planckreduced(MetricGradian)) + +julia> lightspeed(MetricGradian) # m⋅s⁻¹ +$(lightspeed(MetricGradian)) + +julia> vacuumpermeability(MetricGradian) # H⋅m⁻¹ +$(vacuumpermeability(MetricGradian)) + +julia> electronmass(MetricGradian) # kg +$(electronmass(MetricGradian)) + +julia> molarmass(MetricGradian) # kg⋅mol⁻¹ +$(molarmass(MetricGradian)) + +julia> luminousefficacy(MetricGradian) # lm⋅W⁻¹ +$(luminousefficacy(MetricGradian)) +``` +""" MetricGradian + @doc """ MetricEngineering = MetricSystem(milli,𝟐*τ/𝟏𝟎^7,Rᵤ,g₀) @@ -183,7 +329,7 @@ $(gravity(MetricEngineering)) ``` """ MetricEngineering, ME -@doc """ +#=@doc """ SI2019Engineering = MetricSystem(Mᵤ,μ₀,Rᵤ,g₀) Systeme International d'Unites based on kilogram and kilopond (kilogram-force) units. @@ -213,7 +359,7 @@ $(luminousefficacy(SI2019Engineering)) julia> gravity(SI2019Engineering) # kg⋅m⋅kgf⁻¹⋅s⁻² $(gravity(SI2019Engineering)) ``` -""" SI2019Engineering, SIE +""" SI2019Engineering, SIE=# @doc """ SI1976 = MetricSystem(milli,𝟐*τ/𝟏𝟎^7,8.31432) @@ -416,7 +562,7 @@ $(luminousefficacy(Meridian)) ``` """ Meridian -@doc """ +#=@doc """ MeridianEngineering = EntropySystem(MetricEngineering,𝟏,em,em^3,𝟏,τ/𝟐^6/𝟓^7/g₀^2,milli) Modern ideal engineering `UnitSystem` variant of the original French `Meridian` system. @@ -449,7 +595,7 @@ $(luminousefficacy(MeridianEngineering)) julia> gravity(MeridianEngineering) # keg⋅em⋅kegf⁻¹⋅s⁻² $(gravity(MeridianEngineering)) ``` -""" MeridianEngineering +""" MeridianEngineering=# cgstext(US,AMP,cgs=eval(US)) = """ @@ -665,7 +811,7 @@ $(luminousefficacy(GravitationalMetric)) ``` """ GravitationalMetric, GM -@doc """ +#=@doc """ GraviationalSI2019 = EntropySystem(SI2019,𝟏,𝟏,g₀) Gravitational Systeme International d'Unites based on `hyl` and `kilopond` units. @@ -692,9 +838,9 @@ $(molarmass(GravitationalSI2019)) julia> luminousefficacy(GravitationalMetric) # lm⋅s⋅m⁻¹⋅kgf⁻¹ $(luminousefficacy(GravitationalMetric)) ``` -""" GravitationalSI2019, GSI, GSI2019 +""" GravitationalSI2019, GSI, GSI2019=# -@doc """ +#=@doc """ GravitationalMeridian = EntropySystem(Metric,𝟏,em,g₀*em^3,𝟏,τ/𝟐^6/𝟓^7/g₀,milli) Gravitational `UnitSystem` variant of the original French `Meridian` unit defintion. @@ -724,7 +870,7 @@ $(molarmass(GravitationalMeridian)) julia> luminousefficacy(GravitationalMeridian) # lm⋅s⋅em⁻¹⋅kegf⁻¹ $(luminousefficacy(GravitationalMeridian)) ``` -""" GravitationalMeridian +""" GravitationalMeridian=# @doc """ MTS = EntropySystem(SI2019,𝟏,𝟏,kilo) @@ -881,7 +1027,7 @@ $(sqrt(gravitation(IAUJ)*solarmass(IAUJ)/jupiterdistance(IAUJ)^3)) """ IAUJ #=@doc """ - Astronomical = AstronomicalSystem(Metric) + Astronomical = EntropySystem(Metric,𝟏,𝟏,𝟏/gravitation(Metric)) Astronomical `UnitSystem` defined by making the `newton` gravitational constant 1. @@ -913,7 +1059,7 @@ $(gravitation(Astronomical)) """ Astronomical=# @doc """ - Hubble = EntropySystem(Metric,th,𝘤*th,𝟏) + Hubble = AstronomicalSystem(Metric,th,𝘤*th,mₑ) Hubble `UnitSystem` defined by `hubble` parameter. @@ -948,7 +1094,7 @@ $(cosmological(Hubble)) """ Hubble @doc """ - Cosmological = EntropySystem(Metric,lc/𝘤,lc,mc) + Cosmological = AstronomicalSystem(Metric,lc/𝘤,lc,mc) Cosmological scale `UnitSystem` defined by `darkenergydensity`. @@ -983,7 +1129,7 @@ $(cosmological(Cosmological)) """ Cosmological @doc """ - CosmologicalQuantum = EntropySystem(Metric,tcq,lcq,mcq) + CosmologicalQuantum = AstronomicalSystem(Metric,tcq,lcq,mcq) Cosmological quantum scale `UnitSystem` defined by `darkenergydensity`. @@ -1290,17 +1436,17 @@ $(textunits(PlanckGauss,:PlanckGauss)) The well known `PlanckGauss` values for `length`, `time`, `mass`, and `temperature` are: ```Julia -julia> length(PlanckGauss,Metric) # ℓP -$(length(PlanckGauss,Metric)) +julia> length(PlanckGauss,SI2019) # ℓP +$(length(PlanckGauss,SI2019)) -julia> time(PlanckGauss,Metric) # tP -$(time(PlanckGauss,Metric)) +julia> time(PlanckGauss,SI2019) # tP +$(time(PlanckGauss,SI2019)) -julia> mass(PlanckGauss,Metric) # mP -$(mass(PlanckGauss,Metric)) +julia> mass(PlanckGauss,SI2019) # mP +$(mass(PlanckGauss,SI2019)) -julia> temperature(PlanckGauss,Metric) # TP -$(temperature(PlanckGauss,Metric)) +julia> temperature(PlanckGauss,SI2019) # TP +$(temperature(PlanckGauss,SI2019)) ``` """ PlanckGauss @@ -1313,40 +1459,40 @@ $(textunits(Stoney,:Stoney)) The well known `Stoney` values for `length`, `time`, `mass`, and `charge` are: ```Julia -julia> length(Stoney,Metric) # lS -$(length(Stoney,Metric)) +julia> length(Stoney,SI2019) # lS +$(length(Stoney,SI2019)) -julia> time(Stoney,Metric) # tS -$(time(Stoney,Metric)) +julia> time(Stoney,SI2019) # tS +$(time(Stoney,SI2019)) -julia> mass(Stoney,Metric) # mS -$(mass(Stoney,Metric)) +julia> mass(Stoney,SI2019) # mS +$(mass(Stoney,SI2019)) -julia> charge(Stoney,Metric) # qS -$(charge(Stoney,Metric)) +julia> charge(Stoney,SI2019) # qS +$(charge(Stoney,SI2019)) ``` """ Stoney @doc """ Hartree = UnitSystem(𝟏,𝟏,𝟏/α,𝟐*τ*α^2,𝟏) -Hartree atomic `UnitSystem` with `lightspeed` of `αinv` and `permeability` of `𝟐*τ*α^2`. +Hartree atomic `UnitSystem` based on `bohr` radius and `elementarycharge` scale. $(textunits(Hartree,:Hartree)) The well known `Hartree` atomic unit values for `length`, `time`, `mass`, and `charge` are: ```Julia -julia> length(Hartree,Metric) # lA -$(length(Hartree,Metric)) +julia> length(Hartree,SI2019) # lA +$(length(Hartree,SI2019)) -julia> time(Hartree,Metric) # tA -$(time(Hartree,Metric)) +julia> time(Hartree,SI2019) # tA +$(time(Hartree,SI2019)) -julia> mass(Hartree,Metric) # mA -$(mass(Hartree,Metric)) +julia> mass(Hartree,SI2019) # mA +$(mass(Hartree,SI2019)) -julia> charge(Hartree,Metric) # qA -$(charge(Hartree,Metric)) +julia> charge(Hartree,SI2019) # qA +$(charge(Hartree,SI2019)) ``` """ Hartree @@ -1356,6 +1502,21 @@ $(charge(Hartree,Metric)) Rydberg `UnitSystem` with `lightspeed` of `𝟐/α` and `permeability` of `π*α^2`. $(textunits(Rydberg,:Rydberg)) + +The well known `Rydberg` atomic unit values for `length`, `time`, `mass`, and `charge` are: +```Julia +julia> length(Rydberg,SI2019) # lR +$(length(Rydberg,SI2019)) + +julia> time(Rydberg,SI2019) # tR +$(time(Rydberg,SI2019)) + +julia> mass(Rydberg,SI2019) # mR +$(mass(Rydberg,SI2019)) + +julia> charge(Rydberg,SI2019) # qR +$(charge(Rydberg,SI2019)) +``` """ Rydberg @doc """ @@ -1383,17 +1544,17 @@ $(textunits(Natural,:Natural)) The well known `Natural` values for `length`, `time`, `mass`, and `charge` are: ```Julia -julia> length(Natural,Metric) -$(length(Natural,Metric)) +julia> length(Natural,SI2019) +$(length(Natural,SI2019)) -julia> time(Natural,Metric) -$(time(Natural,Metric)) +julia> time(Natural,SI2019) +$(time(Natural,SI2019)) -julia> mass(Natural,Metric) -$(mass(Natural,Metric)) +julia> mass(Natural,SI2019) +$(mass(Natural,SI2019)) -julia> charge(Natural,Metric) -$(charge(Natural,Metric)) +julia> charge(Natural,SI2019) +$(charge(Natural,SI2019)) ``` """ Natural @@ -1408,68 +1569,68 @@ $(textunits(NaturalGauss,:NaturalGauss)) @doc """ QCD = UnitSystem(𝟏,𝟏,𝟏,𝟏,𝟏/μₚₑ) -Qunatum chromodynamics `UnitSystem` with `electronmass` of `𝟏/μₚₑ` or `𝟏/$μₚₑ`. +Qunatum chromodynamics `UnitSystem` based on the `protonmass` scale. $(textunits(QCD,:QCD)) The well known `QCD` values for `length`, `time`, `mass`, and `charge` are: ```Julia -julia> length(QCD,Metric) # lQCD -$(length(QCD,Metric)) +julia> length(QCD,SI2019) # lQCD +$(length(QCD,SI2019)) -julia> time(QCD,Metric) # tQCD -$(time(QCD,Metric)) +julia> time(QCD,SI2019) # tQCD +$(time(QCD,SI2019)) -julia> mass(QCD,Metric) # mQCD -$(mass(QCD,Metric)) +julia> mass(QCD,SI2019) # mQCD +$(mass(QCD,SI2019)) -julia> charge(QCD,Metric) -$(charge(QCD,Metric)) +julia> charge(QCD,SI2019) # qQCD +$(charge(QCD,SI2019)) ``` """ QCD @doc """ QCDGauss = UnitSystem(𝟏,𝟏,𝟏,𝟐*τ,𝟏/μₚₑ) -Qunatum chromodynamics (Gauss) `UnitSystem` with `electronmass` of `𝟏/μₚₑ`. +Qunatum chromodynamics (Gauss) `UnitSystem` based on the `protonmass` scale. $(textunits(QCDGauss,:QCDGauss)) The well known `QCDGauss` values for `length`, `time`, `mass`, and `charge` are: ```Julia -julia> length(QCDGauss,Metric) # lQCD -$(length(QCDGauss,Metric)) +julia> length(QCDGauss,SI2019) # lQCD +$(length(QCDGauss,SI2019)) -julia> time(QCDGauss,Metric) # tQCD -$(time(QCDGauss,Metric)) +julia> time(QCDGauss,SI2019) # tQCD +$(time(QCDGauss,SI2019)) -julia> mass(QCDGauss,Metric) # mQCD -$(mass(QCDGauss,Metric)) +julia> mass(QCDGauss,SI2019) # mQCD +$(mass(QCDGauss,SI2019)) -julia> charge(QCDGauss,Metric) -$(charge(QCDGauss,Metric)) +julia> charge(QCDGauss,SI2019) # qQCD +$(charge(QCDGauss,SI2019)) ``` """ QCDGauss @doc """ QCDoriginal = UnitSystem(𝟏,𝟏,𝟏,𝟐*τ*α,𝟏/μₚₑ) -Qunatum chromodynamics (original) `UnitSystem` with `permeability` of `4π*α`. +Qunatum chromodynamics (original) `UnitSystem` scaled by `protonmass` and `elementarycharge`. $(textunits(QCDoriginal,:QCDoriginal)) The well known `QCDoriginal` values for `length`, `time`, `mass`, and `charge` are: ```Julia -julia> length(QCDoriginal,Metric) # lQCD -$(length(QCDoriginal,Metric)) +julia> length(QCDoriginal,SI2019) # lQCD +$(length(QCDoriginal,SI2019)) -julia> time(QCDoriginal,Metric) # tQCD -$(time(QCDoriginal,Metric)) +julia> time(QCDoriginal,SI2019) # tQCD +$(time(QCDoriginal,SI2019)) -julia> mass(QCDoriginal,Metric) # mQCD -$(mass(QCDoriginal,Metric)) +julia> mass(QCDoriginal,SI2019) # mQCD +$(mass(QCDoriginal,SI2019)) -julia> charge(QCDoriginal,Metric) -$(charge(QCDoriginal,Metric)) +julia> charge(QCDoriginal,SI2019) # qQCD +$(charge(QCDoriginal,SI2019)) ``` """ QCDoriginal diff --git a/test/runtests.jl b/test/runtests.jl index f89ab17..1ac05ac 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -2,10 +2,10 @@ using UnitSystems, Test for S ∈ UnitSystems.Systems U = eval(S) - S ∉ () && @testset "UnitSystem: $S" begin + S ∉ (:MetricTurn,:MetricGradian,:MetricDegree,:MetricArcminute,:MetricArcsecond) && @testset "UnitSystem: $S" begin S≠:FFF && @testset "Dimensionless constants" begin - @test μₑᵤ ≈ electronmass(U)/atomicmass(U) - @test μₚᵤ ≈ protonmass(U)/atomicmass(U) + @test μₑᵤ ≈ electronmass(U)/dalton(U) + @test μₚᵤ ≈ protonmass(U)/dalton(U) @test μₚₑ ≈ protonmass(U)/electronmass(U) @test 1/αinv ≈ (elementarycharge(U)/charge(PlanckGauss,U))^2 @test αG ≈ (electronmass(U)/mass(PlanckGauss,U))^2 @@ -25,7 +25,7 @@ for S ∈ UnitSystems.Systems @test lightspeed(U) ≈ electronmass(U)^2*gravitation(U)/planckreduced(U)/αG end S≠:FFF && @testset "planck" begin - @test planck(U) == 2π*planckreduced(U) + @test planck(U) == turn(U)*planckreduced(U) @test planck(U) ≈ 2elementarycharge(U)*lorentz(U)/josephson(U) @test planck(U) ≈ 8/αinv/rationalization(U)/lightspeed(U)/vacuumpermeability(U)/josephson(U)^2 @test planck(U) ≈ 4lorentz(U)^2/josephson(U)^2/klitzing(U) @@ -49,22 +49,22 @@ for S ∈ UnitSystems.Systems end end @testset "Atomic constants" begin - @testset "atomicmass" begin - @test atomicmass(U) ≈ molarmass(U)/avogadro(U) - @test atomicmass(U) ≈ electronmass(U)/μₑᵤ - @test atomicmass(U) ≈ protonmass(U)/μₚᵤ - @test atomicmass(U) ≈ 2rydberg(U)*planck(U)/μₑᵤ/lightspeed(U)*αinv^2*gravity(U) - @test atomicmass(U) ≈ planckmass(U)*sqrt(αG)/μₑᵤ + @testset "dalton" begin + @test dalton(U) ≈ molarmass(U)/avogadro(U) + @test dalton(U) ≈ electronmass(U)/μₑᵤ + @test dalton(U) ≈ protonmass(U)/μₚᵤ + @test dalton(U) ≈ 2rydberg(U)*planck(U)/μₑᵤ/lightspeed(U)*αinv^2*gravity(U) + @test dalton(U) ≈ planckmass(U)*sqrt(αG)/μₑᵤ end @testset "protonmass" begin - @test protonmass(U) ≈ μₚᵤ*atomicmass(U) + @test protonmass(U) ≈ μₚᵤ*dalton(U) @test protonmass(U) ≈ μₚᵤ*molarmass(U)/avogadro(U) @test protonmass(U) ≈ μₚₑ*electronmass(U) @test protonmass(U) ≈ μₚₑ*2rydberg(U)*planck(U)/lightspeed(U)*αinv^2*gravity(U) @test protonmass(U) ≈ planckmass(U)*μₚₑ*sqrt(αG) end @testset "electronmass" begin - @test electronmass(U) ≈ μₑᵤ*atomicmass(U) + @test electronmass(U) ≈ μₑᵤ*dalton(U) @test electronmass(U) ≈ μₑᵤ*molarmass(U)/avogadro(U) @test electronmass(U) ≈ protonmass(U)/μₚₑ @test electronmass(U) ≈ 2rydberg(U)*planck(U)/lightspeed(U)*αinv^2*gravity(U) @@ -101,26 +101,26 @@ for S ∈ UnitSystems.Systems end @testset "Thermodynamic constants" begin @testset "molarmass" begin - @test molarmass(U) ≈ atomicmass(U)*avogadro(U) + @test molarmass(U) ≈ dalton(U)*avogadro(U) @test molarmass(U) ≈ avogadro(U)*electronmass(U)/μₑᵤ @test molarmass(U) ≈ avogadro(U)*protonmass(U)/μₚᵤ @test molarmass(U) ≈ avogadro(U)*2rydberg(U)*planck(U)/μₑᵤ/lightspeed(U)*αinv^2*gravity(U) end @testset "avogadro" begin @test avogadro(U) ≈ molargas(U)/boltzmann(U) - @test avogadro(U) ≈ molarmass(U)/atomicmass(U) + @test avogadro(U) ≈ molarmass(U)/dalton(U) @test avogadro(U) ≈ molarmass(U)*μₑᵤ/electronmass(U) @test avogadro(U) ≈ molarmass(U)*μₑᵤ*lightspeed(U)/αinv^2/2rydberg(U)/planck(U)/gravity(U) end @testset "boltzmann" begin @test boltzmann(U) == molargas(U)/avogadro(U) - @test boltzmann(U) ≈ atomicmass(U)*universal(U)/molarmass(U) + @test boltzmann(U) ≈ dalton(U)*universal(U)/molarmass(U) @test boltzmann(U) ≈ electronmass(U)*universal(U)/μₑᵤ/molarmass(U) @test boltzmann(U) ≈ 2molargas(U)*rydberg(U)*planck(U)/molarmass(U)/μₑᵤ/lightspeed(U)*αinv^2*gravity(U) end @testset "molargas" begin @test molargas(U) == boltzmann(U)*avogadro(U) - @test molargas(U) ≈ boltzmann(U)*molarmass(U)/atomicmass(U) + @test molargas(U) ≈ boltzmann(U)*molarmass(U)/dalton(U) @test molargas(U) ≈ boltzmann(U)*molarmass(U)*μₑᵤ/electronmass(U) @test molargas(U) ≈ boltzmann(U)*molarmass(U)*μₑᵤ*lightspeed(U)/αinv^2/2planck(U)/rydberg(U)/gravity(U) end