Copyright | Copyright (C) 2006-2015 Bjorn Buckwalter |
---|---|
License | BSD3 |
Maintainer | bjorn@buckwalter.se |
Stability | Stable |
Portability | GHC only |
Safe Haskell | None |
Language | Haskell2010 |
Extensions | DataKinds |
Summary
This module defines type synonyms for common dimensionalities and the associated quantity types. Additional dimensionalities and quantity types will be added on an as-needed basis.
The definitions in this module are grouped so that a type synonym for the dimensionality is defined first in terms of base dimension exponents. Then a type synonym for the corresponding quantity type is defined. If there are several quantity types with the same dimensionality type synonyms are provided for each quantity type.
References
- type Area = Quantity DArea
- type Volume = Quantity DVolume
- type Velocity = Quantity DVelocity
- type Acceleration = Quantity DAcceleration
- type WaveNumber = Quantity DWaveNumber
- type MassDensity = Quantity DMassDensity
- type Density = MassDensity
- type SpecificVolume = Quantity DSpecificVolume
- type CurrentDensity = Quantity DCurrentDensity
- type MagneticFieldStrength = Quantity DMagneticFieldStrength
- type AmountOfSubstanceConcentration = Quantity DAmountOfSubstanceConcentration
- type Concentration = AmountOfSubstanceConcentration
- type Luminance = Quantity DLuminance
- type PlaneAngle = Dimensionless
- type SolidAngle = Dimensionless
- type Frequency = Quantity DFrequency
- type Force = Quantity DForce
- type Pressure = Quantity DPressure
- type Stress = Quantity DStress
- type Energy = Quantity DEnergy
- type Work = Quantity DWork
- type QuantityOfHeat = Quantity DQuantityOfHeat
- type Power = Quantity DPower
- type RadiantFlux = Quantity DRadiantFlux
- type ElectricCharge = Quantity DElectricCharge
- type QuantityOfElectricity = Quantity DQuantityOfElectricity
- type ElectricPotential = Quantity DElectricPotential
- type PotentialDifference = Quantity DPotentialDifference
- type ElectromotiveForce = Quantity DElectromotiveForce
- type Capacitance = Quantity DCapacitance
- type ElectricResistance = Quantity DElectricResistance
- type ElectricConductance = Quantity DElectricConductance
- type MagneticFlux = Quantity DMagneticFlux
- type MagneticFluxDensity = Quantity DMagneticFluxDensity
- type Inductance = Quantity DInductance
- type LuminousFlux = Quantity DLuminousFlux
- type Illuminance = Quantity DIlluminance
- type CelsiusTemperature = Quantity DCelsiusTemperature
- type Activity = Quantity DActivity
- type AbsorbedDose = Quantity DAbsorbedDose
- type SpecificEnergy = Quantity DSpecificEnergy
- type Kerma = Quantity DKerma
- type DoseEquivalent = Quantity DDoseEquivalent
- type AmbientDoseEquivalent = DoseEquivalent
- type DirectionalDoseEquivalent = DoseEquivalent
- type PersonalDoseEquivalent = DoseEquivalent
- type EquivalentDose = DoseEquivalent
- type CatalyticActivity = Quantity DCatalyticActivity
- type AngularVelocity = Quantity DAngularVelocity
- type AngularAcceleration = Quantity DAngularAcceleration
- type DynamicViscosity = Quantity DDynamicViscosity
- type MomentOfForce = Quantity DMomentOfForce
- type SurfaceTension = Quantity DSurfaceTension
- type HeatFluxDensity = Quantity DHeatFluxDensity
- type Irradiance = Quantity DIrradiance
- type RadiantIntensity = Quantity DRadiantIntensity
- type Radiance = Quantity DRadiance
- type HeatCapacity = Quantity DHeatCapacity
- type Entropy = Quantity DEntropy
- type SpecificHeatCapacity = Quantity DSpecificHeatCapacity
- type SpecificEntropy = Quantity DSpecificEntropy
- type ThermalConductivity = Quantity DThermalConductivity
- type EnergyDensity = Quantity DEnergyDensity
- type ElectricFieldStrength = Quantity DElectricFieldStrength
- type ElectricChargeDensity = Quantity DElectricChargeDensity
- type ElectricFluxDensity = Quantity DElectricFluxDensity
- type Permittivity = Quantity DPermittivity
- type Permeability = Quantity DPermeability
- type MolarEnergy = Quantity DMolarEnergy
- type MolarEntropy = Quantity DMolarEntropy
- type MolarHeatCapacity = Quantity DMolarHeatCapacity
- type Exposure = Quantity DExposure
- type AbsorbedDoseRate = Quantity DAbsorbedDoseRate
- type Impulse = Quantity DImpulse
- type Momentum = Quantity DMomentum
- type MassFlow = Quantity DMassFlow
- type VolumeFlow = Quantity DVolumeFlow
- type GravitationalParameter = Quantity DGravitationalParameter
- type KinematicViscosity = Quantity DKinematicViscosity
- type FirstMassMoment = Quantity DFirstMassMoment
- type MomentOfInertia = Quantity DMomentOfInertia
- type AngularMomentum = Quantity DAngularMomentum
- type ThermalResistivity = Quantity DThermalResistivity
- type ThermalConductance = Quantity DThermalConductance
- type ThermalResistance = Quantity DThermalResistance
- type HeatTransferCoefficient = Quantity DHeatTransferCoefficient
- type ThermalAdmittance = HeatTransferCoefficient
- type ThermalInsulance = Quantity DThermalInsulance
- type Jerk = Quantity DJerk
- type Angle = PlaneAngle
- type Thrust = Force
- type Torque = MomentOfForce
- type EnergyPerUnitMass = SpecificEnergy
- square :: (Fractional a, Typeable m) => Unit m DLength a -> Unit NonMetric DArea a
- cubic :: (Fractional a, Typeable m) => Unit m DLength a -> Unit NonMetric DVolume a
- type DArea = Dim Pos2 Zero Zero Zero Zero Zero Zero
- type DVolume = Dim Pos3 Zero Zero Zero Zero Zero Zero
- type DVelocity = Dim Pos1 Zero Neg1 Zero Zero Zero Zero
- type DAcceleration = Dim Pos1 Zero Neg2 Zero Zero Zero Zero
- type DWaveNumber = Dim Neg1 Zero Zero Zero Zero Zero Zero
- type DMassDensity = Dim Neg3 Pos1 Zero Zero Zero Zero Zero
- type DDensity = DMassDensity
- type DSpecificVolume = Dim Pos3 Neg1 Zero Zero Zero Zero Zero
- type DCurrentDensity = Dim Neg2 Zero Zero Pos1 Zero Zero Zero
- type DMagneticFieldStrength = Dim Neg1 Zero Zero Pos1 Zero Zero Zero
- type DAmountOfSubstanceConcentration = Dim Neg3 Zero Zero Zero Zero Pos1 Zero
- type DConcentration = DAmountOfSubstanceConcentration
- type DLuminance = Dim Neg2 Zero Zero Zero Zero Zero Pos1
- type DPlaneAngle = DOne
- type DSolidAngle = DOne
- type DFrequency = Dim Zero Zero Neg1 Zero Zero Zero Zero
- type DForce = Dim Pos1 Pos1 Neg2 Zero Zero Zero Zero
- type DPressure = Dim Neg1 Pos1 Neg2 Zero Zero Zero Zero
- type DStress = DPressure
- type DEnergy = Dim Pos2 Pos1 Neg2 Zero Zero Zero Zero
- type DWork = DEnergy
- type DQuantityOfHeat = DEnergy
- type DPower = Dim Pos2 Pos1 Neg3 Zero Zero Zero Zero
- type DRadiantFlux = DPower
- type DElectricCharge = Dim Zero Zero Pos1 Pos1 Zero Zero Zero
- type DQuantityOfElectricity = DElectricCharge
- type DElectricPotential = Dim Pos2 Pos1 Neg3 Neg1 Zero Zero Zero
- type DPotentialDifference = DElectricPotential
- type DElectromotiveForce = DElectricPotential
- type DCapacitance = Dim Neg2 Neg1 Pos4 Pos2 Zero Zero Zero
- type DElectricResistance = Dim Pos2 Pos1 Neg3 Neg2 Zero Zero Zero
- type DElectricConductance = Dim Neg2 Neg1 Pos3 Pos2 Zero Zero Zero
- type DMagneticFlux = Dim Pos2 Pos1 Neg2 Neg1 Zero Zero Zero
- type DMagneticFluxDensity = Dim Zero Pos1 Neg2 Neg1 Zero Zero Zero
- type DInductance = Dim Pos2 Pos1 Neg2 Neg2 Zero Zero Zero
- type DLuminousFlux = DLuminousIntensity
- type DIlluminance = Dim Neg2 Zero Zero Zero Zero Zero Pos1
- type DCelsiusTemperature = DThermodynamicTemperature
- type DActivity = DFrequency
- type DAbsorbedDose = Dim Pos2 Zero Neg2 Zero Zero Zero Zero
- type DSpecificEnergy = DAbsorbedDose
- type DKerma = DAbsorbedDose
- type DDoseEquivalent = DAbsorbedDose
- type DAmbientDoseEquivalent = DDoseEquivalent
- type DDirectionalDoseEquivalent = DDoseEquivalent
- type DPersonalDoseEquivalent = DDoseEquivalent
- type DEquivalentDose = DDoseEquivalent
- type DCatalyticActivity = Dim Zero Zero Neg1 Zero Zero Pos1 Zero
- type DAngularVelocity = DFrequency
- type DAngularAcceleration = Dim Zero Zero Neg2 Zero Zero Zero Zero
- type DDynamicViscosity = Dim Neg1 Pos1 Neg1 Zero Zero Zero Zero
- type DMomentOfForce = DEnergy
- type DSurfaceTension = Dim Zero Pos1 Neg2 Zero Zero Zero Zero
- type DHeatFluxDensity = Dim Zero Pos1 Neg3 Zero Zero Zero Zero
- type DIrradiance = DHeatFluxDensity
- type DRadiantIntensity = DPower
- type DRadiance = DIrradiance
- type DHeatCapacity = Dim Pos2 Pos1 Neg2 Zero Neg1 Zero Zero
- type DEntropy = DHeatCapacity
- type DSpecificHeatCapacity = Dim Pos2 Zero Neg2 Zero Neg1 Zero Zero
- type DSpecificEntropy = DSpecificHeatCapacity
- type DThermalConductivity = Dim Pos1 Pos1 Neg3 Zero Neg1 Zero Zero
- type DEnergyDensity = DPressure
- type DElectricFieldStrength = Dim Pos1 Pos1 Neg3 Neg1 Zero Zero Zero
- type DElectricChargeDensity = Dim Neg3 Zero Pos1 Pos1 Zero Zero Zero
- type DElectricFluxDensity = Dim Neg2 Zero Pos1 Pos1 Zero Zero Zero
- type DPermittivity = Dim Neg3 Neg1 Pos4 Pos2 Zero Zero Zero
- type DPermeability = Dim Pos1 Pos1 Neg2 Neg2 Zero Zero Zero
- type DMolarEnergy = Dim Pos2 Pos1 Neg2 Zero Zero Neg1 Zero
- type DMolarEntropy = Dim Pos2 Pos1 Neg2 Zero Neg1 Neg1 Zero
- type DMolarHeatCapacity = DMolarEntropy
- type DExposure = Dim Zero Neg1 Pos1 Pos1 Zero Zero Zero
- type DAbsorbedDoseRate = Dim Pos2 Zero Neg3 Zero Zero Zero Zero
- type DImpulse = Dim Pos1 Pos1 Neg1 Zero Zero Zero Zero
- type DMomentum = DImpulse
- type DMassFlow = Dim Zero Pos1 Neg1 Zero Zero Zero Zero
- type DVolumeFlow = Dim Pos3 Zero Neg1 Zero Zero Zero Zero
- type DGravitationalParameter = Dim Pos3 Zero Neg2 Zero Zero Zero Zero
- type DKinematicViscosity = Dim Pos2 Zero Neg1 Zero Zero Zero Zero
- type DFirstMassMoment = Dim Pos1 Pos1 Zero Zero Zero Zero Zero
- type DMomentOfInertia = Dim Pos2 Pos1 Zero Zero Zero Zero Zero
- type DAngularMomentum = Dim Pos2 Pos1 Neg1 Zero Zero Zero Zero
- type DThermalResistivity = Dim Neg1 Neg1 Pos3 Zero Pos1 Zero Zero
- type DThermalConductance = Dim Pos2 Pos1 Neg3 Zero Neg1 Zero Zero
- type DThermalResistance = Dim Neg2 Neg1 Pos3 Zero Pos1 Zero Zero
- type DHeatTransferCoefficient = Dim Zero Pos1 Neg3 Zero Neg1 Zero Zero
- type DThermalAdmittance = DHeatTransferCoefficient
- type DThermalInsulance = Dim Zero Neg1 Pos3 Zero Pos1 Zero Zero
- type DJerk = Dim Pos1 Zero Neg3 Zero Zero Zero Zero
- type DAngle = DPlaneAngle
- type DThrust = DForce
- type DTorque = DMomentOfForce
- type DEnergyPerUnitMass = DSpecificEnergy
Quantities from the NIST Guide
The following quantities are all from the NIST publication "Guide for the Use of the International System of Units (SI)" [1]. Any chapters, sections or tables referenced are from [1] unless otherwise specified.
For lack of better organization we provide definitions grouped by table in [1].
Table 2
"Examples of SI derived units expressed in terms of SI base units."
type Acceleration = Quantity DAcceleration Source
type WaveNumber = Quantity DWaveNumber Source
type MassDensity = Quantity DMassDensity Source
type Density = MassDensity Source
type Luminance = Quantity DLuminance Source
Table 3
SI coherent derived units with special names and symbols.
type PlaneAngle = Dimensionless Source
type SolidAngle = Dimensionless Source
type Frequency = Quantity DFrequency Source
type RadiantFlux = Quantity DRadiantFlux Source
type Capacitance = Quantity DCapacitance Source
type MagneticFlux = Quantity DMagneticFlux Source
type Inductance = Quantity DInductance Source
type LuminousFlux = Quantity DLuminousFlux Source
type Illuminance = Quantity DIlluminance Source
type AbsorbedDose = Quantity DAbsorbedDose Source
type EquivalentDose = DoseEquivalent Source
Table 4
"Examples of SI coherent derived units expressed with the aid of SI derived units having special names and symbols."
We use the same grouping as for table 2.
type Irradiance = Quantity DIrradiance Source
type HeatCapacity = Quantity DHeatCapacity Source
type Permittivity = Quantity DPermittivity Source
type Permeability = Quantity DPermeability Source
type MolarEnergy = Quantity DMolarEnergy Source
type MolarEntropy = Quantity DMolarEntropy Source
Quantities not from the NIST Guide
Here we define additional quantities on an as-needed basis. We also provide some synonyms that we anticipate will be useful.
type VolumeFlow = Quantity DVolumeFlow Source
type Angle = PlaneAngle Source
type Torque = MomentOfForce Source
Powers of Unit Lengths
It is permissible to express powers of length units by prefixing
square
and cubic
(see section 9.6 "Spelling unit names raised
to powers" of [1]).
These definitions may seem slightly out of place but these is no
obvious place where they should be. Here they are at least close
to the definitions of DLength
and DVolume
.
square :: (Fractional a, Typeable m) => Unit m DLength a -> Unit NonMetric DArea a Source
Constructs a unit of area from a unit of length, taking the area of a square whose sides are that length.
cubic :: (Fractional a, Typeable m) => Unit m DLength a -> Unit NonMetric DVolume a Source
Constructs a unit of volume from a unit of length, taking the volume of a cube whose sides are that length.
Dimension Aliases
For each Quantity
alias supplied above, we also supply a corresponding Dimension
alias.
These dimension aliases may be convenient for supplying type signatures for Unit
s or for other type-level dimensional programming.
type DDensity = DMassDensity Source
type DPlaneAngle = DOne Source
type DSolidAngle = DOne Source
type DQuantityOfHeat = DEnergy Source
type DRadiantFlux = DPower Source
type DActivity = DFrequency Source
type DSpecificEnergy = DAbsorbedDose Source
type DKerma = DAbsorbedDose Source
type DDoseEquivalent = DAbsorbedDose Source
type DEquivalentDose = DDoseEquivalent Source
type DAngularVelocity = DFrequency Source
type DMomentOfForce = DEnergy Source
type DIrradiance = DHeatFluxDensity Source
type DRadiantIntensity = DPower Source
type DRadiance = DIrradiance Source
type DEntropy = DHeatCapacity Source
type DEnergyDensity = DPressure Source
type DAngle = DPlaneAngle Source
type DTorque = DMomentOfForce Source