-- | Defines concepts used to describe physical properties.
module Data.Drasil.Concepts.PhysicalProperties where

import Language.Drasil
import Language.Drasil.Chunk.Concept.NamedCombinators
import Drasil.Database (mkUid)

import Data.Drasil.Concepts.Documentation (material_, property)
import Data.Drasil.Concepts.Math (centre)

-- | Collects all physical property-related concepts.
physicalcon :: [ConceptChunk]
physicalcon :: [ConceptChunk]
physicalcon = [ConceptChunk
gaseous, ConceptChunk
liquid, ConceptChunk
solid, ConceptChunk
ctrOfMass, ConceptChunk
dimension, ConceptChunk
flexure]

-- * Physical Properties

gaseous, liquid, solid, ctrOfMass, density, specWeight, mass, len, dimension,
  vol, flexure :: ConceptChunk

gaseous :: ConceptChunk
gaseous    = UID -> NP -> Sentence -> ConceptChunk
cncpt''' (String -> UID
mkUid String
"gaseous")    (String -> NP
cn''' String
"gas"          ) (String -> Sentence
S String
"gaseous state")
liquid :: ConceptChunk
liquid     = UID -> NP -> Sentence -> ConceptChunk
cncpt''' (String -> UID
mkUid String
"liquid")     (String -> NP
cn' String
"liquid"         ) (String -> Sentence
S String
"liquid state")
solid :: ConceptChunk
solid      = UID -> NP -> Sentence -> ConceptChunk
cncpt''' (String -> UID
mkUid String
"solid")      (String -> NP
cn' String
"solid"          ) (String -> Sentence
S String
"solid state")
ctrOfMass :: ConceptChunk
ctrOfMass  = UID -> NP -> Sentence -> ConceptChunk
cncpt''' (String -> UID
mkUid String
"ctrOfMass")  (ConceptChunk
centre ConceptChunk -> ConceptChunk -> NP
forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_PS` ConceptChunk
mass  ) (String -> Sentence
S String
"the mean location of the distribution of mass of the object")
dimension :: ConceptChunk
dimension  = UID -> NP -> Sentence -> ConceptChunk
cncpt''' (String -> UID
mkUid String
"dimension")  (String -> NP
cn' String
"dimension"      ) (String -> Sentence
S String
"any of a set of basic kinds of quantity, as mass, length, and time")
density :: ConceptChunk
density    = UID -> NP -> Sentence -> ConceptChunk
cncpt''' (String -> UID
mkUid String
"density")    (String -> NP
cnIES String
"density"      ) (String -> Sentence
S String
"the mass per unit volume")
specWeight :: ConceptChunk
specWeight = UID -> NP -> Sentence -> ConceptChunk
cncpt''' (String -> UID
mkUid String
"specWeight") (String -> NP
cn' String
"specific weight") (String -> Sentence
S String
"the weight per unit volume")
flexure :: ConceptChunk
flexure    = UID -> NP -> Sentence -> ConceptChunk
cncpt''' (String -> UID
mkUid String
"flexure")    (String -> NP
cn' String
"flexure"        ) (String -> Sentence
S String
"a bent or curved part")
len :: ConceptChunk
len        = UID -> NP -> Sentence -> ConceptChunk
cncpt''' (String -> UID
mkUid String
"length")     (String -> NP
cn' String
"length"         ) (String -> Sentence
S (String
"the straight-line distance between two points along an object, " String -> String -> String
forall a. [a] -> [a] -> [a]
++
                                                       String
"typically used to represent the size of an object from one end to the other"))
mass :: ConceptChunk
mass       = UID -> NP -> Sentence -> ConceptChunk
cncpt''' (String -> UID
mkUid String
"mass")       (String -> NP
cn''' String
"mass"         ) (String -> Sentence
S String
"the quantity of matter in a body")
vol :: ConceptChunk
vol        = UID -> NP -> Sentence -> ConceptChunk
cncpt''' (String -> UID
mkUid String
"volume")     (String -> NP
cn' String
"volume"         ) (String -> Sentence
S String
"the amount of space that a substance or object occupies")

materialProprty :: IdeaDict
materialProprty :: IdeaDict
materialProprty = IdeaDict -> IdeaDict -> IdeaDict
forall a b. (NamedIdea a, NamedIdea b) => a -> b -> IdeaDict
compoundNC IdeaDict
material_ IdeaDict
property