packages feed

aviation-cessna172-weight-balance (empty) → 0.0.2

raw patch · 8 files changed

+313/−0 lines, 8 filesdep +aviation-unitsdep +aviation-weight-balancedep +basesetup-changed

Dependencies added: aviation-units, aviation-weight-balance, base, lens

Files

+ LICENCE view
@@ -0,0 +1,31 @@+Copyright (c) 2017-2019, Commonwealth Scientific and Industrial Research Organisation+Copyright (c) 2019-2021, Tony Morris++All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are met:++    * Redistributions of source code must retain the above copyright+      notice, this list of conditions and the following disclaimer.++    * Redistributions in binary form must reproduce the above+      copyright notice, this list of conditions and the following+      disclaimer in the documentation and/or other materials provided+      with the distribution.++    * Neither the name of QFPL nor the names of other+      contributors may be used to endorse or promote products derived+      from this software without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ aviation-cessna172-weight-balance.cabal view
@@ -0,0 +1,42 @@+name:               aviation-cessna172-weight-balance+version:            0.0.2+license:            BSD3+license-file:       LICENCE+author:             Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>, Joshua Morris <ɯoɔ˙lᴉɐɯƃ@llǝʞsɐɥ+sᴉɹɹoɯuɥoɾɐnɥsoɾ>+maintainer:         Tony Morris, Joshua Morris+copyright:          Copyright (c) 2021, Tony Morris+synopsis:           Weight and Balance for the Cessna 172 aircraft in aviation.+category:           Aviation+description:+  Weight and Balance for the Cessna 172 aircraft in aviation.+homepage:           https://gitlab.com/tonymorris/aviation-cessna172-weight-balance+bug-reports:        https://gitlab.com/tonymorris/aviation-cessna172-weight-balance/issues+cabal-version:      >= 1.10+build-type:         Simple+extra-source-files: changelog++source-repository   head+  type:             git+  location:         git@gitlab.com:tonymorris/aviation-cessna172-weight-balance.git++library+  default-language:+                    Haskell2010++  build-depends:+                    base >= 4.8 && < 5+                    , lens >= 4.15 && < 5+                    , aviation-weight-balance >= 0.0.2 && < 1+                    , aviation-units >= 0.0.2 && < 1++  ghc-options:+                    -Wall++  hs-source-dirs:+                    src++  exposed-modules:+                    Data.Aviation.C172.WB+                    Data.Aviation.C172.WB.C172AircraftArms+                    Data.Aviation.C172.WB.C172Arms+                    Data.Aviation.C172.WB.C172MomentEnvelope
+ changelog view
@@ -0,0 +1,7 @@+0.0.2++* Update GHC++0.0.1++* Initial release
+ src/Data/Aviation/C172/WB.hs view
@@ -0,0 +1,7 @@+module Data.Aviation.C172.WB(+  module A+) where++import Data.Aviation.C172.WB.C172Arms as A+import Data.Aviation.C172.WB.C172AircraftArms as A+import Data.Aviation.C172.WB.C172MomentEnvelope as A
+ src/Data/Aviation/C172/WB/C172AircraftArms.hs view
@@ -0,0 +1,105 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE FlexibleInstances #-}++module Data.Aviation.C172.WB.C172AircraftArms(+  C172AircraftArms(..)+, HasC172AircraftArms(..)+, bewC172AircraftArms+, zfwMoment+, ffwMoment+, ufwMoment+, totalC172Moment+) where++import Control.Applicative(Applicative((<*>), pure))+import Control.Category((.))+import Control.Lens(makeClassy, lens, (^.), (.~), (&))+import Data.Aviation.C172.WB.C172Arms(C172Arms, HasC172Arms(c172Arms), fuel, c172ArmsPOH)+import Data.Aviation.Units(Pounds(pounds))+import Data.Aviation.WB(ArmStatic)+import Data.Aviation.WB.Arm(Arm, HasArmStatic, staticArm)+import Data.Aviation.WB.Weight(HasWeight(weight))+import Data.Aviation.WB.Moment(Moment, momentX)+import Data.Eq(Eq)+import Data.Foldable(Foldable(foldr))+import Data.Functor(Functor(fmap), (<$>))+import Data.Ord(Ord)+import Data.Traversable(Traversable(traverse))+import Prelude(Show)++data C172AircraftArms a =+  C172AircraftArms {+    _basicEmptyWeight ::+      a+  , c172Arms_ ::+      C172Arms a+  }+  deriving (Eq, Ord, Show)++makeClassy ''C172AircraftArms++instance HasC172Arms (C172AircraftArms a) a where+  c172Arms =+    lens+      (\(C172AircraftArms _ c) -> c)+      (\(C172AircraftArms c _) a -> C172AircraftArms c a)++instance Functor C172AircraftArms where+  fmap k (C172AircraftArms c x) =+    C172AircraftArms (k c) (fmap k x)++instance Applicative C172AircraftArms where+  pure a =+    C172AircraftArms a (pure a)+  C172AircraftArms c1 c2 <*> C172AircraftArms x1 x2 =+    C172AircraftArms (c1 x1) (c2 <*> x2)++instance Foldable C172AircraftArms where+  foldr k z (C172AircraftArms c x) =+    k c (foldr k z x)++instance Traversable C172AircraftArms where+  traverse k (C172AircraftArms c x) =+    C172AircraftArms <$> k c <*> traverse k x++bewC172AircraftArms ::+  ArmStatic+  -> C172AircraftArms Arm+bewC172AircraftArms a =+  C172AircraftArms+    (staticArm a)+    c172ArmsPOH++-- zero fuel+zfwMoment ::+  C172AircraftArms Moment+  -> C172AircraftArms Moment+zfwMoment x =+  x & fuel . weight .~ 0 ^. pounds++-- full fuel+ffwMoment ::+  C172AircraftArms Moment+  -> C172AircraftArms Moment+ffwMoment x =+  x & fuel . weight .~ 336 ^. pounds++-- unusable fuel+ufwMoment ::+  C172AircraftArms Moment+  -> C172AircraftArms Moment+ufwMoment x =+  x & fuel . weight .~ 18 ^. pounds+++totalC172Moment ::+  (HasWeight w, HasArmStatic s) =>+  w+  -> C172Arms w+  -> C172AircraftArms s+  -> C172AircraftArms Moment+totalC172Moment bew wt am =+  momentX (C172AircraftArms bew wt) am
+ src/Data/Aviation/C172/WB/C172Arms.hs view
@@ -0,0 +1,67 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE FlexibleInstances #-}++module Data.Aviation.C172.WB.C172Arms(+  C172Arms(..)+, HasC172Arms(..)+, c172ArmsPOH+) where++import Control.Applicative(Applicative((<*>), pure))+import Control.Lens(makeClassy, (^.))+import Data.Aviation.Units(inches)+import Data.Aviation.WB.Arm(Arm, (.->.), rangeArm, staticArm)+import Data.Eq(Eq)+import Data.Foldable(Foldable(foldr))+import Data.Functor(Functor(fmap), (<$>))+import Data.Ord(Ord)+import Data.Traversable(Traversable(traverse))+import Prelude(Show)++data C172Arms a =+  C172Arms {+    _frontseat ::+      a+  , _rearseat ::+      a+  , _fuel ::+      a+  , _baggagea ::+      a+  , _baggageb ::+      a+  }+  deriving (Eq, Ord, Show)++makeClassy ''C172Arms++instance Functor C172Arms where+  fmap k (C172Arms t r f a b) =+    C172Arms (k t) (k r) (k f) (k a) (k b)++instance Applicative C172Arms where+  pure a =+    C172Arms a a a a a+  C172Arms f1 f2 f3 f4 f5 <*> C172Arms a1 a2 a3 a4 a5 =+    C172Arms (f1 a1) (f2 a2) (f3 a3) (f4 a4) (f5 a5)++instance Foldable C172Arms where+  foldr k z (C172Arms t r f a b) =+    foldr k z [t,r,f,a,b]++instance Traversable C172Arms where+  traverse k (C172Arms t r f a b) =+    C172Arms <$> k t <*> k r <*> k f <*> k a <*> k b++c172ArmsPOH ::+  C172Arms Arm+c172ArmsPOH =+  C172Arms+    (rangeArm (37 ^. inches) (34 ^. inches .->. 46 ^. inches))+    (staticArm (73 ^. inches))+    (staticArm (48 ^. inches))+    (rangeArm (95 ^. inches) (82 ^. inches .->. 108 ^. inches))+    (rangeArm (123 ^. inches) (108 ^. inches .->. 142 ^. inches))
+ src/Data/Aviation/C172/WB/C172MomentEnvelope.hs view
@@ -0,0 +1,52 @@+{-# LANGUAGE NoImplicitPrelude #-}++module Data.Aviation.C172.WB.C172MomentEnvelope(+  c172rNormalCategory+, c172sNormalCategory+, c172UtilityCategory+) where++import Prelude(Fractional)++c172rNormalCategory ::+  Fractional a =>+  [(a, a)]+c172rNormalCategory =+  c172NormalCategory+    (98, 2450)++c172sNormalCategory ::+  Fractional a =>+  [(a, a)]+c172sNormalCategory =+  c172NormalCategory+    (120.5, 2550)++c172UtilityCategory ::+  Fractional a =>+  [(a, a)]+c172UtilityCategory =+  [+    (61, 1500)+  , (89, 2200)+  , (82.5, 2200)+  , (68, 1950)+  , (52.5, 1500)+  ]+  +-- not exported+++c172NormalCategory ::+  Fractional a =>+  (a, a)+  -> [(a, a)]+c172NormalCategory x =+  [+      x+    , (71, 1500)+    , (61, 1500)+    , (89, 2200)+    , (82.5, 2200)+    , (104.5, 2550)+  ]