From a559b88ac8c03d777aaab26e5de488ef4d67c8fb Mon Sep 17 00:00:00 2001 From: David Peter Date: Fri, 24 Nov 2023 21:23:55 +0100 Subject: [PATCH] Add CODATA 2018 values of physics constants closes #235 --- examples/codata2018_consistency.nbt | 21 ++++++++++ numbat/modules/physics/constants.nbt | 58 ++++++++++++++++++++-------- numbat/modules/units/si.nbt | 6 +-- 3 files changed, 66 insertions(+), 19 deletions(-) create mode 100644 examples/codata2018_consistency.nbt diff --git a/examples/codata2018_consistency.nbt b/examples/codata2018_consistency.nbt new file mode 100644 index 00000000..c154e1b1 --- /dev/null +++ b/examples/codata2018_consistency.nbt @@ -0,0 +1,21 @@ +# https://physics.nist.gov/cgi-bin/cuu/Category?view=html&Frequently+used+constants.x=55&Frequently+used+constants.y=9 + +assert_eq(m_u, 1.660_539_066_60e-27 kg) +assert_eq(N_A, 6.022_140_76e23 mol^-1) +assert_eq(k_B, 1.380_649e-23 J/K) +assert_eq(conductance_quantum, 7.748_091_729e-5 S, 1e-14 S) +assert_eq(electron_mass, 9.109_383_7015e-31 kg) +assert_eq(1 eV, 1.602_176_634e-19 J) +assert_eq(electron_charge, 1.602_176_634e-19 C) +assert_eq(faraday_constant, 96_485.332_12 C mol^-1, 1e-5 C mol^-1) +assert_eq(α, 7.297_352_5693e-3, 1e-13) +assert_eq(josephson_constant, 483_597.848_4e9 Hz V^-1, 1e5 Hz V^-1) +assert_eq(magnetic_flux_quantum, 2.067_833_848e-15 Wb, 1e-24 Wb) +assert_eq(gas_constant, 8.314_462_618 J mol^-1 K^-1, 1e-9 J mol^-1 K^-1) +assert_eq(G, 6.674_30e-11 m^3 kg^-1 s^-2) +assert_eq(planck_constant, 6.626_070_15e-34 J Hz^-1) +assert_eq(proton_mass, 1.672_621_923_69e-27 kg) +assert_eq(stefan_boltzmann_constant, 5.670_374_419e-8 W m^-2 K^-4, 1e-17 W m^-2 K^-4) +assert_eq(eps0, 8.854_187_8128e-12 F m^-1, 1e-24 F m^-1) +assert_eq(mu0, 1.256_637_062_12e-6 N A^-2) +assert_eq(von_klitzing_constant, 25_812.807_45 Ω, 1e-5 Ω) diff --git a/numbat/modules/physics/constants.nbt b/numbat/modules/physics/constants.nbt index b8a1d344..c58a40c3 100644 --- a/numbat/modules/physics/constants.nbt +++ b/numbat/modules/physics/constants.nbt @@ -9,17 +9,17 @@ let speed_of_light: Velocity = 299_792_458 m / s @name("Newtonian constant of gravitation") @url("https://en.wikipedia.org/wiki/Gravitational_constant") @aliases(G) -let gravitational_constant: Force × Length^2 / Mass^2 = 6.67430e-11 m³ / (kg s²) +let gravitational_constant: Force × Length^2 / Mass^2 = 6.674_30e-11 m³ / (kg s²) @name("Standard acceleration of gravity on earth") @url("https://en.wikipedia.org/wiki/Gravity_of_Earth") @aliases(g0) -let gravity: Acceleration = 9.80665 m / s² +let gravity: Acceleration = 9.806_65 m / s² @name("Planck constant") @url("https://en.wikipedia.org/wiki/Planck_constant") @aliases(ℎ) -let planck_constant: Action = 6.62607015e-34 J / Hz +let planck_constant: Action = 6.626_070_15e-34 J / Hz @name("Reduced Planck constant") @url("https://en.wikipedia.org/wiki/Planck_constant#Reduced_Planck_constant_%E2%84%8F") @@ -28,59 +28,59 @@ let ℏ: AngularMomentum = planck_constant / 2π @name("Electron mass") @url("https://en.wikipedia.org/wiki/Electron_mass") -let electron_mass: Mass = 9.1093837015e-31 kg +let electron_mass: Mass = 9.109_383_701_5e-31 kg @name("Elementary charge") @url("https://en.wikipedia.org/wiki/Elementary_charge") @aliases(electron_charge) -let elementary_charge: ElectricCharge = 1.602176634e-19 C +let elementary_charge: ElectricCharge = 1.602_176_634e-19 C @name("Vacuum permeability / magnetic constant") @url("https://en.wikipedia.org/wiki/Vacuum_permeability") @aliases(µ0,mu0) -let magnetic_constant: MagneticPermeability = 1.25663706212e-6 N / A² +let magnetic_constant: MagneticPermeability = 1.256_637_062_12e-6 N / A² @name("Vacuum electric permittivity / electric constant") -@url("https://en.wikiversity.org/wiki/Electric_constant") +@url("https://en.wikipedia.org/wiki/Vacuum_permittivity") @aliases(ε0,eps0) -let electric_constant: ElectricPermittivity = 8.8541878128e-12 F / m +let electric_constant: ElectricPermittivity = 1 / (µ0 c²) -> F/m @name("Bohr magneton") @aliases(µ_B) @url("https://en.wikipedia.org/wiki/Bohr_magneton") -let bohr_magneton: Energy / MagneticFluxDensity = 9.2740100783e-24 J / T +let bohr_magneton: Energy / MagneticFluxDensity = electron_charge ℏ / 2 electron_mass -> J/T @name("Fine structure constant") @url("https://en.wikipedia.org/wiki/Fine-structure_constant") @aliases(α, alpha) -let fine_structure_constant: Scalar = 7.2973525693e-3 +let fine_structure_constant: Scalar = electron_charge^2 / (2 eps0 ℎ c) @name("Proton mass") @url("https://en.wikipedia.org/wiki/Proton") -let proton_mass: Mass = 1.67262192369e-27 kg +let proton_mass: Mass = 1.672_621_923_69e-27 kg @name("Neutron mass") @url("https://en.wikipedia.org/wiki/Neutron") -let neutron_mass: Mass = 1.67492749804e-27 kg +let neutron_mass: Mass = 1.674_927_498_04e-27 kg @name("Avogadro constant") @url("https://en.wikipedia.org/wiki/Avogadro_constant") @aliases(N_A) -let avogadro_constant: 1 / AmountOfSubstance = 6.02214076e23 / mol +let avogadro_constant: 1 / AmountOfSubstance = 6.022_140_76e23 / mol @name("Boltzmann constant") @url("https://en.wikipedia.org/wiki/Boltzmann_constant") @aliases(k_B) -let boltzmann_constant: Energy / Temperature = 1.380649e-23 J / K +let boltzmann_constant: Energy / Temperature = 1.380_649e-23 J / K @name("Stefan-Boltzmann constant") @url("https://en.wikipedia.org/wiki/Stefan%E2%80%93Boltzmann_law") let stefan_boltzmann_constant: Power / (Area × Temperature^4) = 2 π^5 k_B^4 / (15 planck_constant^3 c^2) -@name("Ideal gas constant") +@name("Molar gas constant") @url("https://en.wikipedia.org/wiki/Gas_constant") @aliases(R) -let gas_constant: Energy / (AmountOfSubstance × Temperature) = 8.31446261815324 J / (K mol) +let gas_constant: Energy / (AmountOfSubstance × Temperature) = k_B × N_A @name("Bohr radius") @url("https://en.wikipedia.org/wiki/Bohr_radius") @@ -94,3 +94,29 @@ let rydberg_constant: Wavenumber = (electron_mass electron_charge^4) / (8 ε0^2 @name("Rydberg unit of energy") @url("https://en.wikipedia.org/wiki/Rydberg_constant") unit Ry: Energy = ℎ c × rydberg_constant + +@name("Atomic Mass constant") +@url("https://en.wikipedia.org/wiki/Atomic_mass_constant") +@aliases(m_u) +let atomic_mass_constant: Mass = 1 dalton -> kg + +@name("Conductance quantum") +@url("https://en.wikipedia.org/wiki/Conductance_quantum") +let conductance_quantum: ElectricConductance = 2 * elementary_charge^2 / planck_constant -> S + +@name("Faraday constant") +@url("https://en.wikipedia.org/wiki/Faraday_constant") +let faraday_constant: ElectricCharge / AmountOfSubstance = avogadro_constant * elementary_charge + +@name("Magnetic Flux Quantum") +@url("https://en.wikipedia.org/wiki/Magnetic_flux_quantum") +let magnetic_flux_quantum: MagneticFlux = planck_constant / (2 * elementary_charge) -> Wb + +@name("Josephson Constant") +@url("https://en.wikipedia.org/wiki/Josephson_constant") +let josephson_constant: Frequency / Voltage = 1 / magnetic_flux_quantum -> Hz/V + +@name("Von Klitzing Constant") +@url("https://en.wikipedia.org/wiki/Von_Klitzing_constant") +@aliases(R_K) +let von_klitzing_constant: ElectricResistance = planck_constant / (elementary_charge^2) -> Ω diff --git a/numbat/modules/units/si.nbt b/numbat/modules/units/si.nbt index 792d87de..29bb57d2 100644 --- a/numbat/modules/units/si.nbt +++ b/numbat/modules/units/si.nbt @@ -234,10 +234,10 @@ unit tonne: Mass = 10^3 kilogram @name("Dalton") @url("https://en.wikipedia.org/wiki/Dalton") @aliases(daltons, Da: short) -unit dalton: Mass = 1.660539040e-27 kilogram +unit dalton: Mass = 1.660_539_066_60e-27 kilogram -@name("Electronvolt") +@name("Electron volt") @url("https://en.wikipedia.org/wiki/Electronvolt") @metric_prefixes @aliases(electronvolts, eV: short) -unit electronvolt: Energy = 1.602176634e-19 joule +unit electronvolt: Energy = 1.602_176_634e-19 joule