Planetary Orbital Evolution due to Tides
Orbital evolution of two objects experiencing tides
Evolve::PolynomialEvolutionZone Class Reference
+ Inheritance diagram for Evolve::PolynomialEvolutionZone:
+ Collaboration diagram for Evolve::PolynomialEvolutionZone:

Public Member Functions

 PolynomialEvolutionZone (const std::valarray< double > &mass_coefficients, const std::valarray< double > &radius_coefficients, const std::valarray< double > &inertia_coefficients)
 Construct a polynomial evolution zone with the given coefficients. More...
 
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)
 See DissipatingZone::configure(). More...
 
double outer_mass (int deriv_order=0) const
 See DissipatingZone::outer_mass(int). More...
 
double outer_mass (double age, int deriv_order=0) const
 See DissipatingZone::outer_mass(double, int). More...
 
double outer_radius (int deriv_order=0) const
 See DissipatingZone::outer_radius(int). More...
 
double outer_radius (double age, int deriv_order=0) const
 See DissipatingZone::outer_radius(double, int). More...
 
virtual double moment_of_inertia (int deriv_order=0) const
 See DissipatingZone::moment_of_inertia(int). More...
 
virtual double moment_of_inertia (double age, int deriv_order=0) const
 See DissipatingZone::moment_of_inertia(double, int). More...
 
double love_coefficient (int, int, Dissipation::QuantityEntry) const
 See DissipatingZone::love_coefficient() More...
 
- Public Member Functions inherited from Evolve::DissipatingZone
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 SpinOrbitLockInfolock_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...
 
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 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 CombinedStoppingConditionstopping_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 SpinOrbitLockInfolock_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...
 

Private Member Functions

double evaluate_polynomial (const std::valarray< double > &coefficients, double age, int deriv_order) const
 Evaluate either the given order derivative of either the mass or the radius polynomial. More...
 

Private Attributes

std::valarray< double > __mass_coefficients
 The coefficients of the polynomial for the mass evolution. More...
 
std::valarray< double > __radius_coefficients
 The coefficients of the polynomial for the radius evolution. More...
 
std::valarray< double > __inertia_coefficients
 The coefficients of the polynomial for the moment of inertia evolution. More...
 
std::valarray< double > __current_mass
 The outer mass ofthe zone at the age of the last call to configure() and its first and second derivatives. More...
 
std::valarray< double > __current_radius
 The outer radius ofthe zone at the age of the last call to configure() and its first and second derivatives. More...
 
std::valarray< double > __current_inertia
 The moment of inertia ofthe zone at the age of the last call to configure() and its first and second derivatives. More...
 

Additional Inherited Members

- Protected Member Functions inherited from Evolve::DissipatingZone
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...
 

Detailed Description

Definition at line 18 of file PolynomialEvolutionZone.h.

Constructor & Destructor Documentation

◆ PolynomialEvolutionZone()

Evolve::PolynomialEvolutionZone::PolynomialEvolutionZone ( const std::valarray< double > &  mass_coefficients,
const std::valarray< double > &  radius_coefficients,
const std::valarray< double > &  inertia_coefficients 
)
inline

Construct a polynomial evolution zone with the given coefficients.

Parameters
mass_coefficientsThe coefficients of the polynomial for the mass evolution.
radius_coefficientsThe coefficients of the polynomial for the radius evolution.
inertia_coefficientsThe coefficients of the polynomial for the moment of inertia evolution.

Definition at line 58 of file PolynomialEvolutionZone.h.

Member Function Documentation

◆ configure()

void Evolve::PolynomialEvolutionZone::configure ( bool  initialize,
double  age,
double  orbital_frequency,
double  eccentricity,
double  orbital_angmom,
double  spin,
double  inclination,
double  periapsis,
bool  spin_is_frequency 
)
virtual

See DissipatingZone::configure().

Reimplemented from Evolve::DissipatingZone.

Definition at line 11 of file PolynomialEvolutionZone.cpp.

◆ evaluate_polynomial()

double Evolve::PolynomialEvolutionZone::evaluate_polynomial ( const std::valarray< double > &  coefficients,
double  age,
int  deriv_order 
) const
private

