Planetary Orbital Evolution due to Tides
Orbital evolution of two objects experiencing tides
Planet.h
Go to the documentation of this file.
1 
8 #ifndef __LOCKED_PLANET_H
9 #define __LOCKED_PLANET_H
10 
11 #include "../Core/SharedLibraryExportMacros.h"
12 #include "PlanetZone.h"
13 #include "../Evolve/DissipatingBody.h"
14 
15 namespace Planet {
16 
21  class LIB_PUBLIC Planet : virtual public Evolve::DissipatingBody {
22  private:
25  public:
27  Planet(double mass,
28  double radius,
29  double inertia_factor=0.3) :
30  __zone(mass, radius, inertia_factor)
31  {};
32 
34  unsigned number_zones() const {return 1;}
35 
38  unsigned
39 #ifndef NDEBUG
40  zone_index
41 #endif
42  ) const
43  {
44  assert(zone_index == 0);
45  return __zone;
46  }
47 
50  unsigned
51 #ifndef NDEBUG
52  zone_index
53 #endif
54  )
55  {
56  assert(zone_index == 0);
57  return __zone;
58  }
59 
61  const PlanetZone &zone() const {return __zone;}
62 
64  PlanetZone &zone() {return __zone;}
65 
67  Eigen::Vector3d angular_momentum_coupling(
68  unsigned,
69  Evolve::Dissipation::QuantityEntry=Evolve::Dissipation::NO_DERIV,
70  bool = false
71  ) const
72  {
73  throw Core::Error::Runtime("Request for the angular momentum "
74  "coupling of a Planet!");
75  }
76 
79  Evolve::Dissipation::QuantityEntry=Evolve::Dissipation::NO_DERIV
80  ) const
81  {return 0;}
82 
84  void reached_critical_age(double) {}
85 
86  }; //End LockedPlanet class.
87 
88 }//End Planet namespace.
89 
90 #endif
PlanetZone __zone
The only zone of the planet.
Definition: Planet.h:24
Eigen::Vector3d angular_momentum_coupling(unsigned, Evolve::Dissipation::QuantityEntry=Evolve::Dissipation::NO_DERIV, bool=false) const
Should never be called.
Definition: Planet.h:67
Evolve::DissipatingZone & zone(unsigned zone_index)
Returns the only zone.
Definition: Planet.h:49
A base class for any body contributing to tidal dissipation.
const PlanetZone & zone() const
Returns the only zone.
Definition: Planet.h:61
const Evolve::DissipatingZone & zone(unsigned zone_index) const
Returns the only zone.
Definition: Planet.h:37
Any runtime error.
Definition: Error.h:61
A layer of a system body for which the tidal bulge is not exactly in phase with the tidal potential...
void reached_critical_age(double)
No critical ages for non-evolving non-dissipating planets.
Definition: Planet.h:84
Planet(double mass, double radius, double inertia_factor=0.3)
Create a planet with a constant mass and radius.
Definition: Planet.h:27
unsigned number_zones() const
The number of zones the body consists of.
Definition: Planet.h:34
PlanetZone & zone()
Returns the only zone.
Definition: Planet.h:64
double angular_momentum_loss(Evolve::Dissipation::QuantityEntry=Evolve::Dissipation::NO_DERIV) const
Always zero.
Definition: Planet.h:78
NO_DERIV
The quantity itself, undifferentiated.
Definition: Planet.h:15
Declares a class for the single zone of LockedPlanet objects.
The only zone of a LockedPlanet.
Definition: PlanetZone.h:21