-- | Assigns symbols and units (quantities) to thermodynamics-related concepts.
module Data.Drasil.Quantities.Thermodynamics where

import Language.Drasil
import Language.Drasil.ShortHands (cT, cC, lQ, cQ, cE)

import Data.Drasil.SI_Units (centigrade, joule)
import qualified Data.Drasil.Concepts.Thermodynamics as CT (boilPt, heatCapSpec,
  htFlux, latentHeat, meltPt, sensHeat, temp)
import qualified Data.Drasil.Units.Thermodynamics as UT (heatCapSpec, thermalFlux)

-- * With Units

thermoquants :: [DefinedQuantityDict]
thermoquants :: [DefinedQuantityDict]
thermoquants = [DefinedQuantityDict
boilPt, DefinedQuantityDict
temp, DefinedQuantityDict
heatCapSpec, DefinedQuantityDict
htFlux, DefinedQuantityDict
latentHeat, DefinedQuantityDict
meltPt, DefinedQuantityDict
sensHeat]

boilPt, temp, heatCapSpec, htFlux, latentHeat, meltPt, sensHeat :: DefinedQuantityDict

boilPt :: DefinedQuantityDict
boilPt        = ConceptChunk -> Symbol -> Space -> UnitDefn -> DefinedQuantityDict
dqd ConceptChunk
CT.boilPt      (Symbol -> Symbol -> Symbol
sub Symbol
cT (String -> Symbol
label String
"boil")) Space
Real UnitDefn
centigrade
temp :: DefinedQuantityDict
temp          = ConceptChunk -> Symbol -> Space -> UnitDefn -> DefinedQuantityDict
dqd ConceptChunk
CT.temp        Symbol
cT                      Space
Real UnitDefn
centigrade
heatCapSpec :: DefinedQuantityDict
heatCapSpec   = ConceptChunk -> Symbol -> Space -> UnitDefn -> DefinedQuantityDict
dqd ConceptChunk
CT.heatCapSpec Symbol
cC                      Space
Real UnitDefn
UT.heatCapSpec
htFlux :: DefinedQuantityDict
htFlux        = ConceptChunk -> Symbol -> Space -> UnitDefn -> DefinedQuantityDict
dqd ConceptChunk
CT.htFlux      Symbol
lQ                      Space
Real UnitDefn
UT.thermalFlux
latentHeat :: DefinedQuantityDict
latentHeat    = ConceptChunk -> Symbol -> Space -> UnitDefn -> DefinedQuantityDict
dqd ConceptChunk
CT.latentHeat  Symbol
cQ                      Space
Real UnitDefn
joule
meltPt :: DefinedQuantityDict
meltPt        = ConceptChunk -> Symbol -> Space -> UnitDefn -> DefinedQuantityDict
dqd ConceptChunk
CT.meltPt      (Symbol -> Symbol -> Symbol
sub Symbol
cT (String -> Symbol
label String
"melt")) Space
Real UnitDefn
centigrade
sensHeat :: DefinedQuantityDict
sensHeat      = ConceptChunk -> Symbol -> Space -> UnitDefn -> DefinedQuantityDict
dqd ConceptChunk
CT.sensHeat    Symbol
cE                      Space
Real UnitDefn
joule