Evaluate either the given order derivative of either the mass or the radius polynomial.

Parameters
coefficientsThe coefficienst of the polynomial to evaluate.
ageThe age at which to evaluate the polynomial.
deriv_orderThe derivative order desired.

Definition at line 41 of file PolynomialEvolutionZone.cpp.

◆ love_coefficient()

double Evolve::PolynomialEvolutionZone::love_coefficient ( int  ,
int  ,
Dissipation::QuantityEntry   
) const
inlinevirtual

◆ moment_of_inertia() [1/2]

virtual double Evolve::PolynomialEvolutionZone::moment_of_inertia ( int  deriv_order = 0) const
inlinevirtual

See DissipatingZone::moment_of_inertia(int).

Implements Evolve::DissipatingZone.

Definition at line 105 of file PolynomialEvolutionZone.h.

◆ moment_of_inertia() [2/2]

virtual double Evolve::PolynomialEvolutionZone::moment_of_inertia ( double  age,
int  deriv_order = 0 
) const
inlinevirtual

See DissipatingZone::moment_of_inertia(double, int).

Implements Evolve::DissipatingZone.

Definition at line 109 of file PolynomialEvolutionZone.h.

◆ outer_mass() [1/2]

double Evolve::PolynomialEvolutionZone::outer_mass ( int  deriv_order = 0) const
inlinevirtual

See DissipatingZone::outer_mass(int).

Implements Evolve::DissipatingZone.

Definition at line 89 of file PolynomialEvolutionZone.h.

◆ outer_mass() [2/2]

double Evolve::PolynomialEvolutionZone::outer_mass ( double  age,
int  deriv_order = 0 
) const
inlinevirtual

See DissipatingZone::outer_mass(double, int).

Implements Evolve::DissipatingZone.

Definition at line 93 of file PolynomialEvolutionZone.h.

◆ outer_radius() [1/2]

double Evolve::PolynomialEvolutionZone::outer_radius ( int  deriv_order = 0) const
inlinevirtual

See DissipatingZone::outer_radius(int).

Implements Evolve::DissipatingZone.

Definition at line 97 of file PolynomialEvolutionZone.h.

◆ outer_radius() [2/2]

double Evolve::PolynomialEvolutionZone::outer_radius ( double  age,
int  deriv_order = 0 
) const
inlinevirtual

See DissipatingZone::outer_radius(double, int).

Implements Evolve::DissipatingZone.

Definition at line 101 of file PolynomialEvolutionZone.h.

Member Data Documentation

◆ __current_inertia

std::valarray<double> Evolve::PolynomialEvolutionZone::__current_inertia
private

The moment of inertia ofthe zone at the age of the last call to configure() and its first and second derivatives.

Definition at line 34 of file PolynomialEvolutionZone.h.

◆ __current_mass

std::valarray<double> Evolve::PolynomialEvolutionZone::__current_mass
private

The outer mass ofthe zone at the age of the last call to configure() and its first and second derivatives.

Definition at line 34 of file PolynomialEvolutionZone.h.

◆ __current_radius

std::valarray<double> Evolve::PolynomialEvolutionZone::__current_radius
private

The outer radius ofthe zone at the age of the last call to configure() and its first and second derivatives.

Definition at line 34 of file PolynomialEvolutionZone.h.

◆ __inertia_coefficients

std::valarray<double> Evolve::PolynomialEvolutionZone::__inertia_coefficients
private

The coefficients of the polynomial for the moment of inertia evolution.

Definition at line 22 of file PolynomialEvolutionZone.h.

◆ __mass_coefficients

std::valarray<double> Evolve::PolynomialEvolutionZone::__mass_coefficients
private

The coefficients of the polynomial for the mass evolution.

Definition at line 22 of file PolynomialEvolutionZone.h.

◆ __radius_coefficients

std::valarray<double> Evolve::PolynomialEvolutionZone::__radius_coefficients
private

The coefficients of the polynomial for the radius evolution.

Definition at line 22 of file PolynomialEvolutionZone.h.


The documentation for this class was generated from the following files: