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

import Language.Drasil
import Language.Drasil.ShortHands (cE, cS, cP, cK, lSigma, lNu)

import Data.Drasil.Concepts.SolidMechanics as CSM (elastMod, mobShear, nrmStrss,
    poissnsR, shearRes, stffness)
import Data.Drasil.SI_Units (newton, pascal)
import Data.Drasil.Units.SolidMechanics (stiffnessU)

-- * With Units

elastMod, mobShear, nrmStrss, shearRes, stffness :: UnitalChunk

elastMod :: UnitalChunk
elastMod = ConceptChunk -> Symbol -> Space -> UnitDefn -> UnitalChunk
forall c u.
(Concept c, IsUnit u) =>
c -> Symbol -> Space -> u -> UnitalChunk
uc ConceptChunk
CSM.elastMod Symbol
cE     Space
Real UnitDefn
pascal 
mobShear :: UnitalChunk
mobShear = ConceptChunk -> Symbol -> Space -> UnitDefn -> UnitalChunk
forall c u.
(Concept c, IsUnit u) =>
c -> Symbol -> Space -> u -> UnitalChunk
uc ConceptChunk
CSM.mobShear Symbol
cS     Space
Real UnitDefn
newton 
shearRes :: UnitalChunk
shearRes = ConceptChunk -> Symbol -> Space -> UnitDefn -> UnitalChunk
forall c u.
(Concept c, IsUnit u) =>
c -> Symbol -> Space -> u -> UnitalChunk
uc ConceptChunk
CSM.shearRes Symbol
cP     Space
Real UnitDefn
newton 
stffness :: UnitalChunk
stffness = ConceptChunk -> Symbol -> Space -> UnitDefn -> UnitalChunk
forall c u.
(Concept c, IsUnit u) =>
c -> Symbol -> Space -> u -> UnitalChunk
uc ConceptChunk
CSM.stffness Symbol
cK     Space
Real UnitDefn
stiffnessU 
nrmStrss :: UnitalChunk
nrmStrss = ConceptChunk -> Symbol -> Space -> UnitDefn -> UnitalChunk
forall c u.
(Concept c, IsUnit u) =>
c -> Symbol -> Space -> u -> UnitalChunk
uc ConceptChunk
CSM.nrmStrss Symbol
lSigma Space
Real UnitDefn
pascal

-- * Without Units

poissnsR :: DefinedQuantityDict
poissnsR :: DefinedQuantityDict
poissnsR = ConceptChunk -> Symbol -> Space -> DefinedQuantityDict
dqdNoUnit ConceptChunk
CSM.poissnsR Symbol
lNu Space
Real