-- | 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 String
"elastMod" (String -> NP
cn String
"elastic modulus") 
  (String -> Sentence
S String
"the ratio of the" Sentence -> Sentence -> Sentence
+:+ ConceptChunk -> Sentence
forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
stress Sentence -> Sentence -> Sentence
+:+ 
  String -> Sentence
S String
"exerted on a body to the resulting" Sentence -> Sentence -> Sentence
+:+ ConceptChunk -> Sentence
forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
strain)

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

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