module Drasil.SWHS.Changes (likelyChgs, likeChgTCVOD, likeChgTCVOL,
  likeChgTLH, unlikelyChgs) where

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

import Data.Drasil.Concepts.Documentation (assumption, value, simulation,
  model, likeChgDom, unlikeChgDom)

import Drasil.SWHS.Concepts (tank, phsChgMtrl, water)
import Drasil.SWHS.Unitals (tempInit, tempC, tempPCM)
import Drasil.SWHS.Assumptions (assumpTPCAV, assumpTHCCoT, assumpTHCCoL,
  assumpCTNOD, assumpSITWP, assumpWAL, assumpPIT, assumpNIHGBWP, assumpNGSP)
import Drasil.SWHS.IMods (eBalanceOnWtr, eBalanceOnPCM, heatEInPCM)

import Data.Drasil.Concepts.Thermodynamics as CT (heat,
  thermalConductor)
import Data.Drasil.Quantities.Physics (energy)

--------------------------------
-- Section 6 : LIKELY CHANGES --
--------------------------------

likelyChgs :: [ConceptInstance]
likelyChgs :: [ConceptInstance]
likelyChgs = [ConceptInstance
likeChgUTP, ConceptInstance
likeChgTCVOD, ConceptInstance
likeChgTCVOL, ConceptInstance
likeChgDT, ConceptInstance
likeChgDITPW,
  ConceptInstance
likeChgTLH]

likeChgUTP, likeChgTCVOD, likeChgTCVOL, likeChgDT, likeChgDITPW,
  likeChgTLH :: ConceptInstance

likeChgUTP :: ConceptInstance
likeChgUTP = forall c.
Concept c =>
String -> Sentence -> String -> c -> ConceptInstance
cic String
"likeChgUTP" (
  [Sentence] -> Sentence
foldlSent [forall x.
(HasShortName x, Referable x) =>
x -> Sentence -> Sentence
chgsStart ConceptInstance
assumpTPCAV (forall c. Idea c => c -> Sentence
short CI
phsChgMtrl), String -> Sentence
S String
"is actually a poor",
  forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
CT.thermalConductor Sentence -> Sentence -> Sentence
`sC` String -> Sentence
S String
"so the", forall n. NamedIdea n => n -> Sentence
phrase CI
assumption,
  String -> Sentence
S String
"of uniform", forall n. NamedIdea n => n -> Sentence
phrase ConstrConcept
tempPCM, String -> Sentence
S String
"is not likely"] ) String
"Uniform-Temperature-PCM"
  ConceptChunk
likeChgDom
--
likeChgTCVOD :: ConceptInstance
likeChgTCVOD = forall c.
Concept c =>
String -> Sentence -> String -> c -> ConceptInstance
cic String
"likeChgTCVOD" (
  [Sentence] -> Sentence
foldlSent [forall x.
(HasShortName x, Referable x) =>
x -> Sentence -> Sentence
chgsStart ConceptInstance
assumpTHCCoT (String -> Sentence
S String
"The"), forall n. NamedIdea n => n -> Sentence
phrase UncertQ
tempC, String -> Sentence
S String
"will change over",
  String -> Sentence
S String
"course" Sentence -> Sentence -> Sentence
`S.the_ofThe` String -> Sentence
S String
"day, depending", String -> Sentence
S String
"on the", forall n. NamedIdea n => n -> Sentence
phrase UnitalChunk
energy,
  String -> Sentence
S String
"received from the sun"]) String
"Temperature-Coil-Variable-Over-Day" ConceptChunk
likeChgDom
--
likeChgTCVOL :: ConceptInstance
likeChgTCVOL = forall c.
Concept c =>
String -> Sentence -> String -> c -> ConceptInstance
cic String
"likeChgTCVOL" (
  [Sentence] -> Sentence
foldlSent [forall x.
(HasShortName x, Referable x) =>
x -> Sentence -> Sentence
chgsStart ConceptInstance
assumpTHCCoL (String -> Sentence
S String
"The"), forall n. NamedIdea n => n -> Sentence
phrase UncertQ
tempC,
  String -> Sentence
S String
"will actually change along its length as the", forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
water,
  String -> Sentence
S String
"within it cools"] ) String
"Temperature-Coil-Variable-Over-Length" ConceptChunk
likeChgDom
--
likeChgDT :: ConceptInstance
likeChgDT = forall c.
Concept c =>
String -> Sentence -> String -> c -> ConceptInstance
cic String
"likeChgDT" (
  [Sentence] -> Sentence
foldlSent [forall x.
(HasShortName x, Referable x) =>
x -> Sentence -> Sentence
chgsStart ConceptInstance
assumpCTNOD (String -> Sentence
S String
"The"), forall n. NamedIdea n => n -> Sentence
phrase IdeaDict
model, String -> Sentence
S String
"currently only",
  String -> Sentence
S String
"accounts for charging of the tank. A more complete", forall n. NamedIdea n => n -> Sentence
phrase IdeaDict
model,
  String -> Sentence
S String
"would also account for discharging of the tank"] ) String
"Discharging-Tank" ConceptChunk
likeChgDom
--
likeChgDITPW :: ConceptInstance
likeChgDITPW = forall c.
Concept c =>
String -> Sentence -> String -> c -> ConceptInstance
cic String
"likeChgDITPW" (
  [Sentence] -> Sentence
foldlSent [forall x.
(HasShortName x, Referable x) =>
x -> Sentence -> Sentence
chgsStart ConceptInstance
assumpSITWP (String -> Sentence
S String
"To add more flexibility to the"),
  forall n. NamedIdea n => n -> Sentence
phrase IdeaDict
simulation Sentence -> Sentence -> Sentence
`sC` forall n. NounPhrase n => n -> Sentence
phraseNP (UncertQ
tempInit forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`the_ofThe` ConceptChunk
water) Sentence -> Sentence -> Sentence
`S.andThe`
  forall c. Idea c => c -> Sentence
short CI
phsChgMtrl, String -> Sentence
S String
"could be allowed to have different",
  forall n. NamedIdea n => n -> Sentence
plural IdeaDict
value] ) String
"Different-Initial-Temps-PCM-Water" ConceptChunk
likeChgDom
--
likeChgTLH :: ConceptInstance
likeChgTLH = forall c.
Concept c =>
String -> Sentence -> String -> c -> ConceptInstance
cic String
"likeChgTLH" (
  [Sentence] -> Sentence
foldlSent [forall x.
(HasShortName x, Referable x) =>
x -> Sentence -> Sentence
chgsStart ConceptInstance
assumpPIT (String -> Sentence
S String
"Any real"), forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
tank, String -> Sentence
S String
"cannot",
  String -> Sentence
S String
"be perfectly insulated and will lose", forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
CT.heat] ) String
"Tank-Lose-Heat"
  ConceptChunk
