Planetary Orbital Evolution due to Tides
Orbital evolution of two objects experiencing tides
PlanetZone.h
Go to the documentation of this file.
1 
8 #ifndef __LOCKED_PLANET_ZONE_H
9 #define __LOCKED_PLANET_ZONE_H
10 
11 #include "../Core/SharedLibraryExportMacros.h"
12 #include "../Evolve/DissipatingZone.h"
13 #include "../Core/AstronomicalConstants.h"
14 #include "../Evolve/BrokenPowerlawPhaseLagZone.h"
15 
16 namespace Planet {
17 
21  class LIB_LOCAL PlanetZone :
22  virtual public Evolve::BrokenPowerlawPhaseLagZone {
23  private:
24  double
26  __mass,
27 
29  __radius,
30 
32  __moment_of_inertia_factor;
33 
34  public:
37  double mass,
38 
40  double radius,
41 
44  double moment_of_inertia_factor
45  ) :
46  __mass(mass),
47  __radius(radius),
48  __moment_of_inertia_factor(moment_of_inertia_factor)
49  {}
50 
52  double love_coefficient(int,
53  int,
54  Evolve::Dissipation::QuantityEntry) const
55  {return 0;}
56 
64  int deriv_order=0
65  ) const
66  {
67  return (
68  deriv_order==0
69  ? __moment_of_inertia_factor * __mass * std::pow(__radius, 2)
70  : 0
71  );
72  }
73 
74  double moment_of_inertia(double, int deriv_order=0) const
75  {return moment_of_inertia(deriv_order);}
76 
78  double outer_radius(int deriv_order=0) const
79  {return (deriv_order==0 ? __radius : 0);}
80 
82  double outer_radius(double, int deriv_order=0) const
83  {return (deriv_order==0 ? __radius : 0);}
84 
86  double outer_mass(int deriv_order=0) const
87  {return (deriv_order==0 ? __mass : 0);}
88 
90  double outer_mass(double, int deriv_order=0) const
91  {return (deriv_order==0 ? __mass : 0);}
92 
95  void configure(
97  bool initialize,
98 
100  double age,
101 
103  double orbital_frequency,
104 
106  double eccentricity,
107 
109  double orbital_angmom,
110 
113  double spin,
114 
116  double inclination,
117 
120  double periapsis,
121 
123  bool spin_is_frequency
124  )
125  {
126  BrokenPowerlawPhaseLagZone::configure(
127  initialize,
128  age,
129  orbital_frequency,
130  eccentricity,
131  orbital_angmom,
132  (dissipative() ? spin : orbital_frequency),
133  (dissipative() ? inclination : 0),
134  (dissipative() ? periapsis : 0),
135  (dissipative() ? spin_is_frequency : true)
136  );
137  }
138 
139  }; //End LockedPlanetZone class.
140 
141 }//End Planet namespace.
142 
143 #endif
PlanetZone(double mass, double radius, double moment_of_inertia_factor)
Definition: PlanetZone.h:35
double outer_mass(double, int deriv_order=0) const
Same as outer_mass(int) but accept age argument (ignored).
Definition: PlanetZone.h:90
double __radius
See radius argument to constructor.
Definition: PlanetZone.h:26
double outer_mass(int deriv_order=0) const
The mass of the planet.
Definition: PlanetZone.h:86
double moment_of_inertia(double, int deriv_order=0) const
The moment of inertia of the zone or its age derivative at a specified age (no configure necessary)...
Definition: PlanetZone.h:74
double outer_radius(double, int deriv_order=0) const
Same as outer_radius(int) but accept age argument (ignored).
Definition: PlanetZone.h:82
double outer_radius(int deriv_order=0) const
The radius of the planet.
Definition: PlanetZone.h:78
double moment_of_inertia(int deriv_order=0) const
Tiny value ( ).
Definition: PlanetZone.h:58
void configure(bool initialize, double age, double orbital_frequency, double eccentricity, double orbital_angmom, double spin, double inclination, double periapsis, bool spin_is_frequency)
Calls the usual DissipatingZone::configure but with zero inclination and periapsis.
Definition: PlanetZone.h:95
A DissipatingZone where the phase lag is described by a broken powerlaw.
Definition: Planet.h:15
double love_coefficient(int, int, Evolve::Dissipation::QuantityEntry) const
See DissipatingZone::love_coefficient(), always zero.
Definition: PlanetZone.h:52
The only zone of a LockedPlanet.
Definition: PlanetZone.h:21