(* ::Package:: *)

(* :Title: PhysicalConstants *)

(* :Author: Stephen Wolfram *)

(* :Summary:
This package provides the values of various commonly used physical constants.
*)

(* :Package Version: 1.5 *)

(* :Copyright: Copyright 1988-2007, Wolfram Research, Inc. *)

(* :Context: PhysicalConstants` *)

(* :History: 
	Version 1.1 by Stephen Wolfram (Wolfram Research), 1988. 
	Revised by ECM (Wolfram Research), 1990, 1996, 1997.
	Added support for CosmicBackgroundTemperature, SolarSchwarzschildRadius,
	  GalacticUnit, and SolarLuminosity;  made minor changes in
	  values for ClassicalElectronRadius, EarthMass, EarthRadius,
	  ElectronComptonWavelength, GravitationalConstant, MolarGasConstant,
	  ThomsonCrossSection;  improved some usage messages. 
	  Barbara Ercolano (Wolfram Research), 1997.
    Version 1.4, Adjusted values for CODATA 1998, John M. Novak, April 2000. 
    Updated for new paclet scheme for Mathematica 6, Brian Van Vertloo, 
      December 2006.
    Version 1.5, Adjusted values for CODATA 2006, John M. Novak, July 2007.
*)

(* :Keywords: *)

(* :Source:
    P.J. Mohr, B.N. Taylor, and D.B. Newell (2007), "The 2006 CODATA
        Recommended Values of the Fundamental Physical Constants"
        (Web Version 5.0). This database was developed by J. Baker,
        M. Douma, and S. Kotochigova.
	Available: http://physics.nist.gov/constants [as of 2007, July 22].
	National Institute of Standards and Technology, Gaithersburg, MD 20899.
       (Cited in code below as CODATA 2006.)
    CRC Handbook of Chemistry and Physics, 80th Edition, (David R. Lide,
      editor-in-chief) 1999-2000. (Cited in code below as HCAP 80.)
 *)

(* modified J. Gregory Moxness (JGM)
JGM: Updated for 2010 CODATA  2011/07/24 
	added std. error in `PhysicalConstantErrors sorted by precision
	seperated by Defined, Measured, Selected, and Derived
	also modified Units.m to include the Planck and my "New" UoM 
	
	JGM: Updated for 2014 CODATA  2015/12/27 
*)

(* :Warning: None. *)

(* :Mathematica Version: 4.0-6.0 *)

(* :Limitation: None. *)

(* :Discussion:
Note that all values are expressed in SI units, which has been integrated 
into the Units package.

As of CODATA 1998, some conventions used for the electron and muon
g-factors, and for the electron, muon and neutron magnetic moments,
are different than before; they are all expressed as a negative
number in CODATA 1998, and a factor of two that was previously divided
out of the electron g-factor is present.

For the QuantizedHallConductance, HCAP 80 gives a value for e^2/h,
while CODATA 1998 gives a value for 2*e^2/h. I took the CODATA value
and divided out the factor of 2, to match the HCAP and the previous
use in this package.

These notes apply to the CODATA 2006 update, as well.
*)

BeginPackage["PhysicalConstants`","Units`"]

(* ======================== GENERAL CONSTANTS ======================== *)

(* Universal Constants *)

If[Not@ValueQ[SpeedOfLight::usage],SpeedOfLight::usage =
"SpeedOfLight is the speed of light in a vacuum, a universal constant."];
If[Not@ValueQ[VacuumPermeability::usage],VacuumPermeability::usage =
"VacuumPermeability is the permeability of vacuum, a universal constant."];
If[Not@ValueQ[VacuumPermittivity::usage],VacuumPermittivity::usage =
"VacuumPermittivity is the permittivity of vacuum, a universal constant."];
If[Not@ValueQ[GravitationalConstant::usage],GravitationalConstant::usage =
"GravitationalConstant is the coefficient of proportionality in Newton's law of \
gravitation."];
If[Not@ValueQ[AccelerationDueToGravity::usage],AccelerationDueToGravity::usage =
"AccelerationDueToGravity is the acceleration of a body freely falling in a \
vacuum on Earth at sea level."];
If[Not@ValueQ[PlanckConstant::usage],PlanckConstant::usage =
"PlanckConstant is a universal constant of nature which relates the energy \
of a quantum of radiation to the frequency of the oscillator which emitted it."];
If[Not@ValueQ[PlanckConstantReduced::usage],PlanckConstantReduced::usage =
"PlanckConstantReduced is PlanckConstant/(2 Pi), a universal constant."];
If[Not@ValueQ[PlanckMass::usage],PlanckMass::usage = "PlanckMass is a universal constant."];

