packages feed

dimensional-codata (empty) → 2014.0.0.0

raw patch · 6 files changed

+207/−0 lines, 6 filesdep +basedep +dimensionaldep +numtype-dksetup-changed

Dependencies added: base, dimensional, numtype-dk

Files

+ CHANGELOG.md view
@@ -0,0 +1,3 @@+2014.0.0.0
+----------
+* Initial release with CODATA 2014 files.
+ LICENSE view
@@ -0,0 +1,30 @@+Copyright (c) 2015, Douglas McClean
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+
+    * Neither the name of Douglas McClean nor the names of other
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ README.md view
@@ -0,0 +1,12 @@+# dimensional-codata
+CODATA recommended values of fundamental physical constants, 
+for use with the [dimensional](https://github.com/bjornbm/dimensional) library.
+
+This module offers a selection of fundamental physical constants with their values as defined or measured
+and published by the 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.
+
+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 [the GitHub repository](https://github.com/dmcclean/dimensional-codata).
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple
+main = defaultMain
+ dimensional-codata.cabal view
@@ -0,0 +1,39 @@+-- Initial dimensional-codata.cabal generated by cabal init.  For further 
+-- documentation, see http://haskell.org/cabal/users-guide/
+
+name:                dimensional-codata
+version:             2014.0.0.0
+synopsis:            CODATA Recommended Physical Constants with Dimensional Types
+homepage:            https://github.com/dmcclean/dimensional-codata
+license:             BSD3
+license-file:        LICENSE
+author:              Douglas McClean
+maintainer:          douglas.mcclean@gmail.com
+-- copyright:           
+category:            Physics
+build-type:          Simple
+cabal-version:       >=1.10
+tested-with:         GHC == 7.8.4, GHC == 7.10.1, GHC == 7.10.2
+
+description:
+
+    The dimensional-codata package provides a selection of the CODATA recommended values for fundamental
+    physical constants for use with the dimensional library for physical quantities and units.
+
+    Major version numbers represent the date of issue of the recommended values.
+
+extra-source-files:  README.md,
+                     CHANGELOG.md
+
+source-repository head
+  type:     git
+  location: https://github.com/dmcclean/dimensional-codata/
+
+library
+  build-depends:       base >=4.7 && <4.9,
+                       dimensional >= 1.0,
+                       numtype-dk >= 0.5 && < 1
+  hs-source-dirs:      src
+  ghc-options:         -Wall
+  default-language:    Haskell2010
+  exposed-modules:     Numeric.Units.Dimensional.Codata
+ src/Numeric/Units/Dimensional/Codata.hs view
@@ -0,0 +1,121 @@+{-# 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 = 1.660539040e-27 *~ kilo gram
+
+-- | The number of consitutent particles that are contained in the 'AmountOfSubstance'
+-- given by one 'mole'.
+avogadroConstant :: (Fractional a) => Quantity (Recip DAmountOfSubstance) a
+avogadroConstant = 6.022140857e23 *~ mole^neg1
+
+boltzmannConstant :: (Fractional a) => Entropy a
+boltzmannConstant = 1.38064852e-23 *~ (joule / kelvin)
+
+conductanceQuantum :: (Fractional a) => ElectricConductance a
+conductanceQuantum = 7.7480917310e-5 *~ 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 = _1 / (magneticConstant * speedOfLightInVacuum^pos2)
+
+-- | The rest 'Mass' of an electron.
+electronMass :: (Fractional a) => Mass a
+electronMass = 9.10938356e-31 *~ kilo 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 = 1.6021766208e-19 *~ 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 = 1.6021766208e-19 *~ coulomb
+
+-- | The magnitude of 'ElectricCharge' per 'mole' of electrons.
+faradayConstant :: (Fractional a) => Quantity (DElectricCharge / DAmountOfSubstance) a
+faradayConstant = 96485.33289 *~ (coulomb / mole)
+
+fineStructureConstant :: (Fractional a) => Dimensionless a
+fineStructureConstant = 7.2973525664e-3 *~ 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 = pi * (4e-7 *~ (newton * ampere^neg2))
+
+magneticFluxQuantum :: (Fractional a) => MagneticFlux a
+magneticFluxQuantum = 2.067833831e-15 *~ weber
+
+molarGasConstant :: (Fractional a) => MolarHeatCapacity a
+molarGasConstant = 8.3144598 *~ (joule / (mole * 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 = 6.67408e-11 *~ (newton * (meter / kilo gram)^pos2)
+
+planckConstant :: (Fractional a) => Quantity ('Dim 'Pos2 'Pos1 'Neg1 'Zero 'Zero 'Zero 'Zero) a -- Alias this dimension as DAction? Seems rarely used?
+planckConstant = 6.626070040e-34 *~ (joule * second)
+
+-- | The rest 'Mass' of an proton.
+protonMass :: (Fractional a) => Mass a
+protonMass = 1.672621898e-27 *~ kilo gram
+
+rydbergConstant :: (Fractional a) => WaveNumber a
+rydbergConstant = 10973731.568508 *~ meter^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 = 299792458 *~ (meter / 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 = 9.80665 *~ (meter / second^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 = 5.670367e-8 *~ (watt * meter^neg2 * kelvin^neg4)