A DissipatingBody which loses angular momentum at a rate \(\propto\omega\min(\omega, \omega_{sat})^2\). More...
#include <SaturatingSkumanichWindBody.h>
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::CombinedStoppingCondition * | stopping_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 DissipatingZone & | zone (unsigned zone_index) const =0 |
A modifiable reference to one of the body's zones. More... | |
virtual DissipatingZone & | zone (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 |
A DissipatingBody which loses angular momentum at a rate \(\propto\omega\min(\omega, \omega_{sat})^2\).
Definition at line 23 of file SaturatingSkumanichWindBody.h.
|
inline |
wind_strength | The strength of the wind. |
saturation_frequency | The frequency at which the wind loss saturates in rad/day. |
Definition at line 42 of file SaturatingSkumanichWindBody.h.
|
inlinevirtual |
Appends the state defined by last configure(), to the evolution.
Reimplemented from Evolve::DissipatingBody.
Definition at line 92 of file SaturatingSkumanichWindBody.h.
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.
|
inline |
Sets the saturation based on the currently configured spin frequency.
Definition at line 65 of file SaturatingSkumanichWindBody.h.
|
inlinevirtual |
Discards all evolution.
Reimplemented from Evolve::DissipatingBody.
Definition at line 110 of file SaturatingSkumanichWindBody.h.
|
inlinevirtual |
Discards the last steps from the evolution.
nsteps | How many steps of evolution to discard. |
Reimplemented from Evolve::DissipatingBody.
Definition at line 99 of file SaturatingSkumanichWindBody.h.
|
inline |
Is the wind loss currently saturated?
Definition at line 74 of file SaturatingSkumanichWindBody.h.
|
inline |
Called by the stopping condition monitoring wind saturation.
deriv_sign | The 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.
|
inline |
The frequency at which the wind loss saturates in rad/day.
Definition at line 62 of file SaturatingSkumanichWindBody.h.
|
inlinevirtual |
Resets its saturation state after a discontinous spin jump.
Reimplemented from Evolve::DissipatingBody.
Definition at line 133 of file SaturatingSkumanichWindBody.h.
|
virtual |
Conditions detecting the next possible discontinuities in the evolution due to this body.
Must be deleted when no longer necessary.
system | The system being evolved. |
primary | Is the body the primary in the system. |
Reimplemented from Evolve::DissipatingBody.
Definition at line 45 of file SaturatingSkumanichWindBody.cpp.
|
inline |
The tabulated wind saturation states so far.
Definition at line 129 of file SaturatingSkumanichWindBody.h.
|
private |
Is the wind currently saturated?
Definition at line 33 of file SaturatingSkumanichWindBody.h.
|
private |
The saturation states recorded by add_to_evolution() so far.
Definition at line 36 of file SaturatingSkumanichWindBody.h.
|
private |
The frequency at which the wind loss saturates in rad/day.
Definition at line 27 of file SaturatingSkumanichWindBody.h.
|
private |
The strength of the magnetic wind.
Definition at line 27 of file SaturatingSkumanichWindBody.h.