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

A DissipatingBody which loses angular momentum at a rate \(\propto\omega\min(\omega, \omega_{sat})^2\). More...

#include <SaturatingSkumanichWindBody.h>

+ Inheritance diagram for Star::SaturatingSkumanichWindBody:
+ Collaboration diagram for Star::SaturatingSkumanichWindBody:

Public Member Functions

 SaturatingSkumanichWindBody (double wind_strength, double saturation_frequency)
 
double angular_momentum_loss (Evolve::Dissipation::QuantityEntry entry=Evolve::Dissipation::NO_DERIV) const
 See DissipatingBody::angular_momentum_loss(). More...
 
double saturation_frequency ()
 The frequency at which the wind loss saturates in rad/day. More...
 
void detect_saturation ()
 Sets the saturation based on the currently configured spin frequency. More...
 
bool saturated ()
 Is the wind loss currently saturated? More...
 
void saturation_freq_crossed (short deriv_sign)
 Called by the stopping condition monitoring wind saturation. 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 Evolve::CombinedStoppingConditionstopping_conditions (Evolve::BinarySystem &system, bool primary)
 Conditions detecting the next possible discontinuities in the evolution due to this body. More...
 
const std::list< bool > & wind_saturation_evolution () const
 The tabulated wind saturation states so far. More...
 
void spin_jumped ()
 Resets its saturation state after a discontinous spin jump. More...
 
- Public Member Functions inherited from Evolve::DissipatingBody
 DissipatingBody ()
 Some initializations for new objects. 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)
 Defines the orbit this body is in. 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 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 Attributes

double __wind_strength
 The strength of the magnetic wind. More...
 
double __saturation_freq
 The frequency at which the wind loss saturates in rad/day. More...
 
bool __saturated
 Is the wind currently saturated? More...
 
std::list< bool > __saturation_evolution
 The saturation states recorded by add_to_evolution() so far. More...
 
bool __detected_saturation
 

Detailed Description

A DissipatingBody which loses angular momentum at a rate \(\propto\omega\min(\omega, \omega_{sat})^2\).

Definition at line 23 of file SaturatingSkumanichWindBody.h.

Constructor & Destructor Documentation

◆ SaturatingSkumanichWindBody()

Star::SaturatingSkumanichWindBody::SaturatingSkumanichWindBody ( double  wind_strength,
double  saturation_frequency 
)
inline
Parameters
wind_strengthThe strength of the wind.
saturation_frequencyThe frequency at which the wind loss saturates in rad/day.

Definition at line 42 of file SaturatingSkumanichWindBody.h.

Member Function Documentation

◆ add_to_evolution()

virtual void Star::SaturatingSkumanichWindBody::add_to_evolution ( )
inlinevirtual

Appends the state defined by last configure(), to the evolution.

Reimplemented from Evolve::DissipatingBody.

Definition at line 92 of file SaturatingSkumanichWindBody.h.

◆ angular_momentum_loss()

double Star::SaturatingSkumanichWindBody::angular_momentum_loss ( Evolve::Dissipation::QuantityEntry  entry = Evolve::Dissipation::NO_DERIV) const

See DissipatingBody::angular_momentum_loss().

Definition at line 14 of file SaturatingSkumanichWindBody.cpp.

◆ detect_saturation()

void Star::SaturatingSkumanichWindBody::detect_saturation ( )
inline

Sets the saturation based on the currently configured spin frequency.

Definition at line 65 of file SaturatingSkumanichWindBody.h.

◆ reset_evolution()

virtual void Star::SaturatingSkumanichWindBody::reset_evolution ( )
inlinevirtual

Discards all evolution.

Reimplemented from Evolve::DissipatingBody.

Definition at line 110 of file SaturatingSkumanichWindBody.h.

◆ rewind_evolution()

virtual void Star::SaturatingSkumanichWindBody::rewind_evolution ( unsigned  nsteps)
inlinevirtual

Discards the last steps from the evolution.

Parameters
nstepsHow many steps of evolution to discard.

Reimplemented from Evolve::DissipatingBody.

Definition at line 99 of file SaturatingSkumanichWindBody.h.

◆ saturated()

bool Star::SaturatingSkumanichWindBody::saturated ( )
inline

Is the wind loss currently saturated?

Definition at line 74 of file SaturatingSkumanichWindBody.h.

◆ saturation_freq_crossed()

void Star::SaturatingSkumanichWindBody::saturation_freq_crossed ( short  deriv_sign)
inline

Called by the stopping condition monitoring wind saturation.

Parameters
deriv_signThe sign of the rate of change of the spin frequency when it was equal to the saturation frequency.

Definition at line 77 of file SaturatingSkumanichWindBody.h.

◆ saturation_frequency()

double Star::SaturatingSkumanichWindBody::saturation_frequency ( )
inline

The frequency at which the wind loss saturates in rad/day.

Definition at line 62 of file SaturatingSkumanichWindBody.h.

◆ spin_jumped()

void Star::SaturatingSkumanichWindBody::spin_jumped ( )
inlinevirtual

Resets its saturation state after a discontinous spin jump.

Reimplemented from Evolve::DissipatingBody.

Definition at line 133 of file SaturatingSkumanichWindBody.h.

◆ stopping_conditions()

Evolve::CombinedStoppingCondition * Star::SaturatingSkumanichWindBody::stopping_conditions ( Evolve::BinarySystem system,
bool  primary 
)
virtual

Conditions detecting the next possible discontinuities in the evolution due to this body.

Must be deleted when no longer necessary.

Parameters
systemThe system being evolved.
primaryIs the body the primary in the system.

Reimplemented from Evolve::DissipatingBody.

Definition at line 45 of file SaturatingSkumanichWindBody.cpp.

◆ wind_saturation_evolution()

const std::list<bool>& Star::SaturatingSkumanichWindBody::wind_saturation_evolution ( ) const
inline

The tabulated wind saturation states so far.

Definition at line 129 of file SaturatingSkumanichWindBody.h.

Member Data Documentation

◆ __saturated

bool Star::SaturatingSkumanichWindBody::__saturated
private

Is the wind currently saturated?

Definition at line 33 of file SaturatingSkumanichWindBody.h.

◆ __saturation_evolution

std::list<bool> Star::SaturatingSkumanichWindBody::__saturation_evolution
private

The saturation states recorded by add_to_evolution() so far.

Definition at line 36 of file SaturatingSkumanichWindBody.h.

◆ __saturation_freq

double Star::SaturatingSkumanichWindBody::__saturation_freq
private

The frequency at which the wind loss saturates in rad/day.

Definition at line 27 of file SaturatingSkumanichWindBody.h.

◆ __wind_strength

double Star::SaturatingSkumanichWindBody::__wind_strength
private

The strength of the magnetic wind.

Definition at line 27 of file SaturatingSkumanichWindBody.h.


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