likeChgDom

-- List structure same in all examples.

unlikelyChgs :: [ConceptInstance]
unlikelyChgs :: [ConceptInstance]
unlikelyChgs = [ConceptInstance
unlikeChgWPFS, ConceptInstance
unlikeChgNIHG, ConceptInstance
unlikeChgNGS]

unlikeChgWPFS, unlikeChgNIHG, unlikeChgNGS :: ConceptInstance
unlikeChgWPFS :: ConceptInstance
unlikeChgWPFS = forall c.
Concept c =>
String -> Sentence -> String -> c -> ConceptInstance
cic String
"unlikeChgWPFS" (
  [Sentence] -> Sentence
foldlSent [forall r.
(HasUID r, HasRefAddress r, HasShortName r) =>
r -> Sentence
refS ConceptInstance
assumpWAL Sentence -> Sentence -> Sentence
`sC` forall x.
(HasShortName x, Referable x) =>
x -> Sentence -> Sentence
chgsStart ConceptInstance
assumpNGSP (String -> Sentence
S String
"It is unlikely for the change of"),
  forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
water, String -> Sentence
S String
"from liquid to a solid or the state change of the", forall n. NamedIdea n => n -> Sentence
phrase CI
phsChgMtrl,
  String -> Sentence
S String
"from a liquid to a gas to be considered"] ) String
"Water-PCM-Fixed-States" ConceptChunk
unlikeChgDom


unlikeChgNIHG :: ConceptInstance
unlikeChgNIHG = forall c.
Concept c =>
String -> Sentence -> String -> c -> ConceptInstance
cic String
"unlikeChgNIHG" (
  [Sentence] -> Sentence
foldlSent [forall x.
(HasShortName x, Referable x) =>
x -> Sentence -> Sentence
chgsStart ConceptInstance
assumpNIHGBWP (String -> Sentence
S String
"Is used for the derivations of"),
  forall r.
(HasUID r, HasRefAddress r, HasShortName r) =>
r -> Sentence
refS InstanceModel
eBalanceOnWtr Sentence -> Sentence -> Sentence
`S.and_` forall r.
(HasUID r, HasRefAddress r, HasShortName r) =>
r -> Sentence
refS InstanceModel
eBalanceOnPCM] )
  String
"No-Internal-Heat-Generation" ConceptChunk
unlikeChgDom

unlikeChgNGS :: ConceptInstance
unlikeChgNGS = forall c.
Concept c =>
String -> Sentence -> String -> c -> ConceptInstance
cic String
"unlikeChgNGS" (
  [Sentence] -> Sentence
foldlSent [forall x.
(HasShortName x, Referable x) =>
x -> Sentence -> Sentence
chgsStart ConceptInstance
assumpNGSP (String -> Sentence
S String
"Is used for the derivation of"), forall r.
(HasUID r, HasRefAddress r, HasShortName r) =>
r -> Sentence
refS InstanceModel
eBalanceOnPCM,
  String -> Sentence
S String
"and for the equation given by", forall r.
(HasUID r, HasRefAddress r, HasShortName r) =>
r -> Sentence
refS InstanceModel
heatEInPCM, String -> Sentence
S String
"to be valid"] )
  String
"No-Gaseous-State" ConceptChunk
unlikeChgDom