-- | Defines concepts used in the field of solid mechanics.
module Data.Drasil.Concepts.SolidMechanics where

import Language.Drasil
import Data.Drasil.Concepts.Physics (force, strain, stress)

--FIXME: add "shear stress" and "shear strain" when we have adjectives
--       to make a combined "mobilized shear force" for example
-- | Collects all solid mechanics-related concepts.
solidcon :: [ConceptChunk]
solidcon :: [ConceptChunk]
solidcon = [ConceptChunk
elastMod, ConceptChunk
mobShear, ConceptChunk
normForce, ConceptChunk
nrmStrss, ConceptChunk
poissnsR, ConceptChunk
shearForce,
  ConceptChunk
shearRes, ConceptChunk
stffness]

elastMod, mobShear, normForce, nrmStrss, poissnsR, shearForce,
  shearRes, stffness :: ConceptChunk

elastMod :: ConceptChunk
elastMod   = String -> NP -> Sentence -> ConceptChunk
dccWDS "elastMod" (String -> NP
cn "elastic modulus") 
  (String -> Sentence
S "the ratio of the" Sentence -> Sentence -> Sentence
+:+ ConceptChunk -> Sentence
forall n. (HasUID n, NamedIdea n) => n -> Sentence
phrase ConceptChunk
stress Sentence -> Sentence -> Sentence
+:+ 
  String -> Sentence
S "exerted on a body to the resulting" Sentence -> Sentence -> Sentence
+:+ ConceptChunk -> Sentence
forall n. (HasUID n, NamedIdea n) => n -> Sentence
phrase ConceptChunk
strain)

mobShear :: ConceptChunk
mobShear   = String -> NP -> Sentence -> ConceptChunk
dccWDS "mobShear" (String -> NP
cn "mobilized shear force") 
  (String -> Sentence
S "the" Sentence -> Sentence -> Sentence
+:+ ConceptChunk -> Sentence
forall n. (HasUID n, NamedIdea n) => n -> Sentence
phrase ConceptChunk
shearForce Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S "in the direction of potential motion" Sentence -> Sentence -> Sentence
`sC`
  String -> Sentence
S "thus encouraging motion along the plane")

normForce :: ConceptChunk
normForce  = String -> NP -> Sentence -> ConceptChunk
dccWDS "normForce" (String -> NP
cn' "normal force")
  (String -> Sentence
S "a" Sentence -> Sentence -> Sentence
+:+ ConceptChunk -> Sentence
forall n. (HasUID n, NamedIdea n) => n -> Sentence
phrase ConceptChunk
force Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S "applied perpendicular to the plane of the material")
  
nrmStrss :: ConceptChunk
nrmStrss   = String -> NP -> Sentence -> ConceptChunk
dccWDS "nrmStrss" (String -> NP
cn "normal stress") 
  (String -> Sentence
S "the" Sentence -> Sentence -> Sentence
+:+ ConceptChunk -> Sentence
forall n. (HasUID n, NamedIdea n) => n -> Sentence
phrase ConceptChunk
stress Sentence -> Sentence -> Sentence
+:+  String -> Sentence
S "exerted perpendicular to the plane of the object")
  
poissnsR :: ConceptChunk
poissnsR   = String -> NP -> Sentence -> ConceptChunk
dccWDS "poissnsR" (String -> NP
nounPhraseSP "Poisson's ratio") 
  (String -> Sentence
S "the ratio of perpendicular" Sentence -> Sentence -> Sentence
+:+ ConceptChunk -> Sentence
forall n. (HasUID n, NamedIdea n) => n -> Sentence
phrase ConceptChunk
strain Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S "to parallel" Sentence -> Sentence -> Sentence
+:+ ConceptChunk -> Sentence
forall n. (HasUID n, NamedIdea n) => n -> Sentence
phrase ConceptChunk
strain)
  
shearRes :: ConceptChunk
shearRes   = String -> NP -> Sentence -> ConceptChunk
dccWDS "shearRes" (String -> NP
cn "resistive shear force") 
  (String -> Sentence
S "the" Sentence -> Sentence -> Sentence
+:+ ConceptChunk -> Sentence
forall n. (HasUID n, NamedIdea n) => n -> Sentence
phrase ConceptChunk
shearForce Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S "in the direction opposite to the direction" Sentence -> Sentence -> Sentence
+:+
  String -> Sentence
S "of potential motion, thus hindering motion along the plane")
  
shearForce :: ConceptChunk
shearForce = String -> NP -> Sentence -> ConceptChunk
dccWDS "shearForce" (String -> NP
cn' "shear force")
  (String -> Sentence
S "a" Sentence -> Sentence -> Sentence
+:+ ConceptChunk -> Sentence
forall n. (HasUID n, NamedIdea n) => n -> Sentence
phrase ConceptChunk
force Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S "applied parallel to the plane of the material")
  
stffness :: ConceptChunk
stffness   = String -> NP -> Sentence -> ConceptChunk
dccWDS "stffness" (String -> NP
cn "stiffness") 
  (String -> Sentence
S "the extent a body resists" Sentence -> Sentence -> Sentence
+:+ ConceptChunk -> Sentence
forall n. (HasUID n, NamedIdea n) => n -> Sentence
phrase ConceptChunk
strain)