-- | 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.Concepts.Thermodynamics as CT (boilPt, heatCapSpec,
  htFlux, latentHeat, meltPt, sensHeat, temp)
import Data.Drasil.SI_Units (centigrade, joule)
import Data.Drasil.Units.Thermodynamics as UT (heatCapSpec, thermalFlux)

-- * With Units

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

boilPt :: UnitalChunk
boilPt        = ConceptChunk -> Symbol -> Space -> UnitDefn -> UnitalChunk
forall c u.
(Concept c, IsUnit u) =>
c -> Symbol -> Space -> u -> UnitalChunk
uc ConceptChunk
CT.boilPt      (Symbol -> Symbol -> Symbol
sub Symbol
cT (String -> Symbol
label String
"boil")) Space
Real UnitDefn
centigrade
temp :: UnitalChunk
temp          = ConceptChunk -> Symbol -> Space -> UnitDefn -> UnitalChunk
forall c u.
(Concept c, IsUnit u) =>
c -> Symbol -> Space -> u -> UnitalChunk
uc ConceptChunk
CT.temp        Symbol
cT                      Space
Real UnitDefn
centigrade
heatCapSpec :: UnitalChunk
heatCapSpec   = ConceptChunk -> Symbol -> Space -> UnitDefn -> UnitalChunk
forall c u.
(Concept c, IsUnit u) =>
c -> Symbol -> Space -> u -> UnitalChunk
uc ConceptChunk
CT.heatCapSpec Symbol
cC                      Space
Real UnitDefn
UT.heatCapSpec
htFlux :: UnitalChunk
htFlux        = ConceptChunk -> Symbol -> Space -> UnitDefn -> UnitalChunk
forall c u.
(Concept c, IsUnit u) =>
c -> Symbol -> Space -> u -> UnitalChunk
uc ConceptChunk
CT.htFlux      Symbol
lQ                      Space
Real UnitDefn
UT.thermalFlux
latentHeat :: UnitalChunk
latentHeat    = ConceptChunk -> Symbol -> Space -> UnitDefn -> UnitalChunk
forall c u.
(Concept c, IsUnit u) =>
c -> Symbol -> Space -> u -> UnitalChunk
uc ConceptChunk
CT.latentHeat  Symbol
cQ                      Space
Real UnitDefn
joule
meltPt :: UnitalChunk
meltPt        = ConceptChunk -> Symbol -> Space -> UnitDefn -> UnitalChunk
forall c u.
(Concept c, IsUnit u) =>
c -> Symbol -> Space -> u -> UnitalChunk
uc ConceptChunk
CT.meltPt      (Symbol -> Symbol -> Symbol
sub Symbol
cT (String -> Symbol
label String
"melt")) Space
Real UnitDefn
centigrade
sensHeat :: UnitalChunk
sensHeat      = ConceptChunk -> Symbol -> Space -> UnitDefn -> UnitalChunk
forall c u.
(Concept c, IsUnit u) =>
c -> Symbol -> Space -> u -> UnitalChunk
uc ConceptChunk
CT.sensHeat    Symbol
cE                      Space
Real UnitDefn
joule