-- | Defines concepts used in the field of physics.
module Data.Drasil.Concepts.Physics where
--This is obviously a bad name, but for now it will do until we come
--  up with a better one.
import Language.Drasil hiding (space)
import qualified Language.Drasil.Sentence.Combinators as S
import qualified Language.Drasil.NounPhrase.Combinators as NP
import Language.Drasil.Chunk.Concept.NamedCombinators

import Data.Drasil.Domains (mathematics, physics)
import Data.Drasil.Concepts.Documentation (property, value)
import Data.Drasil.Concepts.Math (xComp, xDir, yComp, yDir, point, axis, cartesian)
import Control.Lens((^.)) --need for parametrization hack
import qualified Data.Drasil.Quantities.PhysicalProperties as QPP (mass)
import Data.Drasil.Citations (dampingSource)
import Data.Drasil.Concepts.Education (mechanics)

-- | Collects all physics-related concepts.
physicCon :: [ConceptChunk]
physicCon :: [ConceptChunk]
physicCon = [ConceptChunk
acceleration, ConceptChunk
angAccel, ConceptChunk
angDisp, ConceptChunk
angVelo, ConceptChunk
angFreq, ConceptChunk
angular, ConceptChunk
chgInVelocity,
  ConceptChunk
cohesion, ConceptChunk
collision, ConceptChunk
compression, ConceptChunk
constAccel, ConceptChunk
constAccelV, ConceptChunk
damping, ConceptChunk
dampingCoeff,
  ConceptChunk
displacement, ConceptChunk
distance, ConceptChunk
elasticity, ConceptChunk
energy, ConceptChunk
fSpeed, ConceptChunk
fVel, ConceptChunk
fbd, ConceptChunk
force,
  ConceptChunk
friction, ConceptChunk
gravity, ConceptChunk
gravitationalAccel, ConceptChunk
gravitationalConst, ConceptChunk
gravitationalMagnitude, ConceptChunk
height, 
  ConceptChunk
iPos, ConceptChunk
iSpeed, ConceptChunk
iVel, ConceptChunk
impulseS, ConceptChunk
impulseV, ConceptChunk
isotropy, ConceptChunk
ixPos, ConceptChunk
ixVel, ConceptChunk
ixSpeed, ConceptChunk
iySpeed, ConceptChunk
iyPos, 
  ConceptChunk
iyVel, ConceptChunk
joint, ConceptChunk
kEnergy, ConceptChunk
linAccel, ConceptChunk
linDisp, ConceptChunk
linVelo, ConceptChunk
linear, ConceptChunk
mechEnergy,
  ConceptChunk
momentOfInertia, ConceptChunk
position, ConceptChunk
potEnergy, ConceptChunk
pressure, ConceptChunk
restitutionCoef, ConceptChunk
rectilinear,
  ConceptChunk
rigidBody, ConceptChunk
scalarAccel, ConceptChunk
scalarPos, ConceptChunk
shm, ConceptChunk
space, ConceptChunk
speed, ConceptChunk
stiffCoeff, ConceptChunk
strain, ConceptChunk
stress, ConceptChunk
tension,
  ConceptChunk
time, ConceptChunk
torque, ConceptChunk
velocity, ConceptChunk
weight, ConceptChunk
xAccel, ConceptChunk
xConstAccel, ConceptChunk
xDist, ConceptChunk
xPos, ConceptChunk
xVel,
  ConceptChunk
yAccel, ConceptChunk
yConstAccel, ConceptChunk
yDist, ConceptChunk
yPos, ConceptChunk
yVel, ConceptChunk
momentum, ConceptChunk
chgMomentum, ConceptChunk
moment, ConceptChunk
fOfGravity, ConceptChunk
positionVec,
  ConceptChunk
pendulum, ConceptChunk
body, ConceptChunk
kinematics, ConceptChunk
frequency, ConceptChunk
period, ConceptChunk
motion, ConceptChunk
horizontalMotion, ConceptChunk
verticalMotion]

