module Drasil.SSP.Changes (likelyChgs, unlikelyChgs) where

-- A list of likely and unlikely changes for the SSP example

import Language.Drasil
import Language.Drasil.Chunk.Concept.NamedCombinators
import qualified Language.Drasil.Sentence.Combinators as S

import Data.Drasil.Concepts.Documentation (analysis, likeChgDom, model, system, unlikeChgDom)
import Data.Drasil.Concepts.Math (calculation, zDir)
import Data.Drasil.Concepts.Physics (force, stress, threeD, twoD)

import Drasil.SSP.Assumptions (assumpSLH, assumpINSFL, assumpENSL, 
  assumpSF, assumpSL)
import Drasil.SSP.Defs (slope, soil, soilPrpty)
import Drasil.SSP.Unitals (intNormForce, intShrForce, surfLoad)

likelyChgs :: [ConceptInstance]
likelyChgs :: [ConceptInstance]
likelyChgs = [ConceptInstance
likelyChgCISL, ConceptInstance
likelyChgCSF, ConceptInstance
likelyChgCEF]

likelyChgCISL :: ConceptInstance
likelyChgCISL :: ConceptInstance
likelyChgCISL = forall c.
Concept c =>
String -> Sentence -> String -> c -> ConceptInstance
cic String
"LC_inhomogeneous" Sentence
lcCISLDesc String
"Calculate-Inhomogeneous-Soil-Layers" ConceptChunk
likeChgDom

likelyChgCSF :: ConceptInstance
likelyChgCSF :: ConceptInstance
likelyChgCSF = forall c.
Concept c =>
String -> Sentence -> String -> c -> ConceptInstance
cic String
"LC_seismic" Sentence
lcCSFDesc String
"Calculate-Seismic-Force" ConceptChunk
likeChgDom

likelyChgCEF :: ConceptInstance
likelyChgCEF :: ConceptInstance
likelyChgCEF = forall c.
Concept c =>
String -> Sentence -> String -> c -> ConceptInstance
cic String
"LC_external" Sentence
lcCEFDesc String
"Calculate-External-Force" ConceptChunk
likeChgDom

lcCISLDesc :: Sentence
lcCISLDesc :: Sentence
lcCISLDesc = [Sentence] -> Sentence
foldlSent [forall x.
(HasShortName x, Referable x) =>
x -> Sentence -> Sentence
chgsStart ConceptInstance
assumpSLH (String -> Sentence
S String
"The"), forall n. NamedIdea n => n -> Sentence
phrase IdeaDict
system,
  String -> Sentence
S String
"currently assumes the", forall n. NamedIdea n => n -> Sentence
phrase IdeaDict
soil Sentence -> Sentence -> Sentence
+:+. String -> Sentence
S String
"mass is homogeneous",
  String -> Sentence
S String
"In the future" Sentence -> Sentence -> Sentence
`sC` forall n. NamedIdea n => n -> Sentence
plural ConceptChunk
calculation,
  String -> Sentence
S String
"can be added for inconsistent", forall n. NamedIdea n => n -> Sentence
plural IdeaDict
soilPrpty, String -> Sentence
S String
"throughout"]

lcCSFDesc :: Sentence
lcCSFDesc :: Sentence
lcCSFDesc = [Sentence] -> Sentence
foldlSent [forall x.
(HasShortName x, Referable x) =>
x -> Sentence -> Sentence
chgsStart ConceptInstance
assumpSF (String -> Sentence
S String
"The"), forall n. NamedIdea n => n -> Sentence
phrase IdeaDict
system,
  String -> Sentence
S String
"currently assumes no seismic" Sentence -> Sentence -> Sentence
+:+. forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
force, String -> Sentence
S String
"In the future" Sentence -> Sentence -> Sentence
`sC`
  forall n. NamedIdea n => n -> Sentence
plural ConceptChunk
calculation, String -> Sentence
S String
"can be added for the presence of seismic", forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
force]

