{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE NoMonomorphismRestriction #-}

{- |
   Copyright  : Copyright (C) 2015 Douglas McClean
   License    : BSD3

   Maintainer : douglas.mcclean@gmail.com
   Stability  : Stable

= Summary

This module offers a selection of fundamental physical constants with their values as defined or measured
and published by the <http://www.codata.org/ Committee on Data for Science and Technology> of the International Council for Science.

These values are from the 2014 CODATA recommended values, by way of NIST<#note1 [1]>.

The original document offers many, many more constants than are provided here. An effort has been made to narrow it
down to the most useful ones. If your work requires others or if you have another contribution or suggestion, please
submit issues or pull requests to <https://github.com/dmcclean/dimensional-codata the GitHub repository>.

= References

1. #note1# http://physics.nist.gov/cuu/Constants/index.html

-}
module Numeric.Units.Dimensional.Codata

where

import Prelude hiding ((*), (/), (^), pi)
import Numeric.Units.Dimensional
import Numeric.Units.Dimensional.Quantities
import Numeric.Units.Dimensional.SIUnits
import Numeric.NumType.DK.Integers (TypeInt(..),neg4,neg2,neg1,pos2)

-- | One twelfth of the 'Mass' of an unbound atom of carbon-12 at rest and in its ground state.
atomicMassConstant :: (Fractional a) => Mass a
atomicMassConstant :: Mass a
atomicMassConstant = a
1.660539040e-27 a -> Unit 'NonMetric DMass a -> Mass a
forall a (m :: Metricality) (d :: Dimension).
Num a =>
a -> Unit m d a -> Quantity d a
*~ Unit 'Metric DMass a -> Unit 'NonMetric DMass a
forall a (d :: Dimension).
Num a =>
Unit 'Metric d a -> Unit 'NonMetric d a
kilo Unit 'Metric DMass a
forall a. Fractional a => Unit 'Metric DMass a
gram

-- | The number of consitutent particles that are contained in the 'AmountOfSubstance'
-- given by one 'mole'.
avogadroConstant :: (Fractional a) => Quantity (Recip DAmountOfSubstance) a
avogadroConstant :: Quantity (Recip DAmountOfSubstance) a
avogadroConstant = a
6.022140857e23 a
-> Unit
     'NonMetric ('Dim 'Zero 'Zero 'Zero 'Zero 'Zero 'Neg1 'Zero) a
-> Quantity ('Dim 'Zero 'Zero 'Zero 'Zero 'Zero 'Neg1 'Zero) a
forall a (m :: Metricality) (d :: Dimension).
Num a =>
a -> Unit m d a -> Quantity d a
*~ Unit 'Metric DAmountOfSubstance a
forall a. Num a => Unit 'Metric DAmountOfSubstance a
moleUnit 'Metric DAmountOfSubstance a
-> Proxy 'Neg1
-> Dimensional
     (Weaken ('DUnit 'Metric)) (DAmountOfSubstance ^ 'Neg1) a
forall a (i :: TypeInt) (v :: Variant) (d1 :: Dimension).
(Fractional a, KnownTypeInt i, KnownVariant v,
 KnownVariant (Weaken v)) =>
Dimensional v d1 a -> Proxy i -> Dimensional (Weaken v) (d1 ^ i) a
^Proxy 'Neg1
neg1

boltzmannConstant :: (Fractional a) => Entropy a
boltzmannConstant :: Entropy a
boltzmannConstant = a
1.38064852e-23 a -> Unit 'NonMetric DEntropy a -> Entropy a
forall a (m :: Metricality) (d :: Dimension).
Num a =>
a -> Unit m d a -> Quantity d a
*~ (Unit 'Metric DEnergy a
forall a. Num a => Unit 'Metric DEnergy a
joule Unit 'Metric DEnergy a
-> Dimensional ('DUnit 'Metric) DThermodynamicTemperature a
-> Dimensional
     ('DUnit 'Metric / 'DUnit 'Metric)
     (DEnergy / DThermodynamicTemperature)
     a
forall (v1 :: Variant) (v2 :: Variant) a (d1 :: Dimension)
       (d2 :: Dimension).
(KnownVariant v1, KnownVariant v2, KnownVariant (v1 / v2),
 Fractional a) =>
Dimensional v1 d1 a
-> Dimensional v2 d2 a -> Dimensional (v1 / v2) (d1 / d2) a
/ Dimensional ('DUnit 'Metric) DThermodynamicTemperature a
forall a. Num a => Unit 'Metric DThermodynamicTemperature a
kelvin)

conductanceQuantum :: (Fractional a) => ElectricConductance a
conductanceQuantum :: ElectricConductance a
conductanceQuantum = a
7.7480917310e-5 a -> Unit 'Metric DElectricConductance a -> ElectricConductance a
forall a (m :: Metricality) (d :: Dimension).
Num a =>
a -> Unit m d a -> Quantity d a
*~ Unit 'Metric DElectricConductance a
forall a. Num a => Unit 'Metric DElectricConductance a
siemens

-- | The electric constant, also commonly called the vacuum permittivity or permittivity of free space, is an ideal physical constant,
-- which is the value of the absolute dielectric permittivity of classical vacuum. It is the capability of the vacuum to permit electric
-- field lines. This constant relates the units for electric charge to mechanical quantities such as length and force.
--
-- The value given here is exact if you use exact arithmetic.
electricConstant :: (Floating a) => Permittivity a
electricConstant :: Permittivity a
electricConstant = Dimensionless a
forall a. Num a => Dimensionless a
_1 Dimensionless a
-> Dimensional
     ('DQuantity ('ExactPi' 'Zero 1 1))
     ('Dim 'Pos3 'Pos1 'Neg4 'Neg2 'Zero 'Zero 'Zero)
     a
-> Dimensional
     ('DQuantity ('ExactPi' 'Zero 1 1)
      / 'DQuantity ('ExactPi' 'Zero 1 1))
     (DOne / 'Dim 'Pos3 'Pos1 'Neg4 'Neg2 'Zero 'Zero 'Zero)
     a
