module Drasil.SWHSNoPCM.Derivations (
  eBalanceOnWtrDerivEqns
) where

import Language.Drasil (ExprC(..), ModelExprC(..), ModelExpr, recip_)

import Data.Drasil.Quantities.Physics (time)
import Drasil.SWHS.Unitals (coilHTC, coilSA, htCapW, htFluxC, tauW, tempC,
  tempW, wMass)

----------------------------------------------
--    Derivation of eBalanceOnWtr           --
----------------------------------------------
eBalanceOnWtrDerivEqn1, eBalanceOnWtrDerivEqn2, eBalanceOnWtrDerivEqn3, eBalanceOnWtrDerivEqn4 :: ModelExpr

eBalanceOnWtrDerivEqn1 :: ModelExpr
eBalanceOnWtrDerivEqn1 = forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy UnitalChunk
wMass forall r. ExprC r => r -> r -> r
`mulRe` forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy UncertQ
htCapW forall r. ExprC r => r -> r -> r
`mulRe` forall r c. (ModelExprC r, HasUID c, HasSymbol c) => r -> c -> r
deriv (forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy ConstrConcept
tempW) UnitalChunk
time forall r. ExprC r => r -> r -> r
$=
  forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy UnitalChunk
htFluxC forall r. ExprC r => r -> r -> r
`mulRe` forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy UncertQ
coilSA

eBalanceOnWtrDerivEqn2 :: ModelExpr
eBalanceOnWtrDerivEqn2 = forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy UnitalChunk
wMass forall r. ExprC r => r -> r -> r
`mulRe` forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy UncertQ
htCapW forall r. ExprC r => r -> r -> r
`mulRe` forall r c. (ModelExprC r, HasUID c, HasSymbol c) => r -> c -> r
deriv (forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy ConstrConcept
tempW) UnitalChunk
time forall r. ExprC r => r -> r -> r
$=
  forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy UncertQ
coilHTC forall r. ExprC r => r -> r -> r
`mulRe` forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy UncertQ
coilSA forall r. ExprC r => r -> r -> r
`mulRe`  (forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy UncertQ
tempC forall r. ExprC r => r -> r -> r
$- forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy ConstrConcept
tempW)

eBalanceOnWtrDerivEqn3 :: ModelExpr
eBalanceOnWtrDerivEqn3 = forall r c. (ModelExprC r, HasUID c, HasSymbol c) => r -> c -> r
deriv (forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy ConstrConcept
tempW) UnitalChunk
time forall r. ExprC r => r -> r -> r
$=
  (forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy UncertQ
coilHTC forall r. ExprC r => r -> r -> r
`mulRe` forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy UncertQ
coilSA forall r. ExprC r => r -> r -> r
$/
  (forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy UnitalChunk
wMass forall r. ExprC r => r -> r -> r
`mulRe` forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy UncertQ
htCapW)) forall r. ExprC r => r -> r -> r
`mulRe`  (forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy UncertQ
tempC forall r. ExprC r => r -> r -> r
$- forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy ConstrConcept
tempW)

eBalanceOnWtrDerivEqn4 :: ModelExpr
eBalanceOnWtrDerivEqn4 =
  forall r c. (ModelExprC r, HasUID c, HasSymbol c) => r -> c -> r
deriv (forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy ConstrConcept
tempW) UnitalChunk
time forall r. ExprC r => r -> r -> r
$= forall r. (ExprC r, LiteralC r) => r -> r
recip_ (forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy UnitalChunk
tauW) forall r. ExprC r => r -> r -> r
`mulRe` (forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy UncertQ
tempC forall r. ExprC r => r -> r -> r
$- forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy ConstrConcept
tempW)

eBalanceOnWtrDerivEqns :: [ModelExpr]
eBalanceOnWtrDerivEqns :: [ModelExpr]
eBalanceOnWtrDerivEqns = [ModelExpr
eBalanceOnWtrDerivEqn1, ModelExpr
eBalanceOnWtrDerivEqn2, ModelExpr
eBalanceOnWtrDerivEqn3, ModelExpr
eBalanceOnWtrDerivEqn4]