module Drasil.PDController.SpSysDesc where

import Data.Drasil.Concepts.Documentation (goalStmtDom, physicalSystem)

import Drasil.PDController.Concepts
import Language.Drasil
import Language.Drasil.Chunk.Concept.NamedCombinators

-- Introduction of the Problem Description section derives from purpose in
-- SystemInformation (purp in Body.hs)

sysParts :: [Sentence]
sysParts :: [Sentence]
sysParts
  = (ConceptChunk -> Sentence) -> [ConceptChunk] -> [Sentence]
forall a b. (a -> b) -> [a] -> [b]
map (Sentence -> Sentence
(!.) (Sentence -> Sentence)
-> (ConceptChunk -> Sentence) -> ConceptChunk -> Sentence
forall b c a. (b -> c) -> (a -> b) -> a -> c
. NP -> Sentence
forall n. NounPhrase n => n -> Sentence
atStartNP (NP -> Sentence)
-> (ConceptChunk -> NP) -> ConceptChunk -> Sentence
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ConceptChunk -> NP
forall t. NamedIdea t => t -> NP
the)
      [ConceptChunk
summingPt, ConceptChunk
pidC, ConceptChunk
powerPlant]

sysFigure :: LabelledContent
sysFigure :: LabelledContent
sysFigure
  = Reference -> RawContent -> LabelledContent
llcc (String -> Reference
makeFigRef String
"pidSysDiagram") (RawContent -> LabelledContent) -> RawContent -> LabelledContent
forall a b. (a -> b) -> a -> b
$
      Sentence -> String -> MaxWidthPercent -> RawContent
figWithWidth (NP -> Sentence
forall n. NounPhrase n => n -> Sentence
atStartNP (NP -> Sentence) -> NP -> Sentence
forall a b. (a -> b) -> a -> b
$ IdeaDict -> NP
forall t. NamedIdea t => t -> NP
the IdeaDict
physicalSystem)
        String
"../../../../datafiles/pdcontroller/Fig_PDController.png"
        MaxWidthPercent
70

sysGoalInput :: [Sentence]
sysGoalInput :: [Sentence]
sysGoalInput
  = [ConceptChunk -> Sentence
forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
setPoint, ConceptChunk -> Sentence
forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
simulationTime, ConceptChunk -> Sentence
forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
propGain, ConceptChunk -> Sentence
forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
derGain,
     ConceptChunk -> Sentence
forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
stepTime]

goals :: [ConceptInstance]
goals :: [ConceptInstance]
goals = [ConceptInstance
sysProcessVariable]

sysProcessVariable :: ConceptInstance
sysProcessVariable :: ConceptInstance
sysProcessVariable
  = String -> Sentence -> String -> ConceptChunk -> ConceptInstance
forall c.
Concept c =>
String -> Sentence -> String -> c -> ConceptInstance
cic String
"processVariable"
      ([Sentence] -> Sentence
foldlSent
         [String -> Sentence
S String
"Calculate the output of the", ConceptChunk -> Sentence
forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
powerPlant,
            Sentence -> Sentence
sParen (ConceptChunk -> Sentence
forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
processVariable),
            String -> Sentence
S String
"over time"])
      String
"Process-Variable"
      ConceptChunk
goalStmtDom