forall (v1 :: Variant) (v2 :: Variant) a (d1 :: Dimension)
       (d2 :: Dimension).
(KnownVariant v1, KnownVariant v2, KnownVariant (v1 / v2),
 Fractional a) =>
Dimensional v1 d1 a
-> Dimensional v2 d2 a -> Dimensional (v1 / v2) (d1 / d2) a
/ (Permeability a
forall a. Floating a => Permeability a
magneticConstant Permeability a
-> Dimensional
     ('DQuantity ('ExactPi' 'Zero 1 1))
     ('Dim 'Pos2 'Zero 'Neg2 'Zero 'Zero 'Zero 'Zero)
     a
-> Dimensional
     ('DQuantity ('ExactPi' 'Zero 1 1)
      * 'DQuantity ('ExactPi' 'Zero 1 1))
     (DPermeability * 'Dim 'Pos2 'Zero 'Neg2 'Zero 'Zero 'Zero 'Zero)
     a
forall (v1 :: Variant) (v2 :: Variant) a (d1 :: Dimension)
       (d2 :: Dimension).
(KnownVariant v1, KnownVariant v2, KnownVariant (v1 * v2),
 Num a) =>
Dimensional v1 d1 a
-> Dimensional v2 d2 a -> Dimensional (v1 * v2) (d1 * d2) a
* Velocity a
forall a. Fractional a => Velocity a
speedOfLightInVacuumVelocity a
-> Proxy 'Pos2
-> Dimensional
     (Weaken ('DQuantity ('ExactPi' 'Zero 1 1))) (DVelocity ^ 'Pos2) a
forall a (i :: TypeInt) (v :: Variant) (d1 :: Dimension).
(Fractional a, KnownTypeInt i, KnownVariant v,
 KnownVariant (Weaken v)) =>
Dimensional v d1 a -> Proxy i -> Dimensional (Weaken v) (d1 ^ i) a
^Proxy 'Pos2
pos2)