-- | Collects all physics-related common ideas (like a concept, but with no definition).
physicCon' :: [CI]
physicCon' :: [CI]
physicCon' = [CI
oneD, CI
twoD, CI
threeD]

-- * Physics Concepts
--
-- $PhysicCon
--
-- In alphabetical order.

acceleration, angAccel, angDisp, angVelo, angFreq, angular, chgInVelocity, cohesion,
  collision, compression, constAccel, constAccelV, damping, dampingCoeff, displacement,
  distance, elasticity, energy, fSpeed, fVel, fbd, force, friction, gravity,
  gravitationalAccel, gravitationalConst, gravitationalMagnitude, height, iPos, iSpeed, 
  iVel, impulseS, impulseV, isotropy, ixPos, ixVel, ixSpeed, iySpeed, iyPos, iyVel, joint, 
  kEnergy, linAccel, linDisp, linVelo, linear, mechEnergy, momentOfInertia, position, 
  potEnergy, pressure, rectilinear, restitutionCoef, rigidBody, scalarAccel, scalarPos, shm,
  space, speed, stiffCoeff, strain, stress, tension, time, torque, velocity, weight,
  xAccel, xConstAccel, xDist, xPos, xVel, yAccel, yConstAccel, yDist,
  yPos, yVel, momentum, moment, fOfGravity, positionVec, pendulum, body,
  kinematics, frequency, period, motion, horizontalMotion, verticalMotion, chgMomentum :: ConceptChunk

oneD, twoD, threeD :: CI
oneD :: CI
oneD   = String -> NP -> String -> [IdeaDict] -> CI
commonIdeaWithDict String
"oneD"   (String -> NP
cn String
"one-dimensional")   String
"1D" [IdeaDict
mathematics, IdeaDict
physics]
twoD :: CI
twoD   = String -> NP -> String -> [IdeaDict] -> CI
commonIdeaWithDict String
"twoD"   (String -> NP
cn String
"two-dimensional")   String
"2D" [IdeaDict
mathematics, IdeaDict
physics]
threeD :: CI
threeD = String -> NP -> String -> [IdeaDict] -> CI
commonIdeaWithDict String
"threeD" (String -> NP
cn String
"three-dimensional") String
"3D" [IdeaDict
mathematics, IdeaDict
physics]

acceleration :: ConceptChunk
acceleration = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"acceleration" (String -> NP
cn' String
"acceleration")
  (String -> Sentence
S String
"the rate of change of a body's" Sentence -> Sentence -> Sentence
+:+ forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
velocity)
angular :: ConceptChunk
angular = String -> NP -> String -> ConceptChunk
dcc String
"angular" (String -> NP
cn' String
"angular")
  String
"denoting physical properties or quantities measured with reference to or by means of an angle"
body :: ConceptChunk
body = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"body" (String -> NP
cnIES String
"body")
  (String -> Sentence
S String
"an object with" Sentence -> Sentence -> Sentence
+:+ forall n. NamedIdea n => n -> Sentence
phrase UnitalChunk
QPP.mass)
chgInVelocity :: ConceptChunk
chgInVelocity = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"chgInVelocity" (String -> NP
cn String
"change in velocity")
  (String -> Sentence
S String
"the" Sentence -> Sentence -> Sentence
+:+ forall n. NounPhrase n => n -> Sentence
phraseNP (ConceptChunk
chgInVelocity forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`ofA` ConceptChunk
rigidBody))
chgMomentum :: ConceptChunk
chgMomentum = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"chgMomentum" (String -> NP
cn' String
"change in momentum")
  (String -> Sentence
S String
"The rate of change of a body's" Sentence -> Sentence -> Sentence
+:+ forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
impulseV)  
collision :: ConceptChunk
collision = String -> NP -> String -> ConceptChunk
dcc String
"collision" (String -> NP
cn' String
"collision")
  String
