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