lcCEFDesc :: Sentence
lcCEFDesc :: Sentence
lcCEFDesc = [Sentence] -> Sentence
foldlSent [forall x.
(HasShortName x, Referable x) =>
x -> Sentence -> Sentence
chgsStart ConceptInstance
assumpSL (String -> Sentence
S String
"The"), forall n. NamedIdea n => n -> Sentence
phrase IdeaDict
system,
  String -> Sentence
S String
"currently assumes no" Sentence -> Sentence -> Sentence
+:+. forall n. NamedIdea n => n -> Sentence
phrase UnitalChunk
surfLoad, String -> Sentence
S String
"In the future" Sentence -> Sentence -> Sentence
`sC`
  forall n. NamedIdea n => n -> Sentence
plural ConceptChunk
calculation, String -> Sentence
S String
"can be added for an imposed surface load on the", 
  forall n. NamedIdea n => n -> Sentence
phrase IdeaDict
slope]

unlikelyChgs :: [ConceptInstance]
unlikelyChgs :: [ConceptInstance]
unlikelyChgs = [ConceptInstance
unlikelyChgNISLO, ConceptInstance
unlikelyChg2AO]

unlikelyChgNISLO, unlikelyChg2AO :: ConceptInstance

unlikelyChgNISLO :: ConceptInstance
unlikelyChgNISLO = forall c.
Concept c =>
String -> Sentence -> String -> c -> ConceptInstance
cic String
"UC_normshearlinear" Sentence
ucNASLODesc String
"Normal-And-Shear-Linear-Only" ConceptChunk
unlikeChgDom
unlikelyChg2AO :: ConceptInstance
unlikelyChg2AO   = forall c.
Concept c =>
String -> Sentence -> String -> c -> ConceptInstance
cic String
"UC_2donly"          Sentence
uc2AODesc   String
"2D-Analysis-Only"             ConceptChunk
unlikeChgDom

ucNASLODesc, uc2AODesc :: Sentence

ucNASLODesc :: Sentence
ucNASLODesc = [Sentence] -> Sentence
foldlSent [String -> Sentence
S String
"Changes related to",
  forall r.
(HasUID r, HasRefAddress r, HasShortName r) =>
r -> Sentence
refS ConceptInstance
assumpINSFL, String -> Sentence
S String
"are not possible due to the dependency"
  Sentence -> Sentence -> Sentence
`S.ofThe` forall n. NamedIdea n => n -> Sentence
plural ConceptChunk
calculation, String -> Sentence
S String
"on the linear relationship between",
  forall n. NounPhrase n => n -> Sentence
phraseNP (UnitalChunk
intNormForce forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`and_` UnitalChunk
intShrForce)]

uc2AODesc :: Sentence
uc2AODesc = [Sentence] -> Sentence
foldlSent [forall r.
(HasUID r, HasRefAddress r, HasShortName r) =>
r -> Sentence
refS ConceptInstance
assumpENSL, String -> Sentence
S String
"allows for", forall c. Idea c => c -> Sentence
short CI
twoD, 
  forall n. NamedIdea n => n -> Sentence
phrase IdeaDict
analysis, String -> Sentence
S String
"with these", forall n. NamedIdea n => n -> Sentence
plural IdeaDict
model, String -> Sentence
S String
"only because", 
  forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
stress, String -> Sentence
S String
"along the" Sentence -> Sentence -> Sentence
+:+. (forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
zDir Sentence -> Sentence -> Sentence
`S.is` String -> Sentence
S String
"zero"), 
  String -> Sentence
S String
"These", forall n. NamedIdea n => n -> Sentence
plural IdeaDict
model, String -> Sentence
S String
"do not take into account", forall n. NounPhrase n => n -> Sentence
phraseNP (ConceptChunk
stress 
  forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`inThe` ConceptChunk
zDir) Sentence -> Sentence -> Sentence
`sC` String -> Sentence
S String
"and therefore cannot be used",
  String -> Sentence
S String
"without manipulation to attempt", forall n. NounPhrase n => n -> Sentence
phraseNP (forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
combineNINI CI
threeD IdeaDict
analysis)]