Planetary Orbital Evolution due to Tides
Orbital evolution of two objects experiencing tides
SingleTidalTermZone.h
Go to the documentation of this file.
1 
9 #ifndef __SINGLE_TIDAL_TERM_ZONE_H
10 #define __SINGLE_TIDAL_TERM_ZONE_H
11 
13 
14 namespace Evolve {
15 
21  private:
22  int
25 
28 
30  double __phase_lag;
31  public:
35  int orbital_frequency_multiplier,
36 
39  int spin_frequency_multiplier,
40 
42  double phase_lag,
43 
45  const std::valarray<double> &mass_coefficients,
46 
48  const std::valarray<double> &radius_coefficients,
49 
52  const std::valarray<double> &inertia_coefficients
53  ) :
54  PolynomialEvolutionZone(mass_coefficients,
55  radius_coefficients,
56  inertia_coefficients),
57  __orbital_frequency_multiplier(orbital_frequency_multiplier),
58  __spin_frequency_multiplier(spin_frequency_multiplier),
59  __phase_lag(phase_lag)
60  {}
61 
63  double modified_phase_lag(int orbital_frequency_multiplier,
64  int spin_frequency_multiplier,
65  double forcing_frequency,
66  Dissipation::QuantityEntry entry,
67  double &above_lock_value) const
68  {
69  double result;
70 
71  if(entry != Dissipation::NO_DERIV)
72  result = 0.0;
73  else {
74  if(
75  orbital_frequency_multiplier == __orbital_frequency_multiplier
76  &&
77  spin_frequency_multiplier == __spin_frequency_multiplier
78  )
79  result = __phase_lag;
80  else if(
81  orbital_frequency_multiplier == -__orbital_frequency_multiplier
82  &&
83  spin_frequency_multiplier == -__spin_frequency_multiplier
84 
85  )
86  result = -__phase_lag;
87  else
88  result = 0.0;
89  }
90 
91  if(forcing_frequency == 0) {
92  if(spin_frequency_multiplier >= 0) {
93  above_lock_value = -result;
94  return result;
95  } else {
96  above_lock_value = result;
97  return -result;
98  }
99  } else {
100  return result;
101  }
102  }
103 
105  bool dissipative() const {return true;}
106 
108  bool can_lock() const {return true;}
109 
110  };//End SingleTidalTermZone class.
111 
112 }//End Evolve namespace.
113 
114 #endif
Orientations of zones of bodies in a binary system.
bool can_lock() const
See DissipatingZone::can_lock()
int __spin_frequency_multiplier
See spin_frequency_multiplier argument to constructor.
double __phase_lag
See phase_lag argument to constructor.
A zone dissipative to only a single tidal term.
Declare a dissipative zone class where the mass and radius evolution are given by a polynomial...
NO_DERIV
The quantity itself, undifferentiated.
SingleTidalTermZone(int orbital_frequency_multiplier, int spin_frequency_multiplier, double phase_lag, const std::valarray< double > &mass_coefficients, const std::valarray< double > &radius_coefficients, const std::valarray< double > &inertia_coefficients)
double forcing_frequency(int orbital_frequency_multiplier, int spin_frequency_multiplier, double orbital_frequency) const
The tidal forcing frequency for the given term and orbital frequency.
double modified_phase_lag(int orbital_frequency_multiplier, int spin_frequency_multiplier, double forcing_frequency, Dissipation::QuantityEntry entry, double &above_lock_value) const
See DissipatingZone::modified_phase_lag()
int __orbital_frequency_multiplier
See orbital_frequency_multiplier argument to constructor.
bool dissipative() const
See DissipatingZone::dissipative()