(* Electromagnetic Constants *)

If[Not@ValueQ[ElectronCharge::usage],ElectronCharge::usage =
"ElectronCharge is elementary charge, an electromagnetic constant."];
If[Not@ValueQ[MagneticFluxQuantum::usage],MagneticFluxQuantum::usage =
"MagneticFluxQuantum is magnetic flux quantum, an electromagnetic constant."];
If[Not@ValueQ[QuantizedHallConductance::usage],QuantizedHallConductance::usage =
"QuantizedHallConductance is quantized Hall conductance, an \
electromagnetic constant."];
(* BohrMagneton is Bohr magnetron, an electromagnetic constant.  But it
is also a unit of magnetic moment, so it is introduced only in Units.m, to
avoid shadowing. *)


(* =================== ATOMIC AND NUCLEAR CONSTANTS ==================== *)

If[Not@ValueQ[FineStructureConstant::usage],FineStructureConstant::usage =
"FineStructureConstant is the fine structure constant, an atomic constant."];
If[Not@ValueQ[RydbergConstant::usage],RydbergConstant::usage =
"RydbergConstant is an atomic constant appearing in the Rydberg formula \
expressing the wave-numbers of the lines in a spectral series."];
If[Not@ValueQ[BohrRadius::usage],BohrRadius::usage = "BohrRadius is the Bohr radius, an atomic constant."];

(* Electron *)

If[Not@ValueQ[ElectronMass::usage],ElectronMass::usage = "ElectronMass is the mass of an electron."];
If[Not@ValueQ[ElectronComptonWavelength::usage],ElectronComptonWavelength::usage =
"ElectronComptonWavelength is the electron Compton wavelength, given by \
PlanckConstant/(ElectronMass SpeedOfLight)."];
If[Not@ValueQ[ClassicalElectronRadius::usage],ClassicalElectronRadius::usage =
"ClassicalElectronRadius is the classical electron radius, an atomic constant."];
If[Not@ValueQ[ThomsonCrossSection::usage],ThomsonCrossSection::usage =
"ThomsonCrossSection is the Thomson cross section, an atomic constant."];
If[Not@ValueQ[ElectronMagneticMoment::usage],ElectronMagneticMoment::usage =
"ElectronMagneticMoment is the electron magnetic moment."];
If[Not@ValueQ[ElectronGFactor::usage],ElectronGFactor::usage = "ElectronGFactor is the electron g-factor."];

(* Muon *)

If[Not@ValueQ[MuonMass::usage],MuonMass::usage = "MuonMass is the mass of a muon."];
If[Not@ValueQ[MuonMagneticMoment::usage],MuonMagneticMoment::usage = "MuonMagneticMoment is the muon magnetic moment."];
If[Not@ValueQ[MuonGFactor::usage],MuonGFactor::usage = "MuonGFactor is the muon g-factor."];

(* Proton *)

If[Not@ValueQ[ProtonComptonWavelength::usage],ProtonComptonWavelength::usage =
"ProtonComptonWavelength the proton Compton wavelength, given by \
PlanckConstant/(ProtonMass SpeedOfLight)."];
If[Not@ValueQ[ProtonMagneticMoment::usage],ProtonMagneticMoment::usage =
"ProtonMagneticMoment is the proton magnetic moment."]; (* scalar magnitude *)
If[Not@ValueQ[ProtonMass::usage],ProtonMass::usage = "ProtonMass is the mass of a proton."];

(* Neutron *)

If[Not@ValueQ[NeutronComptonWavelength::usage],NeutronComptonWavelength::usage =
"NeutronComptonWavelength the neutron Compton wavelength, given by \
PlanckConstant/(NeutronMass SpeedOfLight)."];
If[Not@ValueQ[NeutronMagneticMoment::usage],NeutronMagneticMoment::usage =
"NeutronMagneticMoment is the neutron magnetic moment."]; (* scalar magnitude *)
If[Not@ValueQ[NeutronMass::usage],NeutronMass::usage = "NeutronMass is the mass of a neutron."];

(* Deuteron *)

