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>
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 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 | 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 CombinedStoppingCondition * | stopping_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... | |
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.
|
inline |
Construct a body with default differential rotatino torque.
coupling_timescale | The timescale for differential rotation coupling. |
Definition at line 54 of file ExponentialDecayDiffRotBody.h.
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.
|
virtual |
See DissipatingBody::configure().
Invokes DissipatingBody::configure().
Reimplemented from Evolve::DissipatingBody.
Definition at line 57 of file ExponentialDecayDiffRotBody.cpp.
|
private |
Resets __torque to all undefined (correcting the size if necessary).
Definition at line 13 of file ExponentialDecayDiffRotBody.cpp.
|
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.
|
private |
The age for which the last conigure() was called.
Definition at line 25 of file ExponentialDecayDiffRotBody.h.
|
private |
The timescale for the differential rotation torque.
Definition at line 25 of file ExponentialDecayDiffRotBody.h.
|
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.