module Drasil.HGHC.HeatTransfer where --whole file is used

import Language.Drasil
import Language.Drasil.ShortHands
import Theory.Drasil (DataDefinition, ddENoRefs)

import Data.Drasil.Units.Thermodynamics (heatTransferCoef)

{--}

symbols :: [DefinedQuantityDict]
symbols :: [DefinedQuantityDict]
symbols = [DefinedQuantityDict]
htOutputs [DefinedQuantityDict]
-> [DefinedQuantityDict] -> [DefinedQuantityDict]
forall a. [a] -> [a] -> [a]
++ [DefinedQuantityDict]
htInputs

dataDefs :: [DataDefinition]
dataDefs :: [DataDefinition]
dataDefs = [DataDefinition
htTransCladFuelDD, DataDefinition
htTransCladCoolDD]

qDefs :: [SimpleQDef]
qDefs :: [SimpleQDef]
qDefs = [SimpleQDef
htTransCladFuel, SimpleQDef
htTransCladCool]

htVars :: [DefinedQuantityDict]
htVars :: [DefinedQuantityDict]
htVars = [DefinedQuantityDict
cladThick, DefinedQuantityDict
coolFilmCond, DefinedQuantityDict
gapFilmCond, DefinedQuantityDict
cladCond]

htInputs, htOutputs :: [DefinedQuantityDict]
htInputs :: [DefinedQuantityDict]
htInputs = (DefinedQuantityDict -> DefinedQuantityDict)
-> [DefinedQuantityDict] -> [DefinedQuantityDict]
forall a b. (a -> b) -> [a] -> [b]
map DefinedQuantityDict -> DefinedQuantityDict
forall c.
(Quantity c, Concept c, MayHaveUnit c) =>
c -> DefinedQuantityDict
dqdWr [DefinedQuantityDict]
htVars
htOutputs :: [DefinedQuantityDict]
htOutputs = (SimpleQDef -> DefinedQuantityDict)
-> [SimpleQDef] -> [DefinedQuantityDict]
forall a b. (a -> b) -> [a] -> [b]
map SimpleQDef -> DefinedQuantityDict
forall c.
(Quantity c, Concept c, MayHaveUnit c) =>
c -> DefinedQuantityDict
dqdWr [SimpleQDef]
qDefs

cladThick, coolFilmCond, gapFilmCond, cladCond :: DefinedQuantityDict
cladThick :: DefinedQuantityDict
cladThick    = ConceptChunk -> Symbol -> Space -> DefinedQuantityDict
dqdNoUnit (String -> NP -> String -> ConceptChunk
dcc String
"cladThick"    (String -> NP
cn''' String
"clad thickness")
  String
"the clad thickness")
  (Symbol -> Symbol -> Symbol
sub Symbol
lTau Symbol
lClad) Space
Real
coolFilmCond :: DefinedQuantityDict
coolFilmCond = ConceptChunk -> Symbol -> Space -> DefinedQuantityDict
dqdNoUnit (String -> NP -> String -> ConceptChunk
dcc String
"coolFilmCond" (String -> NP
cn' String
"initial coolant film conductance")
  String
"the initial coolant film conductance")
  (Symbol -> Symbol -> Symbol
sub Symbol
lH Symbol
lCoolant) Space
Real
gapFilmCond :: DefinedQuantityDict
gapFilmCond  = ConceptChunk -> Symbol -> Space -> DefinedQuantityDict
dqdNoUnit (String -> NP -> String -> ConceptChunk
dcc String
"gapFilmCond"  (String -> NP
cn' String
"initial gap film conductance")
  String
"the initial gap film conductance")
  (Symbol -> Symbol -> Symbol
sub Symbol
lH Symbol
lGap) Space
Real
cladCond :: DefinedQuantityDict
cladCond     = ConceptChunk -> Symbol -> Space -> DefinedQuantityDict
dqdNoUnit (String -> NP -> String -> ConceptChunk
dcc String
"cladCond"     (String -> NP
cnIES String
"clad conductivity") 
  String
"the clad conductivity")
  (Symbol -> Symbol -> Symbol
sub Symbol
lK Symbol
lClad) Space
Real

htTransCladCoolEq, htTransCladFuelEq :: Expr
htTransCladCool, htTransCladFuel :: SimpleQDef

---

htTransCladCoolDD :: DataDefinition
htTransCladCoolDD :: DataDefinition
htTransCladCoolDD = SimpleQDef
-> Maybe Derivation -> String -> [Sentence] -> DataDefinition
ddENoRefs SimpleQDef
htTransCladCool Maybe Derivation
forall a. Maybe a
Nothing String
"htTransCladCool"--Label
  []--no additional notes

htTransCladCool :: SimpleQDef
htTransCladCool = String
-> NP
-> Sentence
-> Symbol
-> Space
-> UnitDefn
-> Expr
-> SimpleQDef
forall u e.
IsUnit u =>
String
-> NP -> Sentence -> Symbol -> Space -> u -> e -> QDefinition e
fromEqn String
"htTransCladCool" (String -> NP
nounPhraseSP
  String
"convective heat transfer coefficient between clad and coolant")
  Sentence
EmptyS (Symbol -> Symbol -> Symbol
sub Symbol
lH Symbol
lClad) Space
Real UnitDefn
heatTransferCoef Expr
htTransCladCoolEq

htTransCladCoolEq :: Expr
htTransCladCoolEq =
  Integer -> Expr
forall r. LiteralC r => Integer -> r
exactDbl Integer
2 Expr -> Expr -> Expr
forall r. ExprC r => r -> r -> r
$* DefinedQuantityDict -> Expr
forall c. (HasUID c, HasSymbol c) => c -> Expr
forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy DefinedQuantityDict
cladCond Expr -> Expr -> Expr
forall r. ExprC r => r -> r -> r
$* DefinedQuantityDict -> Expr
forall c. (HasUID c, HasSymbol c) => c -> Expr
forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy DefinedQuantityDict
coolFilmCond Expr -> Expr -> Expr
forall r. ExprC r => r -> r -> r
$/ (Integer -> Expr
forall r. LiteralC r => Integer -> r
exactDbl Integer
2 Expr -> Expr -> Expr
forall r. ExprC r => r -> r -> r
$* DefinedQuantityDict -> Expr
forall c. (HasUID c, HasSymbol c) => c -> Expr
forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy DefinedQuantityDict
cladCond Expr -> Expr -> Expr
forall r. ExprC r => r -> r -> r
$+ (DefinedQuantityDict -> Expr
forall c. (HasUID c, HasSymbol c) => c -> Expr
forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy DefinedQuantityDict
cladThick 
  Expr -> Expr -> Expr
forall r. ExprC r => r -> r -> r
$* DefinedQuantityDict -> Expr
forall c. (HasUID c, HasSymbol c) => c -> Expr
forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy DefinedQuantityDict
coolFilmCond))

---

htTransCladFuelDD :: DataDefinition
htTransCladFuelDD :: DataDefinition
htTransCladFuelDD = SimpleQDef
-> Maybe Derivation -> String -> [Sentence] -> DataDefinition
ddENoRefs SimpleQDef
htTransCladFuel Maybe Derivation
forall a. Maybe a
Nothing String
"htTransCladFuel"--Label
  []--no additional notes

htTransCladFuel :: SimpleQDef
htTransCladFuel = String
-> NP
-> Sentence
-> Symbol
-> Space
-> UnitDefn
-> Expr
-> SimpleQDef
forall u e.
IsUnit u =>
String
-> NP -> Sentence -> Symbol -> Space -> u -> e -> QDefinition e
fromEqn String
"htTransCladFuel" (String -> NP
nounPhraseSP
  String
"effective heat transfer coefficient between clad and fuel surface")
  Sentence
EmptyS (Symbol -> Symbol -> Symbol
sub Symbol
lH Symbol
lEffective) Space
Real UnitDefn
heatTransferCoef Expr
htTransCladFuelEq

htTransCladFuelEq :: Expr
htTransCladFuelEq = (Integer -> Expr
forall r. LiteralC r => Integer -> r
exactDbl Integer
2 Expr -> Expr -> Expr
forall r. ExprC r => r -> r -> r
$* DefinedQuantityDict -> Expr
forall c. (HasUID c, HasSymbol c) => c -> Expr
forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy DefinedQuantityDict
cladCond Expr -> Expr -> Expr
forall r. ExprC r => r -> r -> r
$* DefinedQuantityDict -> Expr
forall c. (HasUID c, HasSymbol c) => c -> Expr
forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy DefinedQuantityDict
gapFilmCond) Expr -> Expr -> Expr
forall r. ExprC r => r -> r -> r
$/ (Integer -> Expr
forall r. LiteralC r => Integer -> r
exactDbl Integer
2 Expr -> Expr -> Expr
forall r. ExprC r => r -> r -> r
$* DefinedQuantityDict -> Expr
forall c. (HasUID c, HasSymbol c) => c -> Expr
forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy DefinedQuantityDict
cladCond
  Expr -> Expr -> Expr
forall r. ExprC r => r -> r -> r
$+ (DefinedQuantityDict -> Expr
forall c. (HasUID c, HasSymbol c) => c -> Expr
forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy DefinedQuantityDict
cladThick Expr -> Expr -> Expr
forall r. ExprC r => r -> r -> r
$* DefinedQuantityDict -> Expr
forall c. (HasUID c, HasSymbol c) => c -> Expr
forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy DefinedQuantityDict
gapFilmCond))

---

nuclearPhys, fp :: IdeaDict
nuclearPhys :: IdeaDict
nuclearPhys = String -> NP -> IdeaDict
nc String
"nuclearPhys" (String -> NP
nounPhraseSP String
"nuclear physics")
fp :: IdeaDict
fp = String -> NP -> IdeaDict
nc String
"fp" (String -> NP
cn String
"FP")

lCoolant, lClad, lEffective, lGap :: Symbol
lCoolant :: Symbol
lCoolant   = String -> Symbol
label String
"b"
lClad :: Symbol
lClad      = String -> Symbol
label String
"c"
lEffective :: Symbol
lEffective = String -> Symbol
label String
"g"
lGap :: Symbol
lGap       = String -> Symbol
label String
"p"