If[Not@ValueQ[DeuteronMass::usage],DeuteronMass::usage = "DeuteronMass is the mass of a neutron."];
If[Not@ValueQ[DeuteronMagneticMoment::usage],DeuteronMagneticMoment::usage =
"DeuteronMagneticMoment is the deuteron magnetic moment."];

(* Electroweak *)
If[Not@ValueQ[WeakMixingAngle::usage],WeakMixingAngle::usage = "WeakMixingAngle is a physical constant."];

(* ==================== PHYSICO-CHEMICAL CONSTANTS ==================== *)

If[Not@ValueQ[AvogadroConstant::usage],AvogadroConstant::usage =
"AvogadroConstant is the number of molecules in one mole or gram molecular \
weight of a substance."];
If[Not@ValueQ[FaradayConstant::usage],FaradayConstant::usage =
"FaradayConstant is the product of the Avogadro constant (AvogadroConstant) \
and the elementary charge (ElectronCharge)."];
If[Not@ValueQ[MolarGasConstant::usage],MolarGasConstant::usage =
"MolarGasConstant is a physico-chemical constant."];
If[Not@ValueQ[BoltzmannConstant::usage],BoltzmannConstant::usage =
"BoltzmannConstant is the ratio of the universal gas constant \
(MolarGasConstant) to Avogadro's number (AvogadroConstant)."];
If[Not@ValueQ[MolarVolume::usage],MolarVolume::usage =
"MolarVolume is the volume occupied by a mole or a gram molecular weight of any \
gas measured at standard conditions."];
If[Not@ValueQ[SackurTetrodeConstant::usage],SackurTetrodeConstant::usage =
"SackurTetrodeConstant (absolute entropy constant), is a physico-chemical \
constant."];
If[Not@ValueQ[StefanConstant::usage],StefanConstant::usage =
"StefanConstant is the Stefan-Boltzmann constant, a universal constant of \
proportionality between the radiant emittance of a black body and the \
fourth power of the body's absolute temperature."];

(* ======================== ASTRONOMICAL CONSTANTS ===================== *)

If[Not@ValueQ[AgeOfUniverse::usage],AgeOfUniverse::usage = "AgeOfUniverse is the age of the Universe, a physical \
constant."];
If[Not@ValueQ[CosmicBackgroundTemperature::usage],CosmicBackgroundTemperature::usage=
"CosmicBackgroundTemperature is the temperature of the cosmic background \
radiation."];
If[Not@ValueQ[EarthMass::usage],EarthMass::usage = "EarthMass is the mass of the Earth, a physical constant."];
If[Not@ValueQ[EarthRadius::usage],EarthRadius::usage = "EarthRadius is the radius of the Earth, a physical \
constant."];
If[Not@ValueQ[HubbleConstant::usage],HubbleConstant::usage = "HubbleConstant is a measure of the rate at which the \
expansion of the universe varies with distance."];
If[Not@ValueQ[SolarRadius::usage],SolarRadius::usage = "SolarRadius is a physical constant."];
If[Not@ValueQ[SolarSchwarzschildRadius::usage],SolarSchwarzschildRadius::usage =
"SolarSchwarzschildRadius is a physical constant."];
If[Not@ValueQ[SolarConstant::usage],SolarConstant::usage =
"SolarConstant is the rate at which solar radiation is received outside the \
earth's atmosphere on a surface normal to the incident radiation and at the \
earth's mean distance from the sun, integrated across all wavelengths. Also \
known as total solar irradiance."];
If[Not@ValueQ[GalacticUnit::usage],GalacticUnit::usage =
"GalacticUnit is the approximate distance of the Sun from the center of the Milky Way \
Galaxy."];
If[Not@ValueQ[SolarLuminosity::usage],SolarLuminosity::usage = "SolarLuminosity is a physical constant."];



(* ========================== OTHER CONSTANTS ========================== *)

If[Not@ValueQ[SpeedOfSound::usage],SpeedOfSound::usage =
"SpeedOfSound is the speed of sound at sea level in the standard atmosphere."];
If[Not@ValueQ[IcePoint::usage],IcePoint::usage =
"IcePoint is the temperature at which a mixture of air-saturated pure \
water and pure ice may exist in equilibrium at a pressure of one \
standard atmosphere."];


(* JGM Added *)
If[Not@ValueQ[UniversalMassDensityPerExpansion::usage],UniversalMassDensityPerExpansion::usage =
" \[DoubleStruckCapitalR] UniversalMassDensityPerExpansion is a New Constant UnitMassDensity/UniversalExpansion."];
If[Not@ValueQ[InverseFineStructureConstant::usage],InverseFineStructureConstant::usage =
"InverseFineStructureConstant is the inverse of the fine structure constant, a universal constant."];
If[Not@ValueQ[FreeSpaceImpedance::usage],FreeSpaceImpedance::usage =
"FreeSpaceImpedance is the impedance of the vacuum, a universal constant."];

If[Not@ValueQ[ElectronMagneticMomentAnomaly::usage],ElectronMagneticMomentAnomaly::usage =
"ElectronMagneticMomentAnomaly is the anomalous magnetic moment of the electron, a universal constant."];
If[Not@ValueQ[ElementaryCharge::usage],ElementaryChargee::usage =
"ElementaryChargee is the electron charge, a universal constant."];

If[Not@ValueQ[ProtonElectronMassRatio::usage],ProtonElectronMassRatio::usage =
"ProtonElectronMassRatio is the ratio of the proton mass to that of the electron, a universal constant."];
If[Not@ValueQ[PionMass::usage],PionMass::usage =
"PionMass is the mass of the pion, a universal constant."];
If[Not@ValueQ[Pion0Mass::usage],Pion0Mass::usage =
"Pion0Mass is the mass of the pion0, a universal constant."];

If[Not@ValueQ[MuonMagneticMomentAnomaly::usage],MuonMagneticMomentAnomaly::usage =
"MuonMagneticMomentAnomaly is the anomalous magnetic moment of the muon, a universal constant."];
If[Not@ValueQ[MuonLife::usage],MuonLife::usage =
"MuonLife is the life time of the muon, a universal constant."];
If[Not@ValueQ[TauLife::usage],TauLife::usage =
"TauLife is the life time of the tau, a universal constant."];

If[Not@ValueQ[WeakBosonMass::usage],WeakBosonMass::usage =
"WeakBosonMass is the Weak Boson Mass, a universal constant."];
If[Not@ValueQ[ZBosonMass::usage],ZBosonMass::usage =
"ZBosonMass is the ZBoson Mass, a universal constant."];
If[Not@ValueQ[HiggsMass::usage],HiggsMass::usage =
"HiggsMass is the Higgs Mass, a universal constant."];
If[Not@ValueQ[TopMass::usage],TopMass::usage =
"TopMass is the Top Quark Mass, a universal constant."];

If[Not@ValueQ[FermiConstant::usage],FermiConstant::usage =
"FermiConstant is related to muon lifetime and mass, a universal constant."];
If[Not@ValueQ[WeakMixingRatio::usage],WeakMixingRatio::usage =
"WeakMixingRatio is the Weak Mixing Ratio, a universal constant."];
If[Not@ValueQ[StrongCouplingConstant::usage],StrongCouplingConstant::usage =
"StrongCouplingConstant is the Strong Coupling Constant, a universal constant."];
If[Not@ValueQ[VectorAxialCouplingConstant::usage],VectorAxialCouplingConstant::usage =
"VectorAxialCouplingConstant is the Vector-Axial Coupling Constant, a universal constant."];

If[Not@ValueQ[CosmicMicrowaveBackgroundRadiationTemperature::usage],CosmicMicrowaveBackgroundRadiationTemperature::usage =
"CosmicMicrowaveBackgroundRadiationTemperature is the Cosmic Microwave Background Radiation Temperature, a universal constant."];

If[Not@ValueQ[CoulombConstant::usage],CoulombConstant::usage =
"CoulombConstant is the inverse of 4pi vacuum permittivity, a universal constant."];
If[Not@ValueQ[PlanckLengthe::usage],PlanckLength::usage =
"PlanckLength is the Planck Unit of Length, a universal constant."];
If[Not@ValueQ[PlanckTime::usage],PlanckTime::usage =
"PlanckTime is the Planck Unit of Time, a universal constant."];
If[Not@ValueQ[ProtonCharge::usage],ProtonCharge::usage =
"ProtonCharge is the charge of the proton, a universal constant."];