-- | The rest 'Mass' of an electron.
electronMass :: (Fractional a) => Mass a
electronMass :: Mass a
electronMass = a
9.10938356e-31 a -> Unit 'NonMetric DMass a -> Mass a
forall a (m :: Metricality) (d :: Dimension).
Num a =>
a -> Unit m d a -> Quantity d a
*~ Unit 'Metric DMass a -> Unit 'NonMetric DMass a
forall a (d :: Dimension).
Num a =>
Unit 'Metric d a -> Unit 'NonMetric d a
kilo Unit 'Metric DMass a
forall a. Fractional a => Unit 'Metric DMass a
gram

-- | The amount of 'Energy' gained (or lost) by the charge of a single electron moved across an electric 'PotentialDifference' of one 'volt'.
electronVolt :: (Fractional a) => Energy a
electronVolt :: Energy a
electronVolt = a
1.6021766208e-19 a -> Unit 'Metric DEnergy a -> Energy a
forall a (m :: Metricality) (d :: Dimension).
Num a =>
a -> Unit m d a -> Quantity d a
*~ Unit 'Metric DEnergy a
forall a. Num a => Unit 'Metric DEnergy a
joule

-- | The 'ElectricCharge' carried by a single proton, or equivalently, the negation of the electric charge carried by a single electron
elementaryCharge :: (Fractional a) => ElectricCharge a
elementaryCharge :: ElectricCharge a
elementaryCharge = a
1.6021766208e-19 a -> Unit 'Metric DElectricCharge a -> ElectricCharge a
forall a (m :: Metricality) (d :: Dimension).
Num a =>
a -> Unit m d a -> Quantity d a
*~ Unit 'Metric DElectricCharge a
forall a. Num a => Unit 'Metric DElectricCharge a
coulomb

-- | The magnitude of 'ElectricCharge' per 'mole' of electrons.
faradayConstant :: (Fractional a) => Quantity (DElectricCharge / DAmountOfSubstance) a
faradayConstant :: Quantity (DElectricCharge / DAmountOfSubstance) a
faradayConstant = a
96485.33289 a
-> Unit
     'NonMetric ('Dim 'Zero 'Zero 'Pos1 'Pos1 'Zero 'Neg1 'Zero) a
-> Quantity ('Dim 'Zero 'Zero 'Pos1 'Pos1 'Zero 'Neg1 'Zero) a
forall a (m :: Metricality) (d :: Dimension).
Num a =>
a -> Unit m d a -> Quantity d a
*~ (Unit 'Metric DElectricCharge a
forall a. Num a => Unit 'Metric DElectricCharge a
coulomb Unit 'Metric DElectricCharge a
-> Dimensional ('DUnit 'Metric) DAmountOfSubstance a
-> Dimensional
     ('DUnit 'Metric / 'DUnit 'Metric)
     (DElectricCharge / DAmountOfSubstance)
     a
forall (v1 :: Variant) (v2 :: Variant) a (d1 :: Dimension)
       (d2 :: Dimension).
(KnownVariant v1, KnownVariant v2, KnownVariant (v1 / v2),
 Fractional a) =>
Dimensional v1 d1 a
-> Dimensional v2 d2 a -> Dimensional (v1 / v2) (d1 / d2) a
/ Dimensional ('DUnit 'Metric) DAmountOfSubstance a
forall a. Num a => Unit 'Metric DAmountOfSubstance a
mole)

fineStructureConstant :: (Fractional a) => Dimensionless a
fineStructureConstant :: Dimensionless a
fineStructureConstant = a
7.2973525664e-3 a -> Unit 'NonMetric DOne a -> Dimensionless a
forall a (m :: Metricality) (d :: Dimension).
Num a =>
a -> Unit m d a -> Quantity d a
*~ Unit 'NonMetric DOne a
forall a. Num a => Unit 'NonMetric DOne a
one

