dimensional-1.5: examples/NewtonianMechanics.hs
{-# LANGUAGE NoImplicitPrelude #-}
module NewtonianMechanics where
import Numeric.Units.Dimensional.Prelude
translationalKineticEnergy :: (Fractional a) => Mass a -> Velocity a -> Energy a
translationalKineticEnergy m v = m * v ^ pos2 / _2
translationalWork :: (Num a) => Force a -> Length a -> Energy a
translationalWork f d = f * d
translationalMomentum :: (Num a) => Mass a -> Velocity a -> Momentum a
translationalMomentum m v = m * v
translationalPower :: (Num a) => Force a -> Velocity a -> Power a
translationalPower f v = f * v
forceFromChangeInMomentum :: (Fractional a) => Momentum a -> Time a -> Force a
forceFromChangeInMomentum dp dt = dp / dt
rotationalKineticEnergy :: (Fractional a) => MomentOfInertia a -> AngularVelocity a -> Energy a
rotationalKineticEnergy i w = i * w ^ pos2 / _2
rotationalWork :: (Num a) => Torque a -> PlaneAngle a -> Energy a
rotationalWork t th = t * th
rotationalMomentum :: (Num a) => MomentOfInertia a -> AngularVelocity a -> AngularMomentum a
rotationalMomentum i w = i * w
rotationalPower :: (Num a) => Torque a -> AngularVelocity a -> Power a
rotationalPower t w = t * w
torque :: (Num a) => Force a -> Length a -> Torque a
torque r f = r * f
torqueFromChangeInMomentum :: (Fractional a) => AngularMomentum a -> Time a -> Torque a
torqueFromChangeInMomentum dL dt = dL / dt