A layer of a system body for which the tidal bulge is not exactly in phase with the tidal potential. More...
#include <DissipatingZone.h>
Public Member Functions | |
virtual void | configure (bool initialize, double age, double orbital_frequency, double eccentricity, double orbital_angmom, double spin, double inclination, double periapsis, bool spin_is_frequency) |
Defines the current orbit, triggering re-calculation of all quantities. More... | |
void | set_evolution_rates (double angular_momentum, double inclination, double periapsis) |
Set evolution rates for this zone's properties for storing in the eveloution. More... | |
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. More... | |
void | set_reference_zone_angmom (double reference_angmom) |
Defines the angular momentum of the reference zone for single body evolution. More... | |
double | periapsis_evolution (const Eigen::Vector3d &orbit_torque, const Eigen::Vector3d &zone_torque, Dissipation::QuantityEntry entry=Dissipation::NO_DERIV, const Eigen::Vector3d &orbit_torque_deriv=Eigen::Vector3d(), const Eigen::Vector3d &zone_torque_deriv=Eigen::Vector3d()) |
The rate at which the periapsis of the orbit/reference zone in this zone's equatorial plane is changing. More... | |
double | inclination_evolution (const Eigen::Vector3d &orbit_torque, const Eigen::Vector3d &zone_torque, Dissipation::QuantityEntry entry=Dissipation::NO_DERIV, const Eigen::Vector3d &orbit_torque_deriv=Eigen::Vector3d(), const Eigen::Vector3d &zone_torque_deriv=Eigen::Vector3d()) |
The rate at which the inclination between this zone and the orbit is changing. More... | |
virtual bool | locked (int orbital_frequency_multiplier, int spin_frequency_multiplier) const |
Should return true iff the given term is presently locked. More... | |
virtual bool | locked () const |
Should return true iff any tidal term is locked. More... | |
const SpinOrbitLockInfo & | lock_held () const |
The currntly held lock. More... | |
void | release_lock () |
Update the zone as necessary when the held lock disappears from the expansion. More... | |
void | release_lock (short direction) |
Update the zone as necessary when the held lock is broken. More... | |
void | set_lock (int orbital_frequency_multiplier, int spin_frequency_multiplier) |
Locks the zone spin to the orbit in the given ratio. More... | |
virtual double | modified_phase_lag (int orbital_frequency_multiplier, int spin_frequency_multiplier, double forcing_frequency, Dissipation::QuantityEntry entry, double &above_lock_value) const =0 |
Should return the tidal phase lag time the love number for the given tidal term (or one of its derivatives). More... | |
virtual double | love_coefficient (int orbital_frequency_multiplier, int spin_frequency_multiplier, Dissipation::QuantityEntry entry) const =0 |
Should return the corresponding component of the love coefficient (Lai 2012 Equation 24). More... | |
virtual double | moment_of_inertia (int deriv_order=0) const =0 |
Moment of inertia of the zone or its age derivative at the age of last configure() call. More... | |
virtual double | moment_of_inertia (double age, int deriv_order=0) const =0 |
The moment of inertia of the zone or its age derivative at a specified age (no configure necessary). More... | |
double | spin_frequency () const |
The spin frequency of the given zone. More... | |
double | angular_momentum () const |
The angular momentum of the given zone in \(M_\odot R_\odot^2\). More... | |
double | tidal_power (bool above, Dissipation::QuantityEntry entry=Dissipation::NO_DERIV) const |
The dimensionless tidal power or one of its derivatives. More... | |
double | tidal_power (double above_fraction, Dissipation::QuantityEntry entry=Dissipation::NO_DERIV) const |
Same as tidal_power(bool, Dissipation::QuantityEntry), but using the predefined mix of below/above contributions. More... | |
double | tidal_torque_x (bool above, Dissipation::QuantityEntry entry=Dissipation::NO_DERIV) const |
The dimensionless tidal torque along x. More... | |
double | tidal_torque_x (double above_fraction, Dissipation::QuantityEntry entry=Dissipation::NO_DERIV) const |
Same as tidal_torque_x(bool, Dissipation::QuantityEntry) but below and above contributions mixed. More... | |
double | tidal_torque_y (bool above, Dissipation::QuantityEntry entry=Dissipation::NO_DERIV) const |
The dimensionless torque along y. More... | |
double | tidal_torque_y (double above_fraction, Dissipation::QuantityEntry entry=Dissipation::NO_DERIV) const |
Same as tidal_torque_y(bool, Dissipation::QuantityEntry) but below and above contributions mixed. More... | |
double | tidal_torque_z (bool above, Dissipation::QuantityEntry entry=Dissipation::NO_DERIV) const |
The dimensionless tidal torque along z. More... | |
double | tidal_torque_z (double above_fraction, Dissipation::QuantityEntry entry=Dissipation::NO_DERIV) const |
Same as tidal_torque_z(bool, Dissipation::QuantityEntry) but below and above contributions mixed. More... | |
virtual double | outer_radius (int deriv_order=0) const =0 |
Outer radius of the zone or its derivative (per last. More... | |
virtual double | outer_radius (double age, int deriv_order=0) const =0 |
Same as outer_radius(int) but may be evaluated at a different age than for last confgure(). More... | |
virtual double | outer_mass (int deriv_order=0) const =0 |
Mass coordinate of the zone's outer ouboundary or its derivative. More... | |
virtual double | outer_mass (double age, int deriv_order=0) const =0 |
Same as outer_mass(int), but may be evaluated at a different age than last configure(). More... | |
virtual unsigned | eccentricity_order () const |
virtual void | change_e_order (unsigned new_e_order, BinarySystem &system, bool primary, unsigned zone_index) |
Changes the order of the eccentricity expansion performed. More... | |
virtual void | add_to_evolution () |
Appends the state defined by last configure(), to the evolution. More... | |
virtual void | rewind_evolution (unsigned nsteps) |
Discards the last steps from the evolution. More... | |
virtual void | reset_evolution () |
Discards all evolution. More... | |
const std::list< double > & | get_evolution_real (ZoneEvolutionQuantities quantity) const |
The tabulated evolution of a real valued quantity so far. More... | |
const std::list< int > & | get_evolution_integer (ZoneEvolutionQuantities quantity) const |
The tabulated evolution of an integer quantity so far. More... | |
unsigned | locked_zone_index () const |
The index of this zone in the list of locked zones (valid only if locked). More... | |
unsigned & | locked_zone_index () |
Reference to the locked_zone_index() of this zone. More... | |
virtual bool | dissipative () const =0 |
Should return true iff the zone has some non-zero dissipation. More... | |
virtual bool | can_lock () const =0 |
Should return true iff the zone's dissipation is discontinuous at zero frequency. More... | |
virtual CombinedStoppingCondition * | stopping_conditions (BinarySystem &system, bool primary, unsigned zone_index) |
Conditions detecting the next possible discontinuities in the evolution due to this zone. More... | |
virtual void | spin_jumped () |
Notifies the zone that its spin just jumped discontinously. More... | |
virtual void | reached_critical_age (double) |
Change the body as necessary at the given age. More... | |
virtual double | next_stop_age () const |
The next age when the evolution needs to be stopped for a change in one of the bodies. More... | |
const SpinOrbitLockInfo & | lock_monitored (bool other=false) const |
Useful for debugging. More... | |
Public Member Functions inherited from Evolve::ZoneOrientation | |
ZoneOrientation (double inclination=Core::NaN, double periapsis=Core::NaN) | |
void | configure (double inclination, double periapsis) |
Changes the zone orientation. More... | |
void | set_evolution_rates (double inclination, double periapsis) |
double | inclination (bool evolution_rate=false) const |
The angle between the angular momenta of the zone and the orbit. More... | |
double | periapsis (bool evolution_rate=false) const |
The argument of periapsis of this zone minus the reference zone's. More... | |
Protected Member Functions | |
void | initializing (bool flag) |
Notify the zone that it is in the process of initializing or not. More... | |
void | configure_spin (double spin, bool spin_is_frequency) |
Configures only the spin of the zone. More... | |
Private Member Functions | |
void | fix_forcing_frequency (const SpinOrbitLockInfo &limit, int orbital_frequency_multiplier, int spin_frequency_multiplier, double &forcing_frequency) const |
Ensure the forcing frequency has the correct sign per the given constraint. More... | |
void | update_lock_to_lower_e_order (SpinOrbitLockInfo &lock) |
Updates a SpinOrbitLockInfo variable as appropriate when decreasing the eccentricity expansion order. More... | |
void | limit_above_lock_per_expansion_order (int proposed_orbital_multiplier, int proposed_spin_multiplier) |
Set up __other_lock to the closest term above, given the term that would be used without limit to the orbital multiplier. More... | |
void | set_faster_spin_lock (int proposed_orbital_multiplier, int proposed_spin_multiplier) |
Set up the lock that would be triggered if the spin increased by absolute value, given the closest term from an infinite expansion. More... | |
void | initialize_locks () |
Initializes the locks the first time the zone is configure() -ed. More... | |
void | add_tidal_term (int m, int mp, double tidal_frequency, const TidalTermTriplet &U_value, const TidalTermTriplet &U_i_deriv, const TidalTermTriplet &U_e_deriv, const TidalTermTriplet &U_error) |
Add a term to the tidal torque and power arrays. More... | |
virtual void | check_locks_consistency () const |
Runs a bunch of asserts to check the consistency of __lock and __other_lock. More... | |
Private Attributes | |
unsigned | __e_order |
The expansion order in eccentricity to use. More... | |
TidalPotentialTerms | __potential_term |
The expansion of the tidal potential in series. More... | |
double | __angular_momentum |
The current angular momentum of the zone. More... | |
double | __angular_momentum_evolution_rate |
The current rate of angular momentum evolution of the zone. More... | |
double | __spin_frequency |
The current spin frequency of the zone. More... | |
double | __orbital_frequency |
The orbital frequency (rad/day). More... | |
double | __orbital_angmom |
The absolute value of the angular momentum of the orbit. More... | |
std::valarray< double > | __power |
The dimensionless tidal power and its error and derivatives. More... | |
std::valarray< double > | __torque_x |
The dimensionless tidal torque in the x direction and its derivatives. More... | |
std::valarray< double > | __torque_y |
The dimensionless tidal torque in the y direction and its derivatives. More... | |
std::valarray< double > | __torque_z |
The dimensionless tidal torque in the z direction and its derivatives. More... | |
SpinOrbitLockInfo | __lock |
The lock the zone is currently held at (disabled if not locked). More... | |
SpinOrbitLockInfo | __other_lock |
The term closest matched by the current spin-orbit ratio in the other direction from __lock. More... | |
std::vector< std::list< double > > | __evolution_real |
The floating point quantities whose evolution is tracked. More... | |
std::vector< std::list< int > > | __evolution_integer |
The integer quantities whose evolution is tracked. More... | |
unsigned | __locked_zone_index |
If this zone is locked, this is its index in the list of locked zones in the system. More... | |
bool | __initializing |
Is the zone in the middle of initializing (disable lock check)? More... | |
Static Private Attributes | |
static const double | __torque_x_plus_coef [] |
\(\kappa_{m,m'}^+/\kappa_{m,m'}\) as a function of \(m=-2 \ldots 2\). More... | |
static const double | __torque_x_minus_coef [] |
\(\kappa_{m,m'}^-/\kappa_{m,m'}\) as a function of \(m=-2 \ldots 2\). More... | |
A layer of a system body for which the tidal bulge is not exactly in phase with the tidal potential.
Definition at line 132 of file DissipatingZone.h.
|
private |
Add a term to the tidal torque and power arrays.
m | The azimuthal number of the term to add. |
mp | The time frequnecy number of the term to add. |
tidal_frequency | The tidal frequency of the term to add. |
U_value | The \(\mathcal{U}_{m-1, m'}\), \(\mathcal{U}_{m, m'}\), and \(\mathcal{U}_{m+1, m'}\) terms |
U_i_deriv | The derivative with respect to inclination of U_value. |
U_e_deriv | The derivative with respect to eccentricity of U_value. |
U_error | Estimate of the error in U_value due to truncating the eccentricity expansion. |
Definition at line 290 of file DissipatingZone.cpp.
|
virtual |
Appends the state defined by last configure(), to the evolution.
Definition at line 954 of file DissipatingZone.cpp.
|
inline |
The angular momentum of the given zone in \(M_\odot R_\odot^2\).
Definition at line 587 of file DissipatingZone.h.
|
pure virtual |
Should return true iff the zone's dissipation is discontinuous at zero frequency.
Implemented in Evolve::BrokenPowerlawPhaseLagZone, Evolve::SingleTidalTermZone, and Evolve::ConstPhaseLagZone.
|
virtual |
Changes the order of the eccentricity expansion performed.
new_e_order | The new eccentricity expansion order. |
system | The system being evolved. |
primary | Is the body this zone is part of, the primary in the system. |
zone_index | The index of the zone in the body. |
Reimplemented in Evolve::BrokenPowerlawPhaseLagZone.
Definition at line 902 of file DissipatingZone.cpp.
|
privatevirtual |
Runs a bunch of asserts to check the consistency of __lock and __other_lock.
Definition at line 113 of file DissipatingZone.cpp.
|
virtual |
Defines the current orbit, triggering re-calculation of all quantities.
initialize | Is this the first time the zone is configure() -ed? |
age | The age to set the zone to. |
orbital_frequency | The angular velocity of the orbit in rad/day. |
eccentricity | The eccentricity of the orbit |
orbital_angmom | The absolute value of the angular momentum of the orbit. |
spin | The angular momentum or spin frequency of the zone if the zone is not in a spin–orbit lock (ignored it if is). |
inclination | The inclination of the zone relative to the orbit. |
periapsis | The argument of periapsis of the orbit in the equatorial planet of the zone. |
spin_is_frequency | Should the spin argument be interpreted as an angular momentum or a spin frequency? |
Reimplemented in Evolve::BrokenPowerlawPhaseLagZone, Planet::PlanetZone, Evolve::PolynomialEvolutionZone, and Star::EvolvingStellarZone.
Definition at line 485 of file DissipatingZone.cpp.
|
protected |
Configures only the spin of the zone.
spin | See same name argument to configure(). |
spin_is_frequency | See same name argument to configure(). |
Definition at line 461 of file DissipatingZone.cpp.
|
pure virtual |
Should return true iff the zone has some non-zero dissipation.
Implemented in Evolve::BrokenPowerlawPhaseLagZone, Evolve::SingleTidalTermZone, and Evolve::ConstPhaseLagZone.
|
inlinevirtual |
To what order should eccentricity expansion be performed for the given value of the eccentricity.
Definition at line 805 of file DissipatingZone.h.
|
private |
Ensure the forcing frequency has the correct sign per the given constraint.
If the forcing frequency has the opposite sign of what is expected based on the given lock information it is set to the smallest possible value with the correct sign.
limit | A tidal term for which the sign is known. |
orbital_frequency_multiplier | The multiplier of the orbital frequency in the expression for the forcing frequency. |
spin_frequency_multiplier | The multiplier of the spin frequency in the expression for the forcing frequency. |
forcing_frequency | The current forcing frequency to be updated if it violates the limit. |
Definition at line 48 of file DissipatingZone.cpp.
double DissipatingZone::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.
Makes sure the forcing frequency has the correct sign regardless of numerical round-off.
orbital_frequency_multiplier | The multiplier of the orbital frequency in the expression for the forcing frequency. |
spin_frequency_multiplier | The multiplier of the spin frequency in the expression for the forcing frequency. |
orbital_frequency | The orbital frequency. |
Definition at line 607 of file DissipatingZone.cpp.
|
inline |
The tabulated evolution of an integer quantity so far.
Definition at line 845 of file DissipatingZone.h.
|
inline |
The tabulated evolution of a real valued quantity so far.
Definition at line 835 of file DissipatingZone.h.
double DissipatingZone::inclination_evolution | ( | const Eigen::Vector3d & | orbit_torque, |
const Eigen::Vector3d & | zone_torque, | ||
Dissipation::QuantityEntry | entry = Dissipation::NO_DERIV , |
||
const Eigen::Vector3d & | orbit_torque_deriv = Eigen::Vector3d() , |
||
const Eigen::Vector3d & | zone_torque_deriv = Eigen::Vector3d() |
||
) |
The rate at which the inclination between this zone and the orbit is changing.
configure() must already have been called, and inclination() and spin_frequency() must be current.
orbit_torque | The torque on the orbit or reference zone due all zones (including this one) in this zone's coordinate system. |
zone_torque | All torques acting on this zone (i.e. tidal, angular momentum loss due to wind for the surface zone and coupling to neightboring zones due to differential rotation). |
entry | If:
|
orbit_torque_deriv | This argument is required if deriv is neither NO_DERIV nor PERIAPSIS, and should contain the derivative of the orbital torque relative to the quantity identified by deriv. |
zone_torque_deriv | This argument is required if dervi is neither NO_DERIV nor PERIAPSIS, and shoul contain the derivative of the zone torque relative to the quantity identified by deriv. |
Definition at line 762 of file DissipatingZone.cpp.
|
private |
Initializes the locks the first time the zone is configure() -ed.
The spin frequency and orbital frequency must already be set.
Definition at line 222 of file DissipatingZone.cpp.
|
inlineprotected |
Notify the zone that it is in the process of initializing or not.
Definition at line 310 of file DissipatingZone.h.
|
private |
Set up __other_lock to the closest term above, given the term that would be used without limit to the orbital multiplier.
|
inline |
The currntly held lock.
Definition at line 488 of file DissipatingZone.h.
|
inline |
Useful for debugging.
Definition at line 910 of file DissipatingZone.h.
|
inlinevirtual |
Should return true iff the given term is presently locked.
Definition at line 478 of file DissipatingZone.h.
|
inlinevirtual |
Should return true iff any tidal term is locked.
Definition at line 484 of file DissipatingZone.h.
|
inline |
The index of this zone in the list of locked zones (valid only if locked).
Definition at line 857 of file DissipatingZone.h.
|
inline |
Reference to the locked_zone_index() of this zone.
Definition at line 865 of file DissipatingZone.h.
|
pure virtual |
Should return the corresponding component of the love coefficient (Lai 2012 Equation 24).
orbital_frequency_multiplier | The multiplier of the orbital frequency in the expression for the forcing frequency. |
spin_frequency_multiplier | The multiplier of the spin frequency in the expression for the forcing frequency. |
entry | The return value should be either the phase lag itself (NO_DERIV) or its derivative w.r.t. the specified quantity. Usually there will be no error due to truncating the eccentricity expansion coefficient. |
Implemented in Evolve::BrokenPowerlawPhaseLagZone, and Evolve::PolynomialEvolutionZone.
|
pure virtual |
Should return the tidal phase lag time the love number for the given tidal term (or one of its derivatives).
In case the forcing frequency is exactly zero, it should return the phase lag for the case of the spin frequency approaching the term from below. The lag for spin frequency approaching from above should be written to above_lock_value. If the forcing frequency is non-zero, leave above_lock_value untouched.
orbital_frequency_multiplier | The multiplier of the orbital frequency in the expression for the forcing frequency. |
spin_frequency_multiplier | The multiplier of the spin frequency in the expression for the forcing frequency. |
forcing_frequency | The current forcing frequency in rad/day. |
entry | The return value should be either the phase lag itself (NO_DERIV) or its derivative w.r.t. the specified quantity. Usually there will be no error due to truncating the eccentricity expansion coefficient. |
above_lock_value | If the lag of a locked term is calculated this should be set to the lag assuming the spin frequency is just above the lock. Otherwise, leave untouched. |
Implemented in Evolve::BrokenPowerlawPhaseLagZone, Evolve::SingleTidalTermZone, and Evolve::ConstPhaseLagZone.
|
pure virtual |
Moment of inertia of the zone or its age derivative at the age of last configure() call.
deriv_order | What to return:
|
Implemented in Evolve::PolynomialEvolutionZone, Planet::PlanetZone, Star::EvolvingStellarCore, and Star::EvolvingStellarEnvelope.
|
pure virtual |
The moment of inertia of the zone or its age derivative at a specified age (no configure necessary).
age | The age at which to evaluate the moment of inertia. |
deriv_order | What to return:
|
Implemented in Evolve::PolynomialEvolutionZone, Planet::PlanetZone, Star::EvolvingStellarCore, and Star::EvolvingStellarEnvelope.
|
inlinevirtual |
The next age when the evolution needs to be stopped for a change in one of the bodies.
Reimplemented in Star::EvolvingStellarZone.
Definition at line 906 of file DissipatingZone.h.
|
pure virtual |
Mass coordinate of the zone's outer ouboundary or its derivative.
The outermost zone's boundary is considered to be the mass of the body and should be constant.
deriv_order | What to return:
|
Implemented in Evolve::PolynomialEvolutionZone, Planet::PlanetZone, Star::EvolvingStellarCore, and Star::EvolvingStellarEnvelope.
|
pure virtual |
Same as outer_mass(int), but may be evaluated at a different age than last configure().
Implemented in Evolve::PolynomialEvolutionZone, Planet::PlanetZone, Star::EvolvingStellarCore, and Star::EvolvingStellarEnvelope.
|
pure virtual |
Outer radius of the zone or its derivative (per last.
The outermost zone's outer radius is considered to be the radius of the body.
deriv_order | What to return:
|
Implemented in Evolve::PolynomialEvolutionZone, Planet::PlanetZone, Star::EvolvingStellarCore, and Star::EvolvingStellarEnvelope.
|
pure virtual |
Same as outer_radius(int) but may be evaluated at a different age than for last confgure().
Implemented in Evolve::PolynomialEvolutionZone, Planet::PlanetZone, Star::EvolvingStellarCore, and Star::EvolvingStellarEnvelope.
double DissipatingZone::periapsis_evolution | ( | const Eigen::Vector3d & | orbit_torque, |
const Eigen::Vector3d & | zone_torque, | ||
Dissipation::QuantityEntry | entry = Dissipation::NO_DERIV , |
||
const Eigen::Vector3d & | orbit_torque_deriv = Eigen::Vector3d() , |
||
const Eigen::Vector3d & | zone_torque_deriv = Eigen::Vector3d() |
||
) |
The rate at which the periapsis of the orbit/reference zone in this zone's equatorial plane is changing.
Either configure() or set_reference_zone_angmom() must already have been called, and inclination() and spin_frequency() must be current.
orbit_torque | The torque on the orbit due to all other zones in this zone's coordinate system. |
zone_torque | All torques acting on this zone (i.e. tidale, angular momentum loss due to wind for the surface zone and coupling to neightboring zones due to differential rotation). |
entry | If not Dissipation::NO_DERIV, the corresponding entry of the rate is returned. For zone-specific quantities, derivative with respect to this zone's quantity is computed. If derivatives with respect to other zone's quantities are required, those only come in through the orbit torque and external torque, so pass the corresponding derivative instead of the actual torques, and ignore this and subsequent arguments. |
orbit_torque_deriv | This argument is required if dervi is neither NO_DERIV nor PERIAPSIS, and should contain the derivative of the orbital torque relative to the quantity identified by deriv. |
zone_torque_deriv | This argument is required if deriv is neither NO_DERIV nor PERIAPSIS, and shoul contain the derivative of the zone torque relative to the quantity identified by deriv. |
Definition at line 658 of file DissipatingZone.cpp.
|
inlinevirtual |
Change the body as necessary at the given age.
Handles things like interpolation discontinuities.
Reimplemented in Star::EvolvingStellarZone.
Definition at line 901 of file DissipatingZone.h.
void DissipatingZone::release_lock | ( | ) |
Update the zone as necessary when the held lock disappears from the expansion.
Definition at line 855 of file DissipatingZone.cpp.
void DissipatingZone::release_lock | ( | short | direction | ) |
Update the zone as necessary when the held lock is broken.
direction | The direction that the spin will evolve toward in the future. |
Definition at line 879 of file DissipatingZone.cpp.
|
virtual |
Discards all evolution.
Definition at line 1004 of file DissipatingZone.cpp.
|
virtual |
Discards the last steps from the evolution.
nsteps | How many steps of evolution to discard. |
Definition at line 1012 of file DissipatingZone.cpp.
|
inline |
Set evolution rates for this zone's properties for storing in the eveloution.
angular_momentum | The rate at which the magnitude of the angular momentum changes |
inclination | The rate at which the obliquity changes |
periapsis | The rate at which the periapsis changes |
Definition at line 360 of file DissipatingZone.h.
|
private |
Set up the lock that would be triggered if the spin increased by absolute value, given the closest term from an infinite expansion.
proposed_orbital_multiplier | The proposed coefficient for the orbital frequency for the closest term to the current combination of orbital and spin frequencies that would lock if the spin got larger by absolute value, if the tidal potential expansion was calculated up to infinitely large s. Should be negative if the spin of the zone is negative. |
proposed_spin_multiplier | The proposed coefficient of the zone spin frequency for the closest term to the current combination of orbital and spin frequencies that would lock if the spin got larger by absolute value, if the tidal potential expansion was calculated up to infinitely large s. |
|
inline |
Locks the zone spin to the orbit in the given ratio.
Definition at line 501 of file DissipatingZone.h.
|
inline |
Defines the angular momentum of the reference zone for single body evolution.
Definition at line 395 of file DissipatingZone.h.
|
inline |
The spin frequency of the given zone.
Definition at line 584 of file DissipatingZone.h.
|
inlinevirtual |
Notifies the zone that its spin just jumped discontinously.
Definition at line 895 of file DissipatingZone.h.
|
virtual |
Conditions detecting the next possible discontinuities in the evolution due to this zone.
Must be deleted when no longer necessary.
system | The system being evolved. |
primary | Is the body this zone is part of, the primary in the system. |
zone_index | The index of the zone in the body. |
Reimplemented in Evolve::BrokenPowerlawPhaseLagZone.
Definition at line 1022 of file DissipatingZone.cpp.
|
inline |
The dimensionless tidal power or one of its derivatives.
above | If a spin-orbit lock is in effect and the time-lag is discontinuous near zero forcing frequency, two possible values can be calculated, assuming that the zone spin frequency approaches the lock from below (false) or from above (true). |
entry | What to return |
Definition at line 590 of file DissipatingZone.h.
|
inline |
Same as tidal_power(bool, Dissipation::QuantityEntry), but using the predefined mix of below/above contributions.
above_fraction | The fraction of the timestep to assume to have spin above the lock. |
entry | What to return |
Definition at line 612 of file DissipatingZone.h.
|
inline |
The dimensionless tidal torque along x.
See tidal_power() for a description of the arguments.
Definition at line 639 of file DissipatingZone.h.
|
inline |
Same as tidal_torque_x(bool, Dissipation::QuantityEntry) but below and above contributions mixed.
above_fraction | The fraction of the timestep to assume to have spin above the lock. |
entry | The entry required (ignores the derivative of above_fraction if derivative is required). |
Definition at line 655 of file DissipatingZone.h.
|
inline |
The dimensionless torque along y.
See tidal_power() for a description of the arguments.
Definition at line 686 of file DissipatingZone.h.
|
inline |
Same as tidal_torque_y(bool, Dissipation::QuantityEntry) but below and above contributions mixed.
above_fraction | The fraction of the timestep to assume to have spin above the lock. |
entry | The torque entry required (ignores the derivative of above_fraction for derivatives). |
Definition at line 706 of file DissipatingZone.h.
|
inline |
The dimensionless tidal torque along z.
See tidal_power() for a description of the arguments.
Definition at line 731 of file DissipatingZone.h.
|
inline |
Same as tidal_torque_z(bool, Dissipation::QuantityEntry) but below and above contributions mixed.
above_fraction | The fraction of the timestep to assume to have spin above the lock. |
entry | The entry required (ignores the derivative of above_fraction for derivatives). |
Definition at line 747 of file DissipatingZone.h.
|
private |
Updates a SpinOrbitLockInfo variable as appropriate when decreasing the eccentricity expansion order.
__e_order must already be updated to the new value.
Definition at line 179 of file DissipatingZone.cpp.
|
private |
The current angular momentum of the zone.
Definition at line 150 of file DissipatingZone.h.
|
private |
The current rate of angular momentum evolution of the zone.
Definition at line 150 of file DissipatingZone.h.
|
private |
The expansion order in eccentricity to use.
Definition at line 135 of file DissipatingZone.h.
|
private |
The integer quantities whose evolution is tracked.
Definition at line 208 of file DissipatingZone.h.
|
private |
The floating point quantities whose evolution is tracked.
Definition at line 205 of file DissipatingZone.h.
|
private |
Is the zone in the middle of initializing (disable lock check)?
Definition at line 215 of file DissipatingZone.h.
|
private |
The lock the zone is currently held at (disabled if not locked).
If the zone is not locked, this is one of the two terms closest to the current spin-orbit ratio and its sign is correct.
Definition at line 198 of file DissipatingZone.h.
|
private |
If this zone is locked, this is its index in the list of locked zones in the system.
Definition at line 212 of file DissipatingZone.h.
|
private |
The absolute value of the angular momentum of the orbit.
Definition at line 150 of file DissipatingZone.h.
|
private |
The orbital frequency (rad/day).
Definition at line 150 of file DissipatingZone.h.
|
private |
The term closest matched by the current spin-orbit ratio in the other direction from __lock.
Definition at line 198 of file DissipatingZone.h.
|
private |
The expansion of the tidal potential in series.
Definition at line 138 of file DissipatingZone.h.
|
private |
The dimensionless tidal power and its error and derivatives.
Consists of pairs of numbers one for each derivative. The first number of each pair is always filled and if the zone is in a lock it is the tidal power calculated assuming the zone spin frequency approaches the lock from below. The second number is filled only if the zone is in a spin-orbit lock and is the tidal power assuming the zone spin frequency approaches the lock from above. After all derivatives the final pair of numbers give the error in the undifferentiated value.
Definition at line 174 of file DissipatingZone.h.
|
private |
The current spin frequency of the zone.
Definition at line 150 of file DissipatingZone.h.
|
private |
The dimensionless tidal torque in the x direction and its derivatives.
See description of __power for details on the content.
Definition at line 174 of file DissipatingZone.h.
|
staticprivate |
\(\kappa_{m,m'}^-/\kappa_{m,m'}\) as a function of \(m=-2 \ldots 2\).
Definition at line 146 of file DissipatingZone.h.
|
staticprivate |
\(\kappa_{m,m'}^+/\kappa_{m,m'}\) as a function of \(m=-2 \ldots 2\).
Definition at line 142 of file DissipatingZone.h.
|
private |
The dimensionless tidal torque in the y direction and its derivatives.
See description of __power for details on the content.
Definition at line 174 of file DissipatingZone.h.
|
private |
The dimensionless tidal torque in the z direction and its derivatives.
See description of __power for details on the content.
Definition at line 174 of file DissipatingZone.h.