If[Not@ValueQ[ElectronRestEnergy::usage],ElectronRestEnergy::usage =
"ElectronRestEnergy is the rest energy of the electron, a universal constant."];
If[Not@ValueQ[InverseRydbergConstant::usage],InverseRydbergConstant::usage =
"InverseRydbergConstant is the inverse of the Rydberg constant, a universal constant."];
If[Not@ValueQ[JosephsonConstant::usage],JosephsonConstant::usage =
"JosephsonConstant is twice the electron charge over Planck, a universal constant."];
If[Not@ValueQ[HartreeEnergy::usage],HartreeEnergy::usage =
"HartreeEnergy is 2 PlanckConstant SpeedOfLight RydbergConstant, a universal constant."];
If[Not@ValueQ[QuantizedHallResistance::usage],QuantizedHallResistance::usage =
"QuantizedHallResistance is PlanckConstant/ElectronCharge^2, a universal constant."];
If[Not@ValueQ[ThetaW::usage],ThetaW::usage =
"ThetaW is the weak mixing angle, a universal constant."];

If[Not@ValueQ[AstronomicalUnit::usage],AstronomicalUnit::usage =
"AstronomicalUnit is the distance between the earth and sun."];
If[Not@ValueQ[SiderealYear::usage],SiderealYear::usage =
"SiderealYear is the AstronomicalUnit Time for earth rotation around the sun."];

If[Not@ValueQ[CabibboAngle::usage],CabibboAngle::usage =
"CabibboAngle is lambda in the Wolfenstein parameterization of the CKM matrix, it is the mixing angle (theta12) of the quarks, a universal constant."];
If[Not@ValueQ[CKMscale::usage],CKMscale::usage =
"CKMscale is the amplitude in the Wolfenstein parameterization of the CKM matrix."];
If[Not@ValueQ[CKMphase::usage],CKMphase::usage =
"CKMphase is the CP-violating phase angle value (delta) in the Wolfenstein parameterization of the CKM matrix."];
If[Not@ValueQ[CKMrho::usage],CKMrho::usage =
"CKMrho is the Real part Cos[theta13] value (rho) in the Wolfenstein parameterization of the CKM matrix."];
If[Not@ValueQ[CKMeta::usage],CKMeta::usage =
"CKMeta is the Imaginary part Sin[theta13] value (rho) in the Wolfenstein parameterization of the CKM matrix."];
If[Not@ValueQ[CKMangles::usage],CKMangles::usage =
"CKMangles are the CKM matrix angle values theta{12,13,23}."];
If[Not@ValueQ[CKMvalues::usage],CKMvalues::usage =
"CKMvalues are the 3x3 CKM matrix values."];

Begin["`Private`"]

(* ================= DEFINED FUNDAMENTAL CONSTANTS ========================== *)

(* A "Second" is defined as the time it takes to count 9,192,631,770 hyperfine ground state cesium-133 cycles *)
SpeedOfLight = 299792458 Meter/Second (* Exact, defines a Meter=1/299,792,458 Seconds of light travel length *)
(* VacuumPermeability = 4Pi 10^-7 Henry/Meter Exact, defines the Ampere, which gives the defintion of Charge *)
VacuumPermeability = 4 Pi 10^-7 Kilogram Meter/Coulomb^2

AvogadroConstant = 84446886^3/Mole  (* N_A is defined exact which defines the Mole, 
							and gives the proposed definition for (Kilo)Gram, 
							divisible by 12 for a Mole of Carbon-12 *)

(* ================= MEASURED FUNDAMENTAL CONSTANTS ========================== *)

GravitationalConstant = 6.67408*^-11 Meter^3/Second^2/Kilogram (* CODATA 2014 *)
HubbleConstant = 2.18*^-18/Second (* Planck 67 km/s per Mpc *)

RydbergConstant = 10973731.568508/Meter (* CODATA 2014 *)

InverseFineStructureConstant = 137.035999139 (* CODATA 2014 *)

ElectronMagneticMomentAnomaly = 1.15965218091*^-3 (* CODATA 2014 *)
				(* theoretically dependant only on FineStructureConstant *)
ElementaryCharge = 1.6021766208*^-19 Coulomb (* CODATA 2014 *)

ProtonElectronMassRatio = 1836.15267389 (* CODATA 2014 *)
MuonMass = 1.883531475*^-28 Kilogram  (* CODATA 2014: 105.6583715(35) MeV *)
PionMass = 2.4880617*^-28 Kilogram (* 139.57018(35) MeV *)
Pion0Mass = 2.40617386*^-28 Kilogram (* 134.9766(6) MeV *)
NeutronMass = 1.674927351*^-27 Kilogram  (* CODATA 2014: 939.565360(81) MeV*)
DeuteronMass = 3.34358348*^-27 Kilogram  (* CODATA 2014: 1.87561458(57) GeV*)

