module Physics.Orbit.Sol
where
import Data.Constants.Mechanics
import Data.Metrology
import Data.Units.Astronomical
import Data.Units.SI.Parser
import Physics.Orbit
solMass :: Fractional a => Mass a
solMass :: Mass a
solMass = 1988500e24 a -> (Kilo :@ Gram) -> Qu '[ 'F Mass One] 'DefaultLCSU a
forall (dim :: [Factor *]) unit n.
(ValidDLU dim 'DefaultLCSU unit, Fractional n) =>
n -> unit -> Qu dim 'DefaultLCSU n
% [si|kg|]
solGraviationalParameter :: Fractional a => Quantity [si| m^3 s^-2 |] a
solGraviationalParameter :: Quantity
((Meter :^ Succ (Succ (Succ 'Zero)))
:* (Second :^ Pred (Pred 'Zero)))
a
solGraviationalParameter = Qu '[ 'F Mass One] 'DefaultLCSU a
forall a. Fractional a => Mass a
solMass Qu '[ 'F Mass One] 'DefaultLCSU a
-> Qu
'[ 'F Length ('S Two), 'F Mass ('P 'Zero), 'F Time ('P ('P 'Zero))]
'DefaultLCSU
a
-> Qu
(Normalize
('[ 'F Mass One]
@+ '[ 'F Length ('S Two), 'F Mass ('P 'Zero),
'F Time ('P ('P 'Zero))]))
'DefaultLCSU
a
forall n (a :: [Factor *]) (l :: LCSU *) (b :: [Factor *]).
Num n =>
Qu a l n -> Qu b l n -> Qu (Normalize (a @+ b)) l n
|*| Qu
'[ 'F Length ('S Two), 'F Mass ('P 'Zero), 'F Time ('P ('P 'Zero))]
'DefaultLCSU
a
forall (lcsu :: LCSU *) n.
(Fractional n,
CompatibleUnit
lcsu
(((Meter :^ 'S Two) :* ((Kilo :@ Gram) :^ 'P 'Zero))
:* (Second :^ 'P ('P 'Zero)))) =>
MkQu_ULN
(((Meter :^ 'S Two) :* ((Kilo :@ Gram) :^ 'P 'Zero))
:* (Second :^ 'P ('P 'Zero)))
lcsu
n
gravity_G
venusOrbit :: Fractional a => Orbit a
venusOrbit :: Orbit a
venusOrbit = $WOrbit :: forall a.
Unitless a
-> Distance a
-> InclinationSpecifier a
-> PeriapsisSpecifier a
-> Quantity
((Meter :^ Succ (Succ (Succ 'Zero)))
:* (Second :^ Pred (Pred 'Zero)))
a
-> Orbit a
Orbit
{ eccentricity :: Unitless a
eccentricity = 0.006772
, periapsis :: Distance a
periapsis = 0.718440 a -> AstronomicalUnit -> Qu '[ 'F Length One] 'DefaultLCSU a
forall (dim :: [Factor *]) unit n.
(ValidDLU dim 'DefaultLCSU unit, Fractional n) =>
n -> unit -> Qu dim 'DefaultLCSU n
% AstronomicalUnit
AstronomicalUnit
, inclinationSpecifier :: InclinationSpecifier a
inclinationSpecifier = $WInclined :: forall a. Angle a -> Angle a -> InclinationSpecifier a
Inclined
{ longitudeOfAscendingNode :: Angle a
longitudeOfAscendingNode = 76.680 a -> Degree -> Qu '[ 'F PlaneAngle One] 'DefaultLCSU a
forall (dim :: [Factor *]) unit n.
(ValidDLU dim 'DefaultLCSU unit, Fractional n) =>
n -> unit -> Qu dim 'DefaultLCSU n
% [si|deg|]
, inclination :: Angle a
inclination = 2.19 a -> Degree -> Qu '[ 'F PlaneAngle One] 'DefaultLCSU a
forall (dim :: [Factor *]) unit n.
(ValidDLU dim 'DefaultLCSU unit, Fractional n) =>
n -> unit -> Qu dim 'DefaultLCSU n
% [si|deg|]
}
, periapsisSpecifier :: PeriapsisSpecifier a
periapsisSpecifier = $WEccentric :: forall a. Angle a -> PeriapsisSpecifier a
Eccentric { argumentOfPeriapsis :: Angle a
argumentOfPeriapsis = 54.884 a -> Degree -> Qu '[ 'F PlaneAngle One] 'DefaultLCSU a
forall (dim :: [Factor *]) unit n.
(ValidDLU dim 'DefaultLCSU unit, Fractional n) =>
n -> unit -> Qu dim 'DefaultLCSU n
% [si|deg|] }
, primaryGravitationalParameter :: Quantity
((Meter :^ Succ (Succ (Succ 'Zero)))
:* (Second :^ Pred (Pred 'Zero)))
a
primaryGravitationalParameter = Quantity
((Meter :^ Succ (Succ (Succ 'Zero)))
:* (Second :^ Pred (Pred 'Zero)))
a
forall a.
Fractional a =>
Quantity
((Meter :^ Succ (Succ (Succ 'Zero)))
:* (Second :^ Pred (Pred 'Zero)))
a
solGraviationalParameter
}
earthOrbit :: Fractional a => Orbit a
earthOrbit :: Orbit a
earthOrbit = $WOrbit :: forall a.
Unitless a
-> Distance a
-> InclinationSpecifier a
-> PeriapsisSpecifier a
-> Quantity
((Meter :^ Succ (Succ (Succ 'Zero)))
:* (Second :^ Pred (Pred 'Zero)))
a
-> Orbit a
Orbit
{ eccentricity :: Unitless a
eccentricity = 0.01671123
, periapsis :: Distance a
periapsis = 0.9832899 a -> AstronomicalUnit -> Qu '[ 'F Length One] 'DefaultLCSU a
forall (dim :: [Factor *]) unit n.
(ValidDLU dim 'DefaultLCSU unit, Fractional n) =>
n -> unit -> Qu dim 'DefaultLCSU n
% AstronomicalUnit
AstronomicalUnit
, inclinationSpecifier :: InclinationSpecifier a
inclinationSpecifier = $WInclined :: forall a. Angle a -> Angle a -> InclinationSpecifier a
Inclined
{ longitudeOfAscendingNode :: Angle a
longitudeOfAscendingNode = 348.73936 a -> Degree -> Qu '[ 'F PlaneAngle One] 'DefaultLCSU a
forall (dim :: [Factor *]) unit n.
(ValidDLU dim 'DefaultLCSU unit, Fractional n) =>
n -> unit -> Qu dim 'DefaultLCSU n
% [si|deg|]
, inclination :: Angle a
inclination = 1.578690 a -> Degree -> Qu '[ 'F PlaneAngle One] 'DefaultLCSU a
forall (dim :: [Factor *]) unit n.
(ValidDLU dim 'DefaultLCSU unit, Fractional n) =>
n -> unit -> Qu dim 'DefaultLCSU n
% [si|deg|]
}
, periapsisSpecifier :: PeriapsisSpecifier a
periapsisSpecifier = $WEccentric :: forall a. Angle a -> PeriapsisSpecifier a
Eccentric { argumentOfPeriapsis :: Angle a
argumentOfPeriapsis = 114.20783 a -> Degree -> Qu '[ 'F PlaneAngle One] 'DefaultLCSU a
forall (dim :: [Factor *]) unit n.
(ValidDLU dim 'DefaultLCSU unit, Fractional n) =>
n -> unit -> Qu dim 'DefaultLCSU n
% [si|deg|]
}
, primaryGravitationalParameter :: Quantity
((Meter :^ Succ (Succ (Succ 'Zero)))
:* (Second :^ Pred (Pred 'Zero)))
a
primaryGravitationalParameter = Quantity
((Meter :^ Succ (Succ (Succ 'Zero)))
:* (Second :^ Pred (Pred 'Zero)))
a
forall a.
Fractional a =>
Quantity
((Meter :^ Succ (Succ (Succ 'Zero)))
:* (Second :^ Pred (Pred 'Zero)))
a
solGraviationalParameter
}
marsOrbit :: Fractional a => Orbit a
marsOrbit :: Orbit a
marsOrbit = $WOrbit :: forall a.
Unitless a
-> Distance a
-> InclinationSpecifier a
-> PeriapsisSpecifier a
-> Quantity
((Meter :^ Succ (Succ (Succ 'Zero)))
:* (Second :^ Pred (Pred 'Zero)))
a
-> Orbit a
Orbit
{ eccentricity :: Unitless a
eccentricity = 0.0934
, periapsis :: Distance a
periapsis = 1.382 a -> AstronomicalUnit -> Qu '[ 'F Length One] 'DefaultLCSU a
forall (dim :: [Factor *]) unit n.
(ValidDLU dim 'DefaultLCSU unit, Fractional n) =>
n -> unit -> Qu dim 'DefaultLCSU n
% AstronomicalUnit
AstronomicalUnit
, inclinationSpecifier :: InclinationSpecifier a
inclinationSpecifier = $WInclined :: forall a. Angle a -> Angle a -> InclinationSpecifier a
Inclined
{ longitudeOfAscendingNode :: Angle a
longitudeOfAscendingNode = 49.558 a -> Degree -> Qu '[ 'F PlaneAngle One] 'DefaultLCSU a
forall (dim :: [Factor *]) unit n.
(ValidDLU dim 'DefaultLCSU unit, Fractional n) =>
n -> unit -> Qu dim 'DefaultLCSU n
% [si|deg|]
, inclination :: Angle a
inclination = 1.67 a -> Degree -> Qu '[ 'F PlaneAngle One] 'DefaultLCSU a
forall (dim :: [Factor *]) unit n.
(ValidDLU dim 'DefaultLCSU unit, Fractional n) =>
n -> unit -> Qu dim 'DefaultLCSU n
% [si|deg|]
}
, periapsisSpecifier :: PeriapsisSpecifier a
periapsisSpecifier = $WEccentric :: forall a. Angle a -> PeriapsisSpecifier a
Eccentric { argumentOfPeriapsis :: Angle a
argumentOfPeriapsis = 286.502 a -> Degree -> Qu '[ 'F PlaneAngle One] 'DefaultLCSU a
forall (dim :: [Factor *]) unit n.
(ValidDLU dim 'DefaultLCSU unit, Fractional n) =>
n -> unit -> Qu dim 'DefaultLCSU n
% [si|deg|] }
, primaryGravitationalParameter :: Quantity
((Meter :^ Succ (Succ (Succ 'Zero)))
:* (Second :^ Pred (Pred 'Zero)))
a
primaryGravitationalParameter = Quantity
((Meter :^ Succ (Succ (Succ 'Zero)))
:* (Second :^ Pred (Pred 'Zero)))
a
forall a.
Fractional a =>
Quantity
((Meter :^ Succ (Succ (Succ 'Zero)))
:* (Second :^ Pred (Pred 'Zero)))
a
solGraviationalParameter
}
halleyOrbit :: Fractional a => Orbit a
halleyOrbit :: Orbit a
halleyOrbit = $WOrbit :: forall a.
Unitless a
-> Distance a
-> InclinationSpecifier a
-> PeriapsisSpecifier a
-> Quantity
((Meter :^ Succ (Succ (Succ 'Zero)))
:* (Second :^ Pred (Pred 'Zero)))
a
-> Orbit a
Orbit
{ eccentricity :: Unitless a
eccentricity = 0.96714
, periapsis :: Distance a
periapsis = 0.586 a -> AstronomicalUnit -> Qu '[ 'F Length One] 'DefaultLCSU a
forall (dim :: [Factor *]) unit n.
(ValidDLU dim 'DefaultLCSU unit, Fractional n) =>
n -> unit -> Qu dim 'DefaultLCSU n
% AstronomicalUnit
AstronomicalUnit
, inclinationSpecifier :: InclinationSpecifier a
inclinationSpecifier = $WInclined :: forall a. Angle a -> Angle a -> InclinationSpecifier a
Inclined
{ longitudeOfAscendingNode :: Angle a
longitudeOfAscendingNode = 58.42 a -> Degree -> Qu '[ 'F PlaneAngle One] 'DefaultLCSU a
forall (dim :: [Factor *]) unit n.
(ValidDLU dim 'DefaultLCSU unit, Fractional n) =>
n -> unit -> Qu dim 'DefaultLCSU n
% [si|deg|]
, inclination :: Angle a
inclination = 162.26 a -> Degree -> Qu '[ 'F PlaneAngle One] 'DefaultLCSU a
forall (dim :: [Factor *]) unit n.
(ValidDLU dim 'DefaultLCSU unit, Fractional n) =>
n -> unit -> Qu dim 'DefaultLCSU n
% [si|deg|]
}
, periapsisSpecifier :: PeriapsisSpecifier a
periapsisSpecifier = $WEccentric :: forall a. Angle a -> PeriapsisSpecifier a
Eccentric { argumentOfPeriapsis :: Angle a
argumentOfPeriapsis = 111.33 a -> Degree -> Qu '[ 'F PlaneAngle One] 'DefaultLCSU a
forall (dim :: [Factor *]) unit n.
(ValidDLU dim 'DefaultLCSU unit, Fractional n) =>
n -> unit -> Qu dim 'DefaultLCSU n
% [si|deg|] }
, primaryGravitationalParameter :: Quantity
((Meter :^ Succ (Succ (Succ 'Zero)))
:* (Second :^ Pred (Pred 'Zero)))
a
primaryGravitationalParameter = Quantity
((Meter :^ Succ (Succ (Succ 'Zero)))
:* (Second :^ Pred (Pred 'Zero)))
a
forall a.
Fractional a =>
Quantity
((Meter :^ Succ (Succ (Succ 'Zero)))
:* (Second :^ Pred (Pred 'Zero)))
a
solGraviationalParameter
}
c1980E1Orbit :: Fractional a => Orbit a
c1980E1Orbit :: Orbit a
c1980E1Orbit = $WOrbit :: forall a.
Unitless a
-> Distance a
-> InclinationSpecifier a
-> PeriapsisSpecifier a
-> Quantity
((Meter :^ Succ (Succ (Succ 'Zero)))
:* (Second :^ Pred (Pred 'Zero)))
a
-> Orbit a
Orbit
{ eccentricity :: Unitless a
eccentricity = 1.057731876173255
, periapsis :: Distance a
periapsis = 3.363937831611605 a -> AstronomicalUnit -> Qu '[ 'F Length One] 'DefaultLCSU a
forall (dim :: [Factor *]) unit n.
(ValidDLU dim 'DefaultLCSU unit, Fractional n) =>
n -> unit -> Qu dim 'DefaultLCSU n
% AstronomicalUnit
AstronomicalUnit
, inclinationSpecifier :: InclinationSpecifier a
inclinationSpecifier = $WInclined :: forall a. Angle a -> Angle a -> InclinationSpecifier a
Inclined
{ longitudeOfAscendingNode :: Angle a
longitudeOfAscendingNode = 114.5581951921299 a -> Degree -> Qu '[ 'F PlaneAngle One] 'DefaultLCSU a
forall (dim :: [Factor *]) unit n.
(ValidDLU dim 'DefaultLCSU unit, Fractional n) =>
n -> unit -> Qu dim 'DefaultLCSU n
% [si|deg|]
, inclination :: Angle a
inclination = 1.661712630614323 a -> Degree -> Qu '[ 'F PlaneAngle One] 'DefaultLCSU a
forall (dim :: [Factor *]) unit n.
(ValidDLU dim 'DefaultLCSU unit, Fractional n) =>
n -> unit -> Qu dim 'DefaultLCSU n
% [si|deg|]
}
, periapsisSpecifier :: PeriapsisSpecifier a
periapsisSpecifier = $WEccentric :: forall a. Angle a -> PeriapsisSpecifier a
Eccentric
{ argumentOfPeriapsis :: Angle a
argumentOfPeriapsis = 135.0826233919265 a -> Degree -> Qu '[ 'F PlaneAngle One] 'DefaultLCSU a
forall (dim :: [Factor *]) unit n.
(ValidDLU dim 'DefaultLCSU unit, Fractional n) =>
n -> unit -> Qu dim 'DefaultLCSU n
% [si|deg|]
}
, primaryGravitationalParameter :: Quantity
((Meter :^ Succ (Succ (Succ 'Zero)))
:* (Second :^ Pred (Pred 'Zero)))
a
primaryGravitationalParameter = Quantity
((Meter :^ Succ (Succ (Succ 'Zero)))
:* (Second :^ Pred (Pred 'Zero)))
a
forall a.
Fractional a =>
Quantity
((Meter :^ Succ (Succ (Succ 'Zero)))
:* (Second :^ Pred (Pred 'Zero)))
a
solGraviationalParameter
}