module Drasil.SWHSNoPCM.Requirements (funcReqs, inReqDesc) where
import Control.Lens ((^.))
import Language.Drasil
import Drasil.DocLang (inReq)
import Language.Drasil.Chunk.Concept.NamedCombinators
import Theory.Drasil (InstanceModel)
import Data.Drasil.Concepts.Documentation (value)
import Data.Drasil.Quantities.PhysicalProperties (mass)
import Drasil.SWHS.DataDefs (waterMass, tankVolume, balanceDecayRate)
import Drasil.SWHS.IMods (heatEInWtr)
import Drasil.SWHS.Requirements (calcValues, checkWithPhysConsts,
findMassConstruct, inReqDesc, oIDQConstruct, outputValues)
import Drasil.SWHSNoPCM.DataDefs (waterVolume)
import Drasil.SWHSNoPCM.IMods (eBalanceOnWtr)
findMass :: ConceptInstance
findMass :: ConceptInstance
findMass = ConceptInstance
-> Sentence
-> [InstanceModel]
-> [DataDefinition]
-> ConceptInstance
forall r s t.
(Referable r, HasShortName r, Referable s, HasShortName s,
Referable t, HasShortName t) =>
r -> Sentence -> [s] -> [t] -> ConceptInstance
findMassConstruct (Sentence -> ConceptInstance
inReq Sentence
EmptyS) (UnitalChunk -> Sentence
forall n. NamedIdea n => n -> Sentence
phrase UnitalChunk
mass) [InstanceModel
eBalanceOnWtr]
[DataDefinition
waterMass, DataDefinition
waterVolume, DataDefinition
tankVolume]
oIDQVals :: [Sentence]
oIDQVals :: [Sentence]
oIDQVals = ([Sentence] -> Sentence) -> [[Sentence]] -> [Sentence]
forall a b. (a -> b) -> [a] -> [b]
map [Sentence] -> Sentence
foldlSent_ [
[NP -> Sentence
forall n. NounPhrase n => n -> Sentence
pluralNP (IdeaDict -> NP
forall t. NamedIdea t => t -> NP
the IdeaDict
value), ConceptInstance -> Sentence
forall r. (Referable r, HasShortName r) => r -> Sentence
fromSource (Sentence -> ConceptInstance
inReq Sentence
EmptyS)],
[NP -> Sentence
forall n. NounPhrase n => n -> Sentence
phraseNP (UnitalChunk -> NP
forall t. NamedIdea t => t -> NP
the UnitalChunk
mass), ConceptInstance -> Sentence
forall r. (Referable r, HasShortName r) => r -> Sentence
fromSource ConceptInstance
findMass],
[QuantityDict -> Sentence
forall c. (HasUID c, HasSymbol c) => c -> Sentence
ch (DataDefinition
balanceDecayRate DataDefinition
-> Getting QuantityDict DataDefinition QuantityDict -> QuantityDict
forall s a. s -> Getting a s a -> a
^. Getting QuantityDict DataDefinition QuantityDict
forall d. DefinesQuantity d => Getter d QuantityDict
Getter DataDefinition QuantityDict
defLhs), DataDefinition -> Sentence
forall r. (Referable r, HasShortName r) => r -> Sentence
fromSource DataDefinition
balanceDecayRate]
]
funcReqs :: [ConceptInstance]
funcReqs :: [ConceptInstance]
funcReqs = [ConceptInstance
findMass, ConceptInstance
checkWithPhysConsts, [Sentence] -> ConceptInstance
oIDQConstruct [Sentence]
oIDQVals,
[InstanceModel] -> ConceptInstance
calcValues [InstanceModel]
noPCMOutputs, [InstanceModel] -> ConceptInstance
outputValues [InstanceModel]
noPCMOutputs]
noPCMOutputs :: [InstanceModel]
noPCMOutputs :: [InstanceModel]
noPCMOutputs = [InstanceModel
eBalanceOnWtr, InstanceModel
heatEInWtr]