"an encounter between particles resulting in an exchange or transformation of energy"
cohesion :: ConceptChunk
cohesion = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"cohesion" (String -> NP
cn String
"cohesion")
  (String -> Sentence
S String
"an attractive" Sentence -> Sentence -> Sentence
+:+ forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
force Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"between adjacent particles that holds the matter together")
compression :: ConceptChunk
compression = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"compression" (String -> NP
cn' String
"compression")
  (String -> Sentence
S String
"a" Sentence -> Sentence -> Sentence
+:+ forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
stress Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"that causes displacement of the body towards its center")
damping :: ConceptChunk
damping = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"damping" (String -> NP
pn' String
"damping")
  forall a b. (a -> b) -> a -> b
$ String -> Sentence
S String
"an influence within or upon an oscillatory system that has the effect of reducing," Sentence -> Sentence -> Sentence
+:+
  String -> Sentence
S String
"restricting or preventing its oscillations" Sentence -> Sentence -> Sentence
+:+ forall r. (Referable r, HasShortName r) => r -> Sentence
fromSource Citation
dampingSource
dampingCoeff :: ConceptChunk
dampingCoeff = String -> NP -> String -> ConceptChunk
dcc String
"dampingCoeff" (String -> NP
cn' String
"damping coefficient")
 String
"Quantity that characterizes a second order system's oscillatory response"
displacement :: ConceptChunk
displacement = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"displacement" (String -> NP
cn' String
"displacement")
  (String -> Sentence
S String
"the change in" Sentence -> Sentence -> Sentence
+:+ (ConceptChunk
position forall s a. s -> Getting a s a -> a
^. forall c. Definition c => Lens' c Sentence
defn))
distance :: ConceptChunk
distance = String -> NP -> String -> ConceptChunk
dcc String
"distance" (String -> NP
cn' String
"distance")
  String
"the interval measured along a path connecting two locations"
elasticity :: ConceptChunk
elasticity = String -> NP -> String -> ConceptChunk
dcc String
"elasticity" (String -> NP
cnIES String
"elasticity")
  String
"the ratio of the relative velocities of two colliding objects after and before a collision"
energy :: ConceptChunk
energy = String -> NP -> String -> ConceptChunk
dcc String
"energy" (String -> NP
cn String
"energy")
  String
"power derived from the utilization of physical or chemical resources"
fbd :: ConceptChunk
fbd = String -> NP -> String -> ConceptChunk
dcc String
"FBD" (String -> NP
cn' String
"free body diagram")
  (String
"a graphical illustration used to visualize the applied forces, movements, and resulting " forall a. [a] -> [a] -> [a]
++
   String
"reactions on a body in a steady state condition")
force :: ConceptChunk
force = String -> NP -> String -> ConceptChunk
dcc String
"force" (String -> NP
cn' String
"force")
  String
"an interaction that tends to produce change in the motion of an object"
frequency :: ConceptChunk
frequency = String -> NP -> String -> ConceptChunk
dcc String
"frequency" (String -> NP
cn' String
"frequency")
  String
"the number of occurrences of a repeating event per unit of time"
friction :: ConceptChunk
friction = String -> NP -> String -> ConceptChunk
dcc String
"friction" (String -> NP
cn' String
"friction")
  String
"the force resisting the relative motion of two surfaces"
fOfGravity :: ConceptChunk
fOfGravity = String -> NP -> String -> ConceptChunk
dcc String
"fOfGravity" (String -> NP
cn String
"force of gravity")
  String
"the force exerted by gravity on an object"
gravity :: ConceptChunk
gravity = String -> NP -> String -> ConceptChunk
dcc String
"gravity" (String -> NP
cn String
"gravity")
  String
"the force that attracts one physical body with mass to another"
gravitationalAccel :: ConceptChunk
gravitationalAccel = String -> NP -> String -> ConceptChunk
dcc String
"gravitationalAccel" (String -> NP
cn String
"gravitational acceleration")
  String
"the approximate acceleration due to gravity on Earth at sea level"
gravitationalConst :: ConceptChunk
gravitationalConst = String -> NP -> String -> ConceptChunk
dcc String
"gravitationalConst" (String -> NP
cn String
"gravitational constant")
  String
