{-# LANGUAGE TemplateHaskell, TypeFamilies, TypeOperators #-} ----------------------------------------------------------------------------- -- | -- Module : Data.Units.Astronomical -- Copyright : (C) 2013 Richard Eisenberg -- License : BSD-style (see LICENSE) -- Maintainer : Richard Eisenberg (rae@cs.brynmawr.edu) -- Stability : experimental -- Portability : non-portable -- -- The system of astronomical units, as defined by the International -- Astronomical Union in 1976 and since then updated a few times. -- -- The IAU documents used as reference are as follows: -- -- -- -- ----------------------------------------------------------------------------- module Data.Units.Astronomical ( -- * Lengths AstronomicalUnit(..), LightYear(..), Parsec(..), -- * Time Day(..), JulianYear(..), JulianCentury(..), -- * Mass SolarMass(..), JovianMass(..), EarthMass(..) ) where import Data.Constants.Math import Data.Metrology.TH import Data.Metrology import Data.Units.SI import Data.Units.SI.Prefixes declareDerivedUnit "Day" [t| Second |] 86400 (Just "D") declareDerivedUnit "JulianCentury" [t| Day |] 36525 (Just "julian century") declareDerivedUnit "JulianYear" [t| JulianCentury |] 0.01 (Just "a") declareDerivedUnit "AstronomicalUnit" [t| Metre |] 149597870700 (Just "au") declareDerivedUnit "LightYear" [t| Metre |] 9460730472580800 (Just "ly") declareDerivedUnit "Parsec" [t| AstronomicalUnit |] (648000 / piR) (Just "pc") declareDerivedUnit "SolarMass" [t| Kilo :@ Gram |] (1.9891 * 10 ^ (30 :: Int)) (Just "S") declareDerivedUnit "EarthMass" [t| SolarMass |] (1 / 332946.0487) (Just "E") declareDerivedUnit "JovianMass" [t| SolarMass |] (1 / 1047.348644) (Just "MJ")