9 #ifndef __BROKEN_POWERLAW_PHASE_LAG_ZONE 10 #define __BROKEN_POWERLAW_PHASE_LAG_ZONE 12 #include "../Core/SharedLibraryExportMacros.h" 28 friend class LagSpinBreakCondition;
40 __tidal_frequency_breaks,
43 __spin_frequency_breaks,
49 __spin_frequency_powers,
59 __inertial_mode_enhancement,
79 inline std::vector< std::vector<double>::size_type >::size_type
83 int orbital_frequency_multiplier,
87 int spin_frequency_multiplier
93 (orbital_frequency_multiplier > 0 ? 1 : -1)
96 spin_frequency_multiplier
98 5 * orbital_frequency_multiplier
104 double get_orbital_frequency(
const BinarySystem &system)
const;
108 double get_inertial_mode_factor(
111 double abs_forcing_frequency,
115 int orbital_frequency_multiplier,
119 int spin_frequency_multiplier,
138 void set_spin_index();
146 std::vector<double>::size_type get_tidal_index(
148 double abs_forcing_frequency
153 void add_tidal_frequency_conditions(
169 void print_configuration(std::ostream &out_stream = std::clog);
175 : __dissipative(false), __can_lock(false) {}
183 const std::vector<double> &tidal_frequency_breaks,
187 const std::vector<double> &spin_frequency_breaks,
193 const std::vector<double> &tidal_frequency_powers,
199 const std::vector<double> &spin_frequency_powers,
203 double reference_phase_lag,
207 double inertial_mode_enhancement = 1.0,
217 double inertial_mode_sharpness = 10.0
221 virtual void configure(
224 double orbital_frequency,
226 double orbital_angmom,
230 bool spin_is_frequency
244 int orbital_frequency_multiplier,
248 int spin_frequency_multiplier,
251 double forcing_frequency,
255 Dissipation::QuantityEntry entry,
260 double &above_lock_value
276 Dissipation::QuantityEntry
296 virtual void change_e_order(
298 unsigned new_e_order,
312 {
return __dissipative;}
320 std::cerr <<
"Destroying powerlaw lag zone:" 323 std::vector<double>::const_iterator
324 br_i = __tidal_frequency_breaks.begin();
325 br_i != __tidal_frequency_breaks.end();
328 std::cerr <<
" " << *br_i;
329 std::cerr <<
"Spin breaks: ";
331 std::vector<double>::const_iterator
332 br_i = __spin_frequency_breaks.begin();
333 br_i != __spin_frequency_breaks.end();
336 std::cerr <<
" " << *br_i;
337 std::cerr << std::endl;
std::vector< std::vector< double >::size_type > __tidal_indices
The indices within __tidal_frequency_powers of the powerlaw now in effect for each active tidal term...
Declares a class representing one zone of a body dissipative to tidal distortions.
std::vector< double >::size_type __spin_index
The index within __spin_frequency_powers of the powerlaw now in effect.
std::vector< std::vector< double >::size_type >::size_type tidal_term_index(int orbital_frequency_multiplier, int spin_frequency_multiplier) const
The index of the given tidal term within __tidal_indices.
virtual double love_coefficient(int, int, Dissipation::QuantityEntry) const
Should return the corresponding component of the love coefficient (Lai 2012 Equation 24)...
~BrokenPowerlawPhaseLagZone()
Cleanup.
bool __dissipative
Is the zone dissipative.
Orientations of zones of bodies in a binary system.
A layer of a system body for which the tidal bulge is not exactly in phase with the tidal potential...
Declares a stopping condition monitoring for critical spin frequencies.
double modified_phase_lag(const EvolvingStar *star, unsigned zone_index, int orbital_frequency_multiplier, int spin_frequency_multiplier, double forcing_frequency, int entry, double *above_lock_value)
See Evolve::BrokenPowerlawPhaseLagZone::modified_phase_lag for details.
Defines the BinarySystem class.
double __inertial_mode_sharpness
See setup()
NO_DERIV
The quantity itself, undifferentiated.
Declares the DissipatingBody class.
A DissipatingZone where the phase lag is described by a broken powerlaw.
BrokenPowerlawPhaseLagZone()
Create a non-dissipative zone. Must call setup() if the zone is dissipative.
Declares a stopping condition satisfied when a forcing frequency reaches a critical value...
std::vector< double > __tidal_frequency_powers
The powerlaw indices for the tidal frequency dependence.
A class combining the the outputs of multiple stopping conditions.
virtual bool dissipative() const
Return true iff disspation has been defined for the zone.
satisfied when a forcing frequency reaches a critical value.
Describes a system of two bodies orbiting each other.
virtual bool can_lock() const
Should return true iff the zone's dissipation is discontinuous at zero frequency. ...