"the empirical physical constant used to show the force between two objects caused by gravity"
gravitationalMagnitude :: ConceptChunk
gravitationalMagnitude = String -> NP -> String -> ConceptChunk
dcc String
"gravitationalMagnitude" (String -> NP
cn String
"magnitude of gravitational acceleration")
  String
"the magnitude of the approximate acceleration due to gravity on Earth at sea level"
height :: ConceptChunk
height = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"height" (String -> NP
cn' String
"height")
  (String -> Sentence
S String
"the" Sentence -> Sentence -> Sentence
+:+ forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
distance Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"above a reference point for a point of interest")
horizontalMotion :: ConceptChunk
horizontalMotion = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"horizontalMotion" (String -> NP
cn String
"horizontal motion")
  (String -> Sentence
S String
"the result of the tendency of any object in motion to remain in motion at constant velocity")
isotropy :: ConceptChunk
isotropy = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"isotropy" (String -> NP
cn String
"isotropy")
  (String -> Sentence
S String
"a condition where the" Sentence -> Sentence -> Sentence
+:+ forall n. NounPhrase n => n -> Sentence
phraseNP (IdeaDict
value forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`ofA` IdeaDict
property) Sentence -> Sentence -> Sentence
`S.is`
   String -> Sentence
S String
"independent of the direction in which it is measured")
joint :: ConceptChunk
joint = String -> NP -> String -> ConceptChunk
dcc String
"joint" (String -> NP
cn' String
"joint")
  String
"a connection between two rigid bodies which allows movement with one or more degrees of freedom"
kEnergy :: ConceptChunk
kEnergy = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"kEnergy" (String -> NP
cn String
"kinetic energy")
  (String -> Sentence
S String
"measure" Sentence -> Sentence -> Sentence
`S.the_ofThe` forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
energy Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"a body possesses due to its motion")
kinematics :: ConceptChunk
kinematics = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"kinematics" (String -> NP
cn String
"kinematics")
  (String -> Sentence
S String
"branch" Sentence -> Sentence -> Sentence
`S.of_` forall n. NamedIdea n => n -> Sentence
phrase IdeaDict
mechanics Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"that describes the motion" Sentence -> Sentence -> Sentence
`S.of_` 
    String -> Sentence
S String
"objects without reference to the causes of motion")
linear :: ConceptChunk
linear = String -> NP -> String -> ConceptChunk
dcc String
"linear" (String -> NP
cn' String
"linear")
  String
"arranged in or extending along a straight or nearly straight line"
mechEnergy :: ConceptChunk
mechEnergy = String -> NP -> String -> ConceptChunk
dcc String
"mechEnergy" (String -> NP
cn String
"mechanical energy")
  String
"the energy that comes from motion and position"
momentum :: ConceptChunk
momentum = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"momentum" (String -> NP
cn String
"momentum")
  ( String -> Sentence
S String
"the quantity of motion" Sentence -> Sentence -> Sentence
`S.of_` String -> Sentence
S String
"a moving body, measured as a product" Sentence -> Sentence -> Sentence
`S.of_`
  forall n. NounPhrase n => n -> Sentence
phraseNP (UnitalChunk
QPP.mass forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`and_` ConceptChunk
velocity))
moment :: ConceptChunk
moment = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"moment" (String -> NP
cn' String
"moment")
  (String -> Sentence
S String
"A measure of the tendency of a body to rotate about a specific" Sentence -> Sentence -> Sentence
+:+ forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
point Sentence -> Sentence -> Sentence
`S.or_` forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
axis)
motion :: ConceptChunk
motion = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"motion" (String -> NP
cn String
"motion")
  (String -> Sentence
S String
"change in position of a physical body over time")
period :: ConceptChunk
period = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"period" (String -> NP
cn' String
"period")
   (String -> Sentence
S String
"the" Sentence -> Sentence -> Sentence
+:+ forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
time Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"required for one complete cycle of vibration to pass a given point.")
pendulum :: ConceptChunk
pendulum = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"pendulum" (String -> NP
cn String
"pendulum")
 (String -> Sentence
S String
"a body suspended from a fixed support so that it swings freely back and forth under the influence" 
       Sentence -> Sentence -> Sentence
`S.of_` forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
gravity)
position :: ConceptChunk
position = String -> NP -> String -> ConceptChunk
dcc String
"position" (String -> NP
cn' String
"position")
  String
"an object's location relative to a reference point"
positionVec :: ConceptChunk
positionVec = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"positionVec" (String -> NP
cn' String
"position vector")
   (String -> Sentence
S String
"a vector from the origin" Sentence -> Sentence -> Sentence
`S.ofThe` forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
cartesian Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"defined"
    Sentence -> Sentence -> Sentence
`S.toThe` forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
point Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"where the" Sentence -> Sentence -> Sentence
+:+ forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
force Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"is applied")
potEnergy :: ConceptChunk
potEnergy = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"potEnergy" (String -> NP
cn String
"potential energy")
  (String -> Sentence
S String
"measure" Sentence -> Sentence -> Sentence
`S.the_ofThe` forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
energy Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"held by an object because of its" Sentence -> Sentence -> Sentence
+:+ forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
position)
pressure :: ConceptChunk
pressure = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"pressure" (String -> NP
cn' String
"pressure")
  (String -> Sentence
S String
"a" Sentence -> Sentence -> Sentence
+:+ forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
force Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"exerted over an area")
rectilinear :: ConceptChunk
rectilinear = String -> NP -> String -> ConceptChunk
dcc String
"rectilinear" (String -> NP
cn String
"rectilinear")
  String
"occurring in one dimension"
rigidBody :: ConceptChunk
rigidBody = String -> NP -> String -> ConceptChunk
dcc String
"rigidBody" (String -> NP
cnIES String
"rigid body")
  String
"a solid body in which deformation is neglected"
space :: ConceptChunk
space = String -> NP -> String -> ConceptChunk
dcc String
"space" (String -> NP
cn' String
"space")
  String
"a two-dimensional extent where objects and events have relative positions and directions"
scalarAccel :: ConceptChunk
scalarAccel = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"scalarAccel" (String -> NP
cn' String
"scalar acceleration")
  (String -> Sentence
S String
"magnitude" Sentence -> Sentence -> Sentence
`S.the_ofThe` forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
acceleration Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"vector")
scalarPos :: ConceptChunk
scalarPos = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"scalarPos" (String -> NP
cn' String
"scalar position")
  (String -> Sentence
S String
"magnitude" Sentence -> Sentence -> Sentence
`S.the_ofThe` forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
position Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"vector")
shm :: ConceptChunk
shm = String -> NP -> String -> ConceptChunk
dcc String
"SHM" (String -> NP
nounPhraseSP String
"simple harmonic motion") (String
"Periodic motion through an equilibrium position. " forall a. [a] -> [a] -> [a]
++ 
                                                        String
"The motion is sinusoidal in time and demonstrates a" forall a. [a] -> [a] -> [a]
++ 
                                                        String
" single resonant frequency") -- source: Wikipedia 
speed :: ConceptChunk
speed = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"speed" (String -> NP
cn' String
"speed")
  (String -> Sentence
S String
"magnitude" Sentence -> Sentence -> Sentence
`S.the_ofThe` forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
velocity Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"vector")
stiffCoeff :: ConceptChunk
stiffCoeff = String -> NP -> String -> ConceptChunk
dcc String
"stiffnessCoeff" (String -> NP
cn' String
"stiffness coefficient") 
 String
"Quantity that characterizes a spring's stiffness"
strain :: ConceptChunk
strain = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"strain" (String -> NP
cn' String
"strain") 
  (String -> Sentence
S String
"a measure of deformation representing the" Sentence -> Sentence -> Sentence
+:+ forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
displacement Sentence -> Sentence -> Sentence
+:+
   String -> Sentence
S String
"between particles in the body relative to a reference length")
  --definition of strain used in SSP, can be made clearer