MuonMagneticMomentAnomaly = 1.16592091*^-3 (* CODATA 2014 *)
ProtonMagneticMoment = 1.410606743*^-26 Joule/Tesla (* CODATA 2014 *)
NeutronMagneticMoment = \[Minus]0.96623647*^-26 Joule/Tesla (* CODATA 2014 *)
DeuteronMagneticMoment = 0.433073489*^-26 Joule/Tesla  (* CODATA 2014 *)

MuonLife = 2.19703*^-6 Second
TauLife = 290*^-15 Second

CabibboAngle = 0.2257 (* lambda=Sin[s12] *)
CKMscale = .814 (* Amplitude factor A *)
CKMphase = 1.2 (* delta (CP=T) phase radians *)
CKMrho = .135 (* Cos[s13] Real phase Rho *)
CKMeta = .349 (* Sin[s13] Imaginary phase Eta *)
CKMangles = {13.04,0.201,2.38} (* Unitary triangle in degrees: gamma(s12), beta(s13), alpha(s23) *)
CKMvalues = {{0.9743, 0.2253, 0.0035}, {-0.2252, 0.9744, 0.0412}, {0.0087, -0.0404, 0.9991}} (* CKM matrix *)

WeakBosonMass = 1.43299*^-25 Kilogram (* 80.425(38) GeV, 80.217 GeV *)
ZBosonMass = 1.62556*^-25 Kilogram (* 91.1876(21) GeV, 91.1559 GeV *)
HiggsMass = 2.233*^-25 Kilogram (* LHC 125.3(1) GeV *)
TopMass = 3.07295*^-25 Kilogram (* 2014 CMS average 172.38 +/- .66 GeV *)
FermiConstant = 3.670262*^48/Kilogram^2 (* 1.166364(5) 10^-5 GeV^-2, (292.808005 GeV)^-2 *)
WeakMixingRatio = 0.22255    (* CODATA 2014: Sin[ThetaW]^2,  MSbar @ M(Z) scheme @ 0.23122(15) *)
StrongCouplingConstant = 0.1177 (* MSbar @ M(Z)= 91GeV, .1213 pdg *)
VectorAxialCouplingConstant = 9.93*^-63 Kilogram Meter^5/Second^2 (* 6.2*^-44 (Mev/c^2) cm^5/Second^2 *)

(* ============== SELECTED ANTHROPOCENTRIC CONSTANTS ============= *)

CosmicMicrowaveBackgroundRadiationTemperature = 2.72528 Kelvin (* WMAP 160.4 GHz *)

BoltzmannConstant = 1.3806488*^-23 Kilogram Meter^2/Second^2/Kelvin (* CODATA 2014 *)

SackurTetrodeConstant = -1.1648677 (* CODATA 2014 @ 101.325 kPa, used for Molar Volume *)
IcePoint = 273.15 Kelvin (* F-88 CRC Hdbk Chem & Phys, 68th Ed. *)
MolarVolume = 22.710953*^-3 Meter^3/Mole (* ideal gas, T = 273.15 K, P = 101.325 kPa : CODATA 2014 *)

SpeedOfSound = 340.29205 Meter/Second  (* standard atmosphere *)

AccelerationDueToGravity = 9.80665 Meter/Second^2 (* exact: HCAP 80, p. 1-6
									 GravitationalConstant EarthMass/EarthRadius^2 *)
EarthRadius = 6378140 Meter   (* equatorial radius: HCAP 80, p. 14-1.
                                 The IUGG value for this is 6378136 m. *)

GalacticUnit = 2.6*^20 Meter (* approximate value, 8.5 kPsc, derived from
                                 various atronomy texts; actual distance
                                 believed to vary from 8.4 to 9.7 kPsc *)

SolarConstant = 1.3661*^3 Watt/Meter^2 
    (* used in draft ISO standard DIS 21348, see "Status of ISO
       Draft International Standard for Determiing Solar Irradiances
       (DIS 21348)", Tobiska, W. Kent; Nusinov, Anatoliy A.,
       J. Adv. Space Research, in press. Note that this is not in
       fact a constant, but variabe over time, with a cycle imposed
       by the solar cycle. *)
