-- Assemble all of the mathematical expressions here, to promote re-use
--
-- This is supposed to always be imported qualified, since we're purposefully
-- overloading the names.
module Drasil.Projectile.Expressions (
  eqnRefs, speed', scalarPos', flightDur', offset', velVecExpr, posVecExpr,
  lcrectVel, lcrectPos, lcrectNoTime, landPosExpr,
  horizVel, horizPos, vertVel, vertPos, vertNoTime, iyPos, yConstAccel, iSpeed,
  velocityXY, accelerationXY, positionXY, constAccelXY,
) where

import Prelude hiding (cos, sin)

import Language.Drasil
import Language.Drasil.Document
import qualified Data.Drasil.Quantities.Physics as QP (iSpeed,
  constAccel, xConstAccel, yConstAccel, ixPos, iyPos)
import Data.Drasil.Quantities.Physics (gravitationalAccel, gravitationalAccelConst,
  ixVel, iyVel, xPos, yPos, time, iPos, scalarPos, xVel, yVel, xAccel, yAccel, position,
  velocity, acceleration, constAccelV, speed)
import Drasil.Projectile.Unitals (launAngle, launSpeed, targPos, landPos)

flightDur', iyPos, yConstAccel, iSpeed :: PExpr
flightDur' :: PExpr
flightDur' = Integer -> r
forall r. LiteralC r => Integer -> r
exactDbl Integer
2 r -> r -> r
forall r. ExprC r => r -> r -> r
$* ConstrConcept -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy ConstrConcept
launSpeed r -> r -> r
forall r. ExprC r => r -> r -> r
$* r -> r
forall r. ExprC r => r -> r
sin (ConstrConcept -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy ConstrConcept
launAngle) r -> r -> r
forall r. ExprC r => r -> r -> r
$/ ConstQDef -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy ConstQDef
gravitationalAccelConst
iyPos :: PExpr
iyPos = Integer -> r
forall r. LiteralC r => Integer -> r
exactDbl Integer
0                              -- launchOrigin
yConstAccel :: PExpr
yConstAccel = r -> r
forall r. ExprC r => r -> r
neg (r -> r) -> r -> r
forall a b. (a -> b) -> a -> b
$ ConstQDef -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy ConstQDef
gravitationalAccelConst  -- accelYGravity
iSpeed :: PExpr
iSpeed = ConstrConcept -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy ConstrConcept
launSpeed

offset' :: PExpr
offset' :: PExpr
offset' = ConstrConcept -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy ConstrConcept
landPos r -> r -> r
forall r. ExprC r => r -> r -> r
$- ConstrConcept -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy ConstrConcept
targPos

--
speed' :: PExpr
speed' :: PExpr
speed' = DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
QP.iSpeed r -> r -> r
forall r. ExprC r => r -> r -> r
$+ (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
QP.constAccel r -> r -> r
forall r. ExprC r => r -> r -> r
$* DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
time)

scalarPos' :: PExpr
scalarPos' :: PExpr
scalarPos' = DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
iPos r -> r -> r
forall r. ExprC r => r -> r -> r
$+ (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
QP.iSpeed r -> r -> r
forall r. ExprC r => r -> r -> r
$* DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
time r -> r -> r
forall r. ExprC r => r -> r -> r
$+ r -> r
forall r. (ExprC r, LiteralC r) => r -> r
half (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
QP.constAccel r -> r -> r
forall r. ExprC r => r -> r -> r
$* r -> r
forall r. (ExprC r, LiteralC r) => r -> r
square (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
time)))

rectNoTime :: PExpr
rectNoTime :: PExpr
rectNoTime = r -> r
forall r. (ExprC r, LiteralC r) => r -> r
square (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
speed) r -> r -> r
forall r. ExprC r => r -> r -> r
$= r -> r
forall r. (ExprC r, LiteralC r) => r -> r
square (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
QP.iSpeed) r -> r -> r
forall r. ExprC r => r -> r -> r
$+ (Integer -> r
forall r. LiteralC r => Integer -> r
exactDbl Integer
2 r -> r -> r
forall r. ExprC r => r -> r -> r
$* DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
QP.constAccel r -> r -> r
forall r. ExprC r => r -> r -> r
$* (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
scalarPos r -> r -> r
forall r. ExprC r => r -> r -> r
$- DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
iPos))

--
velVecExpr :: PExpr
velVecExpr :: PExpr
velVecExpr = r -> r -> r
forall r. ExprC r => r -> r -> r
vec2D (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
ixVel r -> r -> r
forall r. ExprC r => r -> r -> r
$+ (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
QP.xConstAccel r -> r -> r
forall r. ExprC r => r -> r -> r
$* DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
time)) (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
iyVel r -> r -> r
forall r. ExprC r => r -> r -> r
$+ (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
QP.yConstAccel r -> r -> r
forall r. ExprC r => r -> r -> r
$* DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
time))

