Planetary Orbital Evolution due to Tides
Orbital evolution of two objects experiencing tides
Star::ExponentialDecayDiffRotBody Class Reference

A body with differential rotation torque between two zones given by: \(\dot{L}_1=\frac{I_1 L_2 - I_2 L_1}{\tau_c(I_1+I_2)}\). More...

#include <ExponentialDecayDiffRotBody.h>

+ Inheritance diagram for Star::ExponentialDecayDiffRotBody:
+ Collaboration diagram for Star::ExponentialDecayDiffRotBody:

Public Member Functions

 ExponentialDecayDiffRotBody (double coupling_timescale)
 Construct a body with default differential rotatino torque. More...
 
virtual void configure (bool initialize, double age, double companion_mass, double semimajor, double eccentricity, const double *spin_angmom, const double *inclination=NULL, const double *periapsis=NULL, bool locked_surface=false, bool zero_outer_inclination=false, bool zero_outer_periapsis=false)
 See DissipatingBody::configure(). More...
 
Eigen::Vector3d angular_momentum_coupling (unsigned top_zone_index, Evolve::Dissipation::QuantityEntry entry=Evolve::Dissipation::NO_DERIV, bool with_respect_to_top=false) const
 See DissipatingBody::angular_momentum_coupling(). More...
 
- Public Member Functions inherited from Evolve::DissipatingBody
 DissipatingBody ()
 Some initializations for new objects. More...
 
void lock_zone_spin (unsigned zone_index, int orbital_frequency_multiplier, int spin_frequency_multiplier)
 
void unlock_zone_spin (unsigned zone_index, short direction)
 Releases the given zone from a spin-orbit lock. More...
 
unsigned number_locked_zones () const
 The number of zones currently in a spin-orbit lock. More...
 
Eigen::Vector3d nontidal_torque (unsigned zone_index, Dissipation::QuantityEntry deriv=Dissipation::NO_DERIV, int deriv_zone=0) const
 External torque acting on a single zone (last calculate_torques_power()). More...
 
const Eigen::Vector3d & tidal_torque (unsigned zone_index, bool above, Dissipation::QuantityEntry entry=Dissipation::NO_DERIV) const
 Tidal torque acting on the given zone (last calculate_torques_power()). More...
 
double tidal_power (unsigned zone_index, bool above, Dissipation::QuantityEntry entry=Dissipation::NO_DERIV) const
 Tidal power dissipated in the given zone. More...
 
void set_above_lock_fractions (std::valarray< Eigen::VectorXd > &above_lock_fractions)
 Corrects the tidal orbit energy gain and angular momentum gain for locked zones. More...
 
double tidal_orbit_power (Dissipation::QuantityEntry entry=Dissipation::NO_DERIV, unsigned deriv_zone_index=0, const Eigen::VectorXd &above_lock_fraction_deriv=Eigen::VectorXd()) const
 Rate of increase of the orbital energy due to tides in this body (last calculate_torques_power()). More...
 
Eigen::Vector3d tidal_orbit_torque (Dissipation::QuantityEntry deriv=Dissipation::NO_DERIV, unsigned deriv_zone_index=0, const Eigen::VectorXd &above_lock_fraction_deriv=Eigen::VectorXd()) const
 The torque on the orbit due to tidal dissipation in the body. More...
 
Eigen::Vector3d tidal_orbit_torque (const DissipatingZone &reference_zone, Dissipation::QuantityEntry deriv=Dissipation::NO_DERIV, unsigned deriv_zone_index=0, const Eigen::VectorXd &above_lock_fraction_deriv=Eigen::VectorXd()) const
 Same as tidal_orbit_torque(Dissipation::QuantityEntry, unsigned, const Eigen::VectorXd &) but allow specifying the zone whose coordinate system to use. More...
 
virtual unsigned number_zones () const =0
 The number of zones the body consists of. More...
 
virtual const DissipatingZonezone (unsigned zone_index) const =0
 A modifiable reference to one of the body's zones. More...
 
virtual DissipatingZonezone (unsigned zone_index)=0
 A modifiable reference to one of the body's zones. More...
 
virtual Eigen::Vector3d angular_momentum_coupling (unsigned top_zone_index, Dissipation::QuantityEntry deriv=Dissipation::NO_DERIV, bool with_respect_to_top=false) const =0
 Coupling torque for two neighboring zones in the coordinate system of the top zone. More...
 
virtual double angular_momentum_loss (Dissipation::QuantityEntry deriv=Dissipation::NO_DERIV) const =0
 Rate of angular momentum loss by the top zone of the body and its derivatives. More...
 
double radius (int deriv_order=0) const
 The current radius or its derivative with age of the body. More...
 
double mass () const
 The mass of the body (constant with age). More...
 
double spin_frequency () const
 The surface spin freuqency of the body. More...
 
double surface_lock_frequency () const
 Angular velocity of the surface zone when locked (assumed constant). More...
 
void set_surface_lock_frequency (double frequency)
 Sets the frequency at which the surface is locked (if any). 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...
 
virtual CombinedStoppingConditionstopping_conditions (BinarySystem &system, bool primary)
 Conditions detecting the next possible discontinuities in the evolution due to this body. More...
 
virtual void spin_jumped ()
 Notifies the body that its spin just discontinously jumped. 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...
 
virtual void change_e_order (unsigned new_e_order, BinarySystem &system, bool primary)
 Change the eccentricity expansion order for all dissipative zones. More...
 
virtual ~DissipatingBody ()
 Virtual destructor. More...
 

Private Member Functions

void reset_torque ()
 Resets __torque to all undefined (correcting the size if necessary). More...
 
Eigen::Vector3d & torque_entry (unsigned top_zone_index, Evolve::Dissipation::QuantityEntry entry, bool wih_respect_to_top) const
 Returns the entry in __torque that corresponds to the given quantity entry. More...
 

Private Attributes

double __current_age
 The age for which the last conigure() was called. More...
 
double __timescale
 The timescale for the differential rotation torque. More...
 
std::valarray< std::valarray< Eigen::Vector3d > > __torque
 The coupling torque and its nonzero entries. More...
 

Detailed Description

A body with differential rotation torque between two zones given by: \(\dot{L}_1=\frac{I_1 L_2 - I_2 L_1}{\tau_c(I_1+I_2)}\).

Definition at line 21 of file ExponentialDecayDiffRotBody.h.

Constructor & Destructor Documentation

◆ ExponentialDecayDiffRotBody()

Star::ExponentialDecayDiffRotBody::ExponentialDecayDiffRotBody ( double  coupling_timescale)
inline

Construct a body with default differential rotatino torque.

Parameters
coupling_timescaleThe timescale for differential rotation coupling.

Definition at line 54 of file ExponentialDecayDiffRotBody.h.

Member Function Documentation

◆ angular_momentum_coupling()

Eigen::Vector3d Star::ExponentialDecayDiffRotBody::angular_momentum_coupling ( unsigned  top_zone_index,
Evolve::Dissipation::QuantityEntry  entry = Evolve::Dissipation::NO_DERIV,
bool  with_respect_to_top = false 
) const

See DissipatingBody::angular_momentum_coupling().

Definition at line 86 of file ExponentialDecayDiffRotBody.cpp.

◆ configure()

void Star::ExponentialDecayDiffRotBody::configure ( bool  initialize,
double  age,
double  companion_mass,
double  semimajor,
double  eccentricity,
const double *  spin_angmom,
const double *  inclination = NULL,
const double *  periapsis = NULL,
bool  locked_surface = false,
bool  zero_outer_inclination = false,
bool  zero_outer_periapsis = false 
)
virtual

See DissipatingBody::configure().

Invokes DissipatingBody::configure().

Reimplemented from Evolve::DissipatingBody.

Definition at line 57 of file ExponentialDecayDiffRotBody.cpp.

◆ reset_torque()

void Star::ExponentialDecayDiffRotBody::reset_torque ( )
private

Resets __torque to all undefined (correcting the size if necessary).

Definition at line 13 of file ExponentialDecayDiffRotBody.cpp.

◆ torque_entry()

Eigen::Vector3d & Star::ExponentialDecayDiffRotBody::torque_entry ( unsigned  top_zone_index,
Evolve::Dissipation::QuantityEntry  entry,
bool  wih_respect_to_top 
) const
private

Returns the entry in __torque that corresponds to the given quantity entry.

The quantity to differentiate against must have an entry in __torque (i.e. the entry must not be zero in general).

See DissipatingBody::angular_momentum_coupling() for a description of the arguments.

Definition at line 23 of file ExponentialDecayDiffRotBody.cpp.

Member Data Documentation

◆ __current_age

double Star::ExponentialDecayDiffRotBody::__current_age
private

The age for which the last conigure() was called.

Definition at line 25 of file ExponentialDecayDiffRotBody.h.

◆ __timescale

double Star::ExponentialDecayDiffRotBody::__timescale
private

The timescale for the differential rotation torque.

Definition at line 25 of file ExponentialDecayDiffRotBody.h.

◆ __torque

std::valarray< std::valarray<Eigen::Vector3d> > Star::ExponentialDecayDiffRotBody::__torque
mutableprivate

The coupling torque and its nonzero entries.

The outer index is the index of the outer zone being torqued. The meaning of the inner index is defined by torque_entry.

Definition at line 34 of file ExponentialDecayDiffRotBody.h.


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