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::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.