-- | The magnetic constant, also commonly called the vacuum permeability, permeability of free space, or permeability of vacuum is an ideal
-- physical constant, which is the value of magnetic permeability in a classical vacuum. Vacuum permeability is derived from production of
-- a magnetic field by an electric current or by a moving electric charge and in all other formulas for magnetic-field production in a vacuum.
-- In the reference medium of classical vacuum it has an exact value in the SI system of units.
--
-- The value given here is exact if you use exact arithmetic.
magneticConstant :: (Floating a) => Permeability a
magneticConstant :: Permeability a
magneticConstant = Dimensionless a
forall a. Floating a => Dimensionless a
pi Dimensionless a
-> Permeability a
-> Dimensional
     ('DQuantity ('ExactPi' 'Zero 1 1)
      * 'DQuantity ('ExactPi' 'Zero 1 1))
     (DOne * DPermeability)
     a
forall (v1 :: Variant) (v2 :: Variant) a (d1 :: Dimension)
       (d2 :: Dimension).
(KnownVariant v1, KnownVariant v2, KnownVariant (v1 * v2),
 Num a) =>
Dimensional v1 d1 a
-> Dimensional v2 d2 a -> Dimensional (v1 * v2) (d1 * d2) a
* (a
4e-7 a -> Unit 'NonMetric DPermeability a -> Permeability a
forall a (m :: Metricality) (d :: Dimension).
Num a =>
a -> Unit m d a -> Quantity d a
*~ (Unit 'Metric DForce a
forall a. Num a => Unit 'Metric DForce a
newton Unit 'Metric DForce a
-> Dimensional
     ('DUnit 'NonMetric)
     ('Dim 'Zero 'Zero 'Zero 'Neg2 'Zero 'Zero 'Zero)
     a
-> Dimensional
     ('DUnit 'Metric * 'DUnit 'NonMetric)
     (DForce * 'Dim 'Zero 'Zero 'Zero 'Neg2 'Zero 'Zero 'Zero)
     a
forall (v1 :: Variant) (v2 :: Variant) a (d1 :: Dimension)
       (d2 :: Dimension).
(KnownVariant v1, KnownVariant v2, KnownVariant (v1 * v2),
 Num a) =>
Dimensional v1 d1 a
-> Dimensional v2 d2 a -> Dimensional (v1 * v2) (d1 * d2) a
* Unit 'Metric DElectricCurrent a
forall a. Num a => Unit 'Metric DElectricCurrent a
ampereUnit 'Metric DElectricCurrent a
-> Proxy 'Neg2
-> Dimensional
     (Weaken ('DUnit 'Metric)) (DElectricCurrent ^ 'Neg2) a
forall a (i :: TypeInt) (v :: Variant) (d1 :: Dimension).
(Fractional a, KnownTypeInt i, KnownVariant v,
 KnownVariant (Weaken v)) =>
Dimensional v d1 a -> Proxy i -> Dimensional (Weaken v) (d1 ^ i) a
^Proxy 'Neg2
neg2))

magneticFluxQuantum :: (Fractional a) => MagneticFlux a
magneticFluxQuantum :: MagneticFlux a
magneticFluxQuantum = a
2.067833831e-15 a -> Unit 'Metric DMagneticFlux a -> MagneticFlux a
forall a (m :: Metricality) (d :: Dimension).
Num a =>
a -> Unit m d a -> Quantity d a
*~ Unit 'Metric DMagneticFlux a
forall a. Num a => Unit 'Metric DMagneticFlux a
weber

molarGasConstant :: (Fractional a) => MolarHeatCapacity a
molarGasConstant :: MolarHeatCapacity a
molarGasConstant = a
8.3144598 a -> Unit 'NonMetric DMolarHeatCapacity a -> MolarHeatCapacity a
forall a (m :: Metricality) (d :: Dimension).
Num a =>
a -> Unit m d a -> Quantity d a
*~ (Unit 'Metric DEnergy a
forall a. Num a => Unit 'Metric DEnergy a
joule Unit 'Metric DEnergy a
-> Dimensional
     ('DUnit 'NonMetric)
     ('Dim 'Zero 'Zero 'Zero 'Zero 'Pos1 'Pos1 'Zero)
     a
-> Dimensional
     ('DUnit 'Metric / 'DUnit 'NonMetric)
     (DEnergy / 'Dim 'Zero 'Zero 'Zero 'Zero 'Pos1 'Pos1 'Zero)
     a
forall (v1 :: Variant) (v2 :: Variant) a (d1 :: Dimension)
       (d2 :: Dimension).
(KnownVariant v1, KnownVariant v2, KnownVariant (v1 / v2),
 Fractional a) =>
Dimensional v1 d1 a
-> Dimensional v2 d2 a -> Dimensional (v1 / v2) (d1 / d2) a
/ (Unit 'Metric DAmountOfSubstance a
forall a. Num a => Unit 'Metric DAmountOfSubstance a
mole Unit 'Metric DAmountOfSubstance a
-> Dimensional ('DUnit 'Metric) DThermodynamicTemperature a
-> Dimensional
     ('DUnit 'Metric * 'DUnit 'Metric)
     (DAmountOfSubstance * DThermodynamicTemperature)
     a
forall (v1 :: Variant) (v2 :: Variant) a (d1 :: Dimension)
       (d2 :: Dimension).
(KnownVariant v1, KnownVariant v2, KnownVariant (v1 * v2),
 Num a) =>
Dimensional v1 d1 a
-> Dimensional v2 d2 a -> Dimensional (v1 * v2) (d1 * d2) a
* Dimensional ('DUnit 'Metric) DThermodynamicTemperature a
forall a. Num a => Unit 'Metric DThermodynamicTemperature a
kelvin))

-- | According to the Newtonian law of universal gravitation, the attractive force between two bodies is directly proportional to the product of their
-- 'Mass'es, and inversely proportional to the square of the 'Length' of the distance between them. The empirical constant of proportionality is the
-- Newtonian constant of gravitation.
newtonianConstantOfGravitation :: (Fractional a) => Quantity ('Dim 'Pos3 'Neg1 'Neg2 'Zero 'Zero 'Zero 'Zero) a -- Pretty sure this dimension doesn't have a useful name.
newtonianConstantOfGravitation :: Quantity ('Dim 'Pos3 'Neg1 'Neg2 'Zero 'Zero 'Zero 'Zero) a
newtonianConstantOfGravitation = a
6.67408e-11 a
-> Unit
     'NonMetric ('Dim 'Pos3 'Neg1 'Neg2 'Zero 'Zero 'Zero 'Zero) a
-> Quantity ('Dim 'Pos3 'Neg1 'Neg2 'Zero 'Zero 'Zero 'Zero) a
forall a (m :: Metricality) (d :: Dimension).
Num a =>
a -> Unit m d a -> Quantity d a
*~ (Unit 'Metric DForce a
forall a. Num a => Unit 'Metric DForce a
newton Unit 'Metric DForce a
-> Dimensional
     ('DUnit 'NonMetric)
     ('Dim 'Pos2 'Neg2 'Zero 'Zero 'Zero 'Zero 'Zero)
     a
-> Dimensional
     ('DUnit 'Metric * 'DUnit 'NonMetric)
     (DForce * 'Dim 'Pos2 'Neg2 'Zero 'Zero 'Zero 'Zero 'Zero)
     a
forall (v1 :: Variant) (v2 :: Variant) a (d1 :: Dimension)
       (d2 :: Dimension).
(KnownVariant v1, KnownVariant v2, KnownVariant (v1 * v2),
 Num a) =>
Dimensional v1 d1 a
-> Dimensional v2 d2 a -> Dimensional (v1 * v2) (d1 * d2) a
* (Unit 'Metric DLength a
forall a. Num a => Unit 'Metric DLength a
meter Unit 'Metric DLength a
-> Dimensional ('DUnit 'NonMetric) DMass a
-> Dimensional
     ('DUnit 'Metric / 'DUnit 'NonMetric) (DLength / DMass) a
forall (v1 :: Variant) (v2 :: Variant) a (d1 :: Dimension)
       (d2 :: Dimension).
(KnownVariant v1, KnownVariant v2, KnownVariant (v1 / v2),
 Fractional a) =>
Dimensional v1 d1 a
-> Dimensional v2 d2 a -> Dimensional (v1 / v2) (d1 / d2) a
/ Unit 'Metric DMass a -> Dimensional ('DUnit 'NonMetric) DMass a
forall a (d :: Dimension).
Num a =>
Unit 'Metric d a -> Unit 'NonMetric d a
kilo Unit 'Metric DMass a
forall a. Fractional a => Unit 'Metric DMass a
gram)Dimensional
  ('DUnit 'NonMetric)
  ('Dim 'Pos1 'Neg1 'Zero 'Zero 'Zero 'Zero 'Zero)
  a
-> Proxy 'Pos2
-> Dimensional
     (Weaken ('DUnit 'NonMetric))
     ('Dim 'Pos1 'Neg1 'Zero 'Zero 'Zero 'Zero 'Zero ^ 'Pos2)
     a
forall a (i :: TypeInt) (v :: Variant) (d1 :: Dimension).
(Fractional a, KnownTypeInt i, KnownVariant v,
 KnownVariant (Weaken v)) =>
Dimensional v d1 a -> Proxy i -> Dimensional (Weaken v) (d1 ^ i) a
^Proxy 'Pos2
pos2)

planckConstant :: (Fractional a) => Quantity ('Dim 'Pos2 'Pos1 'Neg1 'Zero 'Zero 'Zero 'Zero) a -- Alias this dimension as DAction? Seems rarely used?
planckConstant :: Quantity ('Dim 'Pos2 'Pos1 'Neg1 'Zero 'Zero 'Zero 'Zero) a
planckConstant = a
6.626070040e-34 a
-> Unit
     'NonMetric ('Dim 'Pos2 'Pos1 'Neg1 'Zero 'Zero 'Zero 'Zero) a
-> Quantity ('Dim 'Pos2 'Pos1 'Neg1 'Zero 'Zero 'Zero 'Zero) a
forall a (m :: Metricality) (d :: Dimension).
Num a =>
a -> Unit m d a -> Quantity d a
*~ (Unit 'Metric DEnergy a
forall a. Num a => Unit 'Metric DEnergy a
joule Unit 'Metric DEnergy a
-> Dimensional ('DUnit 'Metric) DTime a
-> Dimensional
     ('DUnit 'Metric * 'DUnit 'Metric) (DEnergy * DTime) a
forall (v1 :: Variant) (v2 :: Variant) a (d1 :: Dimension)
       (d2 :: Dimension).
(KnownVariant v1, KnownVariant v2, KnownVariant (v1 * v2),
 Num a) =>
Dimensional v1 d1 a
-> Dimensional v2 d2 a -> Dimensional (v1 * v2) (d1 * d2) a
* Dimensional ('DUnit 'Metric) DTime a
forall a. Num a => Unit 'Metric DTime a
second)

-- | The rest 'Mass' of an proton.
protonMass :: (Fractional a) => Mass a
protonMass :: Mass a
protonMass = a
1.672621898e-27 a -> Unit 'NonMetric DMass a -> Mass a
forall a (m :: Metricality) (d :: Dimension).
Num a =>
a -> Unit m d a -> Quantity d a
*~ Unit 'Metric DMass a -> Unit 'NonMetric DMass a
forall a (d :: Dimension).
Num a =>
Unit 'Metric d a -> Unit 'NonMetric d a
kilo Unit 'Metric DMass a
forall a. Fractional a => Unit 'Metric DMass a
gram

rydbergConstant :: (Fractional a) => WaveNumber a
rydbergConstant :: WaveNumber a
rydbergConstant = a
10973731.568508 a -> Unit 'NonMetric DWaveNumber a -> WaveNumber a
forall a (m :: Metricality) (d :: Dimension).
Num a =>
a -> Unit m d a -> Quantity d a
*~ Unit 'Metric DLength a
forall a. Num a => Unit 'Metric DLength a
meterUnit 'Metric DLength a
-> Proxy 'Neg1
-> Dimensional (Weaken ('DUnit 'Metric)) (DLength ^ 'Neg1) a
forall a (i :: TypeInt) (v :: Variant) (d1 :: Dimension).
(Fractional a, KnownTypeInt i, KnownVariant v,
 KnownVariant (Weaken v)) =>
Dimensional v d1 a -> Proxy i -> Dimensional (Weaken v) (d1 ^ i) a
^Proxy 'Neg1
neg1

-- | The speed of light in a vacuum is exact because it forms the basis of the definition of the 'meter'.
speedOfLightInVacuum :: (Fractional a) => Velocity a
speedOfLightInVacuum :: Velocity a
speedOfLightInVacuum = a
299792458 a -> Unit 'NonMetric DVelocity a -> Velocity a
forall a (m :: Metricality) (d :: Dimension).
Num a =>
a -> Unit m d a -> Quantity d a
*~ (Unit 'Metric DLength a
forall a. Num a => Unit 'Metric DLength a
meter Unit 'Metric DLength a
-> Dimensional ('DUnit 'Metric) DTime a
-> Dimensional
     ('DUnit 'Metric / 'DUnit 'Metric) (DLength / DTime) a
forall (v1 :: Variant) (v2 :: Variant) a (d1 :: Dimension)
       (d2 :: Dimension).
(KnownVariant v1, KnownVariant v2, KnownVariant (v1 / v2),
 Fractional a) =>
Dimensional v1 d1 a
-> Dimensional v2 d2 a -> Dimensional (v1 / v2) (d1 / d2) a
/ Dimensional ('DUnit 'Metric) DTime a
forall a. Num a => Unit 'Metric DTime a
second)

-- | The nominal gravitational 'Acceleration' of an object in a vacuum near the surface of the Earth, as defined by standard.
-- This value was established by the 3rd General Conference on Weights and Measures in 1901.
standardAccelerationOfGravity :: (Fractional a) => Acceleration a
standardAccelerationOfGravity :: Acceleration a
standardAccelerationOfGravity = a
9.80665 a -> Unit 'NonMetric DAcceleration a -> Acceleration a
forall a (m :: Metricality) (d :: Dimension).
Num a =>
a -> Unit m d a -> Quantity d a
*~ (Unit 'Metric DLength a
forall a. Num a => Unit 'Metric DLength a
meter Unit 'Metric DLength a
-> Dimensional
     ('DUnit 'NonMetric)
     ('Dim 'Zero 'Zero 'Pos2 'Zero 'Zero 'Zero 'Zero)
     a
-> Dimensional
     ('DUnit 'Metric / 'DUnit 'NonMetric)
     (DLength / 'Dim 'Zero 'Zero 'Pos2 'Zero 'Zero 'Zero 'Zero)
     a
forall (v1 :: Variant) (v2 :: Variant) a (d1 :: Dimension)
       (d2 :: Dimension).
(KnownVariant v1, KnownVariant v2, KnownVariant (v1 / v2),
 Fractional a) =>
Dimensional v1 d1 a
-> Dimensional v2 d2 a -> Dimensional (v1 / v2) (d1 / d2) a
/ Unit 'Metric DTime a
forall a. Num a => Unit 'Metric DTime a
secondUnit 'Metric DTime a
-> Proxy 'Pos2
-> Dimensional (Weaken ('DUnit 'Metric)) (DTime ^ 'Pos2) a
forall a (i :: TypeInt) (v :: Variant) (d1 :: Dimension).
(Fractional a, KnownTypeInt i, KnownVariant v,
 KnownVariant (Weaken v)) =>
Dimensional v d1 a -> Proxy i -> Dimensional (Weaken v) (d1 ^ i) a
^Proxy 'Pos2
pos2)

stefanBoltzmannConstant :: (Fractional a) => Quantity ('Dim 'Zero 'Pos1 'Neg3 'Zero 'Neg4 'Zero 'Zero) a -- Pretty sure this dimension doesn't have a useful name.
stefanBoltzmannConstant :: Quantity ('Dim 'Zero 'Pos1 'Neg3 'Zero 'Neg4 'Zero 'Zero) a
stefanBoltzmannConstant = a
5.670367e-8 a
-> Unit
     'NonMetric ('Dim 'Zero 'Pos1 'Neg3 'Zero 'Neg4 'Zero 'Zero) a
-> Quantity ('Dim 'Zero 'Pos1 'Neg3 'Zero 'Neg4 'Zero 'Zero) a
forall a (m :: Metricality) (d :: Dimension).
Num a =>
a -> Unit m d a -> Quantity d a
*~ (Unit 'Metric DPower a
forall a. Num a => Unit 'Metric DPower a
watt Unit 'Metric DPower a
-> Dimensional
     ('DUnit 'NonMetric)
     ('Dim 'Neg2 'Zero 'Zero 'Zero 'Zero 'Zero 'Zero)
     a
-> Dimensional
     ('DUnit 'Metric * 'DUnit 'NonMetric)
     (DPower * 'Dim 'Neg2 'Zero 'Zero 'Zero 'Zero 'Zero 'Zero)
     a
forall (v1 :: Variant) (v2 :: Variant) a (d1 :: Dimension)
       (d2 :: Dimension).
(KnownVariant v1, KnownVariant v2, KnownVariant (v1 * v2),
 Num a) =>
Dimensional v1 d1 a
-> Dimensional v2 d2 a -> Dimensional (v1 * v2) (d1 * d2) a
* Unit 'Metric DLength a
forall a. Num a => Unit 'Metric DLength a
meterUnit 'Metric DLength a
-> Proxy 'Neg2
-> Dimensional (Weaken ('DUnit 'Metric)) (DLength ^ 'Neg2) a
forall a (i :: TypeInt) (v :: Variant) (d1 :: Dimension).
(Fractional a, KnownTypeInt i, KnownVariant v,
 KnownVariant (Weaken v)) =>
Dimensional v d1 a -> Proxy i -> Dimensional (Weaken v) (d1 ^ i) a
^Proxy 'Neg2
neg2 Dimensional
  ('DUnit 'NonMetric)
  ('Dim 'Zero 'Pos1 'Neg3 'Zero 'Zero 'Zero 'Zero)
  a
-> Dimensional
     ('DUnit 'NonMetric)
     ('Dim 'Zero 'Zero 'Zero 'Zero 'Neg4 'Zero 'Zero)
     a
-> Dimensional
     ('DUnit 'NonMetric * 'DUnit 'NonMetric)
     ('Dim 'Zero 'Pos1 'Neg3 'Zero 'Zero 'Zero 'Zero
      * 'Dim 'Zero 'Zero 'Zero 'Zero 'Neg4 'Zero 'Zero)
     a
forall (v1 :: Variant) (v2 :: Variant) a (d1 :: Dimension)
       (d2 :: Dimension).
(KnownVariant v1, KnownVariant v2, KnownVariant (v1 * v2),
 Num a) =>
Dimensional v1 d1 a
-> Dimensional v2 d2 a -> Dimensional (v1 * v2) (d1 * d2) a
* Unit 'Metric DThermodynamicTemperature a
forall a. Num a => Unit 'Metric DThermodynamicTemperature a
kelvinUnit 'Metric DThermodynamicTemperature a
-> Proxy 'Neg4
-> Dimensional
     (Weaken ('DUnit 'Metric)) (DThermodynamicTemperature ^ 'Neg4) a
forall a (i :: TypeInt) (v :: Variant) (d1 :: Dimension).
(Fractional a, KnownTypeInt i, KnownVariant v,
 KnownVariant (Weaken v)) =>
Dimensional v d1 a -> Proxy i -> Dimensional (Weaken v) (d1 ^ i) a
^Proxy 'Neg4
neg4)