stress :: ConceptChunk
stress = String -> NP -> String -> ConceptChunk
dcc String
"stress" (String -> NP
cn''' String
"stress")
  String
"the ratio of an applied force to a cross-sectional area"
  --definition of stress used in SSP, can be made clearer
tension :: ConceptChunk
tension = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"tension" (String -> NP
cn' String
"tension")
  (String -> Sentence
S String
"a" Sentence -> Sentence -> Sentence
+:+ forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
stress Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"that causes displacement of the body away from its center")
time :: ConceptChunk
time = String -> NP -> String -> ConceptChunk
dcc String
"time" (String -> NP
cn' String
"time")
  String
"the indefinite continued progress of existence and events in the past, present, and future regarded as a whole"
torque :: ConceptChunk
torque = String -> NP -> String -> ConceptChunk
dcc String
"torque" (String -> NP
cn' String
"torque")
  String
"a twisting force that tends to cause rotation"
velocity :: ConceptChunk
velocity = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"velocity" (String -> NP
cnIES String
"velocity")
  (String -> Sentence
S String
"the rate of change of a body's" Sentence -> Sentence -> Sentence
+:+ forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
position)
verticalMotion :: ConceptChunk
verticalMotion = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"verticalMotion" (String -> NP
cn String
"vertical motion")
  (String -> Sentence
S String
" the movement of the object against the gravitational pull")
weight :: ConceptChunk
weight = String -> NP -> String -> ConceptChunk
dcc String
"weight" (String -> NP
cn' String
"weight")
  String
"the gravitational force acting on an object"


-- Some variants of distance, speed, velocity, and scalar acceleration
-- FIXME: Complete all variants?
-- FIXME: Pull out commonalities?

xDist :: ConceptChunk
xDist = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"xDist" (ConceptChunk
distance forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`inThe` ConceptChunk
xDir) (forall n. NounPhrase n => n -> Sentence
atStartNP forall a b. (a -> b) -> a -> b
$ ConceptChunk
distance forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`inThe` ConceptChunk
xDir)
yDist :: ConceptChunk
yDist = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"yDist" (ConceptChunk
distance forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`inThe` ConceptChunk
yDir) (forall n. NounPhrase n => n -> Sentence
atStartNP forall a b. (a -> b) -> a -> b
$ ConceptChunk
distance forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`inThe` ConceptChunk
yDir)

iPos :: ConceptChunk
iPos = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"iPos" (String -> NP
cn String
"initial position") (String -> Sentence
S String
"The" Sentence -> Sentence -> Sentence
+:+ forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
position Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"at the body's initial point")
xPos :: ConceptChunk
xPos = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"xPos" (ConceptChunk
xComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
position) (forall n. NounPhrase n => n -> Sentence
atStartNP forall a b. (a -> b) -> a -> b
$ NP -> NP
NP.the forall a b. (a -> b) -> a -> b
$ ConceptChunk
xComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
position)
yPos :: ConceptChunk
yPos = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"yPos" (ConceptChunk
yComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
position) (forall n. NounPhrase n => n -> Sentence
atStartNP forall a b. (a -> b) -> a -> b
$ NP -> NP
NP.the forall a b. (a -> b) -> a -> b
$ ConceptChunk
yComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
position)

ixPos :: ConceptChunk
ixPos = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"ixPos" (ConceptChunk
xComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
iPos) (forall n. NounPhrase n => n -> Sentence
atStartNP forall a b. (a -> b) -> a -> b
$ NP -> NP
NP.the forall a b. (a -> b) -> a -> b
$ ConceptChunk
xComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
iPos)
iyPos :: ConceptChunk
iyPos = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"iyPos" (ConceptChunk
yComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
iPos) (forall n. NounPhrase n => n -> Sentence
atStartNP forall a b. (a -> b) -> a -> b
$ NP -> NP
NP.the forall a b. (a -> b) -> a -> b
$ ConceptChunk
yComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
iPos)

fSpeed :: ConceptChunk
fSpeed = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"fSpeed" (String -> NP
cn String
"final speed")   (String -> Sentence
S String
"The" Sentence -> Sentence -> Sentence
+:+ forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
speed Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"at the body's final point")
iSpeed :: ConceptChunk
iSpeed = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"iSpeed" (String -> NP
cn String
"initial speed") (String -> Sentence
S String
"The" Sentence -> Sentence -> Sentence
+:+ forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
speed Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"at the body's initial point")

ixSpeed :: ConceptChunk
ixSpeed = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"ixSpeed" (ConceptChunk
xComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
iSpeed) (forall n. NounPhrase n => n -> Sentence
atStartNP forall a b. (a -> b) -> a -> b
$ NP -> NP
NP.the forall a b. (a -> b) -> a -> b
$ ConceptChunk
xComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
iSpeed)
iySpeed :: ConceptChunk
iySpeed = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"iySpeed" (ConceptChunk
yComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
iSpeed) (forall n. NounPhrase n => n -> Sentence
atStartNP forall a b. (a -> b) -> a -> b
$ NP -> NP
NP.the forall a b. (a -> b) -> a -> b
$ ConceptChunk
yComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
iSpeed)

fVel :: ConceptChunk
fVel = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"fVel" (String -> NP
cn String
"final velocity")   (String -> Sentence
S String
"The" Sentence -> Sentence -> Sentence
+:+ forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
velocity Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"at the body's final point")
iVel :: ConceptChunk
iVel = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"iVel" (String -> NP
cn String
"initial velocity") (String -> Sentence
S String
"The" Sentence -> Sentence -> Sentence
+:+ forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
velocity Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"at the body's initial point")
xVel :: ConceptChunk
xVel = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"xVel" (ConceptChunk
xComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
velocity) (forall n. NounPhrase n => n -> Sentence
atStartNP forall a b. (a -> b) -> a -> b
$ NP -> NP
NP.the forall a b. (a -> b) -> a -> b
$ ConceptChunk
xComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
velocity)
yVel :: ConceptChunk
yVel = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"yVel" (ConceptChunk
yComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
velocity) (forall n. NounPhrase n => n -> Sentence
atStartNP forall a b. (a -> b) -> a -> b
$ NP -> NP
NP.the forall a b. (a -> b) -> a -> b
$ ConceptChunk
yComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
velocity)

ixVel :: ConceptChunk
ixVel = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"ixVel" (ConceptChunk
xComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
iVel) (forall n. NounPhrase n => n -> Sentence
atStartNP forall a b. (a -> b) -> a -> b
$ NP -> NP
NP.the forall a b. (a -> b) -> a -> b
$ ConceptChunk
xComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
iVel)
iyVel :: ConceptChunk
iyVel = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"iyVel" (ConceptChunk
yComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
iVel) (forall n. NounPhrase n => n -> Sentence
atStartNP forall a b. (a -> b) -> a -> b
$ NP -> NP
NP.the forall a b. (a -> b) -> a -> b
$ ConceptChunk
yComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
iVel)

xAccel :: ConceptChunk
xAccel = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"xScalAcc" (ConceptChunk
xComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
acceleration) (forall n. NounPhrase n => n -> Sentence
atStartNP forall a b. (a -> b) -> a -> b
$ NP -> NP
NP.the forall a b. (a -> b) -> a -> b
$ ConceptChunk
xComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
acceleration)
yAccel :: ConceptChunk
yAccel = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"yScalAcc" (ConceptChunk
yComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
acceleration) (forall n. NounPhrase n => n -> Sentence
atStartNP forall a b. (a -> b) -> a -> b
$ NP -> NP
NP.the forall a b. (a -> b) -> a -> b
$ ConceptChunk
yComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
acceleration)

constAccelV :: ConceptChunk
constAccelV = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"constAccelV" (String -> NP
cn String
"constant acceleration vector") (String -> Sentence
S String
"The" Sentence -> Sentence -> Sentence
+:+ forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
constAccel Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"vector")
xConstAccel :: ConceptChunk
xConstAccel = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"xConstAccel" (ConceptChunk
xComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
constAccel) (forall n. NounPhrase n => n -> Sentence
atStartNP forall a b. (a -> b) -> a -> b
$ NP -> NP
NP.the forall a b. (a -> b) -> a -> b
$ ConceptChunk
xComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
constAccel)
yConstAccel :: ConceptChunk
yConstAccel = String -> NP -> Sentence -> ConceptChunk
dccWDS String
"yConstAccel" (ConceptChunk
yComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
constAccel) (forall n. NounPhrase n => n -> Sentence
atStartNP forall a b. (a -> b) -> a -> b
$ NP -> NP
NP.the forall a b. (a -> b) -> a -> b
$ ConceptChunk
yComp forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
`of_` ConceptChunk
constAccel)


--FIXME: COMBINATION HACK (for all below)
--FIXME: should use compoundPhrase instead? Or better yet, use combineNINI instead of interacting with the terms directly?
angDisp :: ConceptChunk
angDisp = String -> NP -> String -> ConceptChunk
dcc String
"angularDisplacement" (forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
combineNINI ConceptChunk
angular ConceptChunk
displacement)
  String
"the angle through which an object moves on a circular path"
angVelo :: ConceptChunk
angVelo = String -> NP -> String -> ConceptChunk
dcc String
"angularVelocity" (forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
combineNINI ConceptChunk
angular ConceptChunk
velocity)
  String
"the rate of change of angular position of a rotating body"
angAccel :: ConceptChunk
angAccel = String -> NP -> String -> ConceptChunk
dcc String
"angularAcceleration" (forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
combineNINI ConceptChunk
angular ConceptChunk
acceleration)
  String
"the rate of change of angular velocity"
constAccel :: ConceptChunk
constAccel = String -> NP -> String -> ConceptChunk
dcc String
"constantAcceleration" (String -> NP
cn String
"constant acceleration")
  String
"a one-dimensional acceleration that is constant"
linDisp :: ConceptChunk
linDisp = String -> NP -> String -> ConceptChunk
dcc String
"linearDisplacement" (forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
combineNINI ConceptChunk
linear ConceptChunk
displacement) 
  String
"movement in one direction along a single axis"
linVelo :: ConceptChunk
linVelo = String -> NP -> String -> ConceptChunk
dcc String
"linearVelocity" (forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
combineNINI ConceptChunk
linear ConceptChunk
velocity) 
  String
"the speed of a moving object, dependent on the perspective taken"
linAccel :: ConceptChunk
linAccel = String -> NP -> String -> ConceptChunk
dcc String
"linearAcceleration" (forall c d. (NamedIdea c, NamedIdea d) => c -> d -> NP
combineNINI ConceptChunk
linear ConceptChunk
acceleration) 
  String
"the rate of change of velocity without a change in direction"

-- The following feel like they're missing something/need to be more
-- descriptive. See issue tracker for details.  
-- FIXME: plurals below?
restitutionCoef :: ConceptChunk
restitutionCoef = String -> NP -> String -> ConceptChunk
dcc String
"restitutionCoef" (String -> NP
cn String
"coefficient of restitution")
  String
"a measure of the restitution of a collision between two objects"
momentOfInertia :: ConceptChunk
momentOfInertia = String -> NP -> String -> ConceptChunk
dcc String
"momentOfInertia" (String -> NP
cn String
"moment of inertia")
  String
"a quantity expressing a body's tendency to resist angular acceleration"
angFreq :: ConceptChunk
angFreq = String -> NP -> String -> ConceptChunk
dcc String
"angularFrequency" (String -> NP
cn String
"angular frequency")
  String
"the frequency of a periodic process, wave system etc, per unit time."
--FIXME: These two should be built off "impulse"
impulseV :: ConceptChunk
impulseV = String -> NP -> String -> ConceptChunk
dcc String
"impulseV" (String -> NP
cn String
"impulse (vector)")
  String
"a force acting briefly on a body and producing a finite change of momentum in a given direction" 
impulseS :: ConceptChunk
impulseS = String -> NP -> String -> ConceptChunk
dcc String
"impulseS" (String -> NP
cn String
"impulse (scalar)")
  String
"a force acting briefly on a body and producing a finite change of momentum"