SolarLuminosity = 3.84*^26 Watt  (* computed by definition from
      the SolarConstant, verified by literature citations. Definition
      is 4 Pi (1 AU)^2 * SolarConstant, given 1 AU in meters. *)
SolarRadius = 6.9599*^8 Meter  (* HCAP 80, p. 14-2 *)
AstronomicalUnit = 149597870691 Meter
SiderealYear = 31558196.0131 Second

(* ============== DERIVED CONSTANTS ========================== *)

UniversalMassDensityPerExpansion = MassUnit TimeUnit/LengthUnit^3
AgeOfUniverse = 2/(3 HubbleConstant)
FineStructureConstant = 1/InverseFineStructureConstant

VacuumPermittivity = SpeedOfLight^-2/VacuumPermeability (* Exact, by definition for Meter & Second *)
CoulombConstant = 1/(4Pi VacuumPermittivity)
FreeSpaceImpedance = Sqrt[VacuumPermeability/VacuumPermittivity]

ElectronCharge = ElementaryCharge 
PlanckConstant = ((FreeSpaceImpedance ElementaryCharge^2/FineStructureConstant/2/((Kilogram Meter^2/Second)^(1/2))^2)^2)^(1/2)Kilogram Meter^2/Second
ElectronMass = 2 PlanckConstant RydbergConstant/(SpeedOfLight FineStructureConstant^2) 
ProtonMass = ProtonElectronMassRatio ElectronMass

PlanckConstantReduced = PlanckConstant /(2Pi)
PlanckMass = Sqrt[PlanckConstantReduced SpeedOfLight/GravitationalConstant]
PlanckLength = Sqrt[PlanckConstantReduced GravitationalConstant/SpeedOfLight^3]
PlanckTime = Sqrt[PlanckConstantReduced GravitationalConstant/SpeedOfLight^5]

ProtonCharge = -ElectronCharge

StefanConstant = ((2Pi)^2/(2 5!)) BoltzmannConstant^4/(PlanckConstantReduced^3 SpeedOfLight^2) 
ElectronRestEnergy = ElectronMass SpeedOfLight^2

ElectronComptonWavelength = PlanckConstant/(SpeedOfLight ElectronMass)
ProtonComptonWavelength = PlanckConstant/(SpeedOfLight ProtonMass)
NeutronComptonWavelength = PlanckConstant/(SpeedOfLight NeutronMass)

BohrRadius = ElectronComptonWavelength/(2Pi FineStructureConstant)
InverseRydbergConstant = 1/RydbergConstant (* 4Pi BohrRadius/FineStructureConstant *)
ClassicalElectronRadius = BohrRadius FineStructureConstant^2 
ThomsonCrossSection = (8Pi/3) ClassicalElectronRadius^2

BohrMagneton = ElectronCharge PlanckConstantReduced/(2 ElectronMass)
ElectronMagneticMoment = BohrMagneton (1+ElectronMagneticMomentAnomaly)
ElectronGFactor = 2(1+ElectronMagneticMomentAnomaly)
MuonMagneticMoment = BohrMagneton (1+MuonMagneticMomentAnomaly)
MuonGFactor = 2(1+MuonMagneticMomentAnomaly)
NuclearMagneton = ElectronCharge PlanckConstantReduced/(2 ProtonMass)

JosephsonConstant = 2 ElectronCharge/PlanckConstant
MagneticFluxQuantum = 1/JosephsonConstant
HartreeEnergy = 2 PlanckConstant SpeedOfLight RydbergConstant
QuantizedHallResistance = PlanckConstant/ElectronCharge^2
QuantizedHallConductance = 1/QuantizedHallResistance
FaradayConstant = AvogadroConstant ElectronCharge

ThetaW = ArcSin[Sqrt[WeakMixingRatio]]
WeakMixingAngle = ThetaW

CosmicBackgroundTemperature = CosmicMicrowaveBackgroundRadiationTemperature

MolarGasConstant = AvogadroConstant BoltzmannConstant

EarthMass = AccelerationDueToGravity EarthRadius^2/GravitationalConstant (* HCAP 80, p. 14-3, 5.9742*^24 Kilogram *)
SolarMass = (2Pi/SiderealYear)^2 AstronomicalUnit^3/GravitationalConstant
SolarSchwarzschildRadius = 2 GravitationalConstant SolarMass/SpeedOfLight^2

End[]

EndPackage[]