--
posVecExpr :: PExpr
posVecExpr :: PExpr
posVecExpr = r -> r -> r
forall r. ExprC r => r -> r -> r
vec2D
              (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
QP.ixPos r -> r -> r
forall r. ExprC r => r -> r -> r
$+ (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
ixVel r -> r -> r
forall r. ExprC r => r -> r -> r
$* DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
time) r -> r -> r
forall r. ExprC r => r -> r -> r
$+ r -> r
forall r. (ExprC r, LiteralC r) => r -> r
half (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
QP.xConstAccel r -> r -> r
forall r. ExprC r => r -> r -> r
$* r -> r
forall r. (ExprC r, LiteralC r) => r -> r
square (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
time)))
              (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
QP.iyPos r -> r -> r
forall r. ExprC r => r -> r -> r
$+ (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
iyVel r -> r -> r
forall r. ExprC r => r -> r -> r
$* DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
time) r -> r -> r
forall r. ExprC r => r -> r -> r
$+ r -> r
forall r. (ExprC r, LiteralC r) => r -> r
half (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
QP.yConstAccel r -> r -> r
forall r. ExprC r => r -> r -> r
$* r -> r
forall r. (ExprC r, LiteralC r) => r -> r
square (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
time)))

--
landPosExpr :: PExpr
landPosExpr :: PExpr
landPosExpr = Integer -> r
forall r. LiteralC r => Integer -> r
exactDbl Integer
2 r -> r -> r
forall r. ExprC r => r -> r -> r
$* r -> r
forall r. (ExprC r, LiteralC r) => r -> r
square (ConstrConcept -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy ConstrConcept
launSpeed) r -> r -> r
forall r. ExprC r => r -> r -> r
$* r -> r
forall r. ExprC r => r -> r
sin (ConstrConcept -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy ConstrConcept
launAngle) r -> r -> r
forall r. ExprC r => r -> r -> r
$* r -> r
forall r. ExprC r => r -> r
cos (ConstrConcept -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy ConstrConcept
launAngle) r -> r -> r
forall r. ExprC r => r -> r -> r
$/ ConstQDef -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy ConstQDef
gravitationalAccelConst

-- Helper expressions that represent the vectors of quantities as components
positionXY, velocityXY, accelerationXY, constAccelXY :: PExpr
positionXY :: PExpr
positionXY     = DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
position     r -> r -> r
forall r. ExprC r => r -> r -> r
$= r -> r -> r
forall r. ExprC r => r -> r -> r
vec2D (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
xPos)           (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
yPos)
velocityXY :: PExpr
velocityXY     = DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
velocity     r -> r -> r
forall r. ExprC r => r -> r -> r
$= r -> r -> r
forall r. ExprC r => r -> r -> r
vec2D (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
xVel)           (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
yVel)
accelerationXY :: PExpr
accelerationXY = DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
acceleration r -> r -> r
forall r. ExprC r => r -> r -> r
$= r -> r -> r
forall r. ExprC r => r -> r -> r
vec2D (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
xAccel)         (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
yAccel)
constAccelXY :: PExpr
constAccelXY   = DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
constAccelV  r -> r -> r
forall r. ExprC r => r -> r -> r
$= r -> r -> r
forall r. ExprC r => r -> r -> r
vec2D (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
QP.xConstAccel) (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
QP.yConstAccel)

-- Expressions for Lesson
horizVel, horizPos :: PExpr
horizVel :: PExpr
horizVel = DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
xVel r -> r -> r
forall r. ExprC r => r -> r -> r
$= DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
ixVel
horizPos :: PExpr
horizPos = DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
xPos r -> r -> r
forall r. ExprC r => r -> r -> r
$= DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
QP.ixPos r -> r -> r
forall r. ExprC r => r -> r -> r
$+ (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
ixVel r -> r -> r
forall r. ExprC r => r -> r -> r
$* DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
time)

vertVel, vertPos, vertNoTime :: PExpr
vertVel :: PExpr
vertVel = DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
yVel r -> r -> r
forall r. ExprC r => r -> r -> r
$= DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
iyVel r -> r -> r
forall r. ExprC r => r -> r -> r
$- (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
gravitationalAccel r -> r -> r
forall r. ExprC r => r -> r -> r
$* DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
time)
vertPos :: PExpr
vertPos = DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
yPos r -> r -> r
forall r. ExprC r => r -> r -> r
$= DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
QP.iyPos r -> r -> r
forall r. ExprC r => r -> r -> r
$+ (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
iyVel r -> r -> r
forall r. ExprC r => r -> r -> r
$* DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
time) r -> r -> r
forall r. ExprC r => r -> r -> r
$- (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
gravitationalAccel r -> r -> r
forall r. ExprC r => r -> r -> r
$* r -> r
forall r. (ExprC r, LiteralC r) => r -> r
square (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
time) r -> r -> r
forall r. ExprC r => r -> r -> r
$/ Integer -> r
forall r. LiteralC r => Integer -> r
exactDbl Integer
2)
vertNoTime :: PExpr
vertNoTime = r -> r
forall r. (ExprC r, LiteralC r) => r -> r
square (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
yVel) r -> r -> r
forall r. ExprC r => r -> r -> r
$= r -> r
forall r. (ExprC r, LiteralC r) => r -> r
square (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
iyVel) r -> r -> r
forall r. ExprC r => r -> r -> r
$- (Integer -> r
forall r. LiteralC r => Integer -> r
exactDbl Integer
2 r -> r -> r
forall r. ExprC r => r -> r -> r
$* DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
gravitationalAccel r -> r -> r
forall r. ExprC r => r -> r -> r
$* (DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
yPos r -> r -> r
forall r. ExprC r => r -> r -> r
$- DefinedQuantityDict -> r
forall c. (IsChunk c, HasSymbol c) => c -> r
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
QP.iyPos))

lcrectVel, lcrectPos, lcrectNoTime, lchorizVel, lchorizPos, lcvertVel, lcvertPos, lcvertNoTime :: LabelledContent
lcrectVel :: LabelledContent
lcrectVel = ModelExpr -> Reference -> LabelledContent
lbldExpr (DefinedQuantityDict -> ModelExpr
forall c. (IsChunk c, HasSymbol c) => c -> ModelExpr
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
speed ModelExpr -> ModelExpr -> ModelExpr
forall r. ExprC r => r -> r -> r
$= ModelExpr
PExpr
speed') (String -> Reference
makeEqnRef String
"rectVel")
lcrectPos :: LabelledContent
lcrectPos = ModelExpr -> Reference -> LabelledContent
lbldExpr (DefinedQuantityDict -> ModelExpr
forall c. (IsChunk c, HasSymbol c) => c -> ModelExpr
forall r c. (ExprC r, IsChunk c, HasSymbol c) => c -> r
sy DefinedQuantityDict
scalarPos ModelExpr -> ModelExpr -> ModelExpr
forall r. ExprC r => r -> r -> r
$= ModelExpr
PExpr
scalarPos') (String -> Reference
makeEqnRef String
"rectPos")
lcrectNoTime :: LabelledContent
lcrectNoTime = ModelExpr -> Reference -> LabelledContent
lbldExpr ModelExpr
PExpr
rectNoTime (String -> Reference
makeEqnRef String
"rectNoTime")
lchorizVel :: LabelledContent
lchorizVel = ModelExpr -> Reference -> LabelledContent
lbldExpr ModelExpr
PExpr
horizVel (String -> Reference
makeEqnRef String
"horizVel")
lchorizPos :: LabelledContent
lchorizPos = ModelExpr -> Reference -> LabelledContent
lbldExpr ModelExpr
PExpr
horizPos (String -> Reference
makeEqnRef String
"horizPos")
lcvertVel :: LabelledContent
lcvertVel = ModelExpr -> Reference -> LabelledContent
lbldExpr ModelExpr
PExpr
vertVel (String -> Reference
makeEqnRef String
"vertVel")
lcvertPos :: LabelledContent
lcvertPos = ModelExpr -> Reference -> LabelledContent
lbldExpr ModelExpr
PExpr
vertPos (String -> Reference
makeEqnRef String
"vertPos")
lcvertNoTime :: LabelledContent
lcvertNoTime = ModelExpr -> Reference -> LabelledContent
lbldExpr ModelExpr
PExpr
vertNoTime (String -> Reference
makeEqnRef String
"vertNoTime")

-- References --
eqnRefs :: [Reference]
eqnRefs :: [Reference]
eqnRefs = (LabelledContent -> Reference) -> [LabelledContent] -> [Reference]
forall a b. (a -> b) -> [a] -> [b]
map LabelledContent -> Reference
forall r.
(IsChunk r, HasRefAddress r, HasShortName r) =>
r -> Reference
ref [LabelledContent
lcrectVel, LabelledContent
lcrectPos, LabelledContent
lcrectNoTime, LabelledContent
lchorizVel, LabelledContent
lchorizPos, LabelledContent
lcvertVel, LabelledContent
lcvertPos, LabelledContent
lcvertNoTime]