Planetary Orbital Evolution due to Tides
Orbital evolution of two objects experiencing tides
SaturatingSkumanichWindBody.cpp
Go to the documentation of this file.
1 
8 #define BUILDING_LIBRARY
11 
12 namespace Star {
13 
15  Evolve::Dissipation::QuantityEntry entry
16  ) const
17  {
18  double result = (
19  __wind_strength*std::sqrt(radius() / mass())
20  *
21  (
23  ? spin_frequency() * std::pow(__saturation_freq, 2)
24  : std::pow(spin_frequency(), 3)
25  )
26  );
27  double freq_power = (__saturated ? 1.0 : 3.0);
28  switch(entry) {
30  return result;
32  return freq_power * result / spin_frequency();
34  return result / (2.0 * radius());
36  return -freq_power * result / zone(0).moment_of_inertia();
38  return freq_power * result / zone(0).angular_momentum();
39  default :
40  return 0;
41  }
42  }
43 
46  Evolve::BinarySystem &system,
47  bool primary
48  )
49  {
50 #ifndef NDEBUG
51  if(primary) assert(this == &(system.primary()));
52  else assert(this == &(system.secondary()));
53  assert(__detected_saturation);
54 #endif
57  if(system.evolution_mode() != Core::LOCKED_SURFACE_SPIN)
58  (*result) |= new WindSaturationCondition(
59  *this,
60  (primary ? system.secondary() : system.primary()),
61  primary,
63  );
65  primary);
66  return result;
67  }
68 
69 }//End Star namespace.
RADIUS
The derivative w.r.t. the radius of the body in .
double angular_momentum() const
The angular momentum of the given zone in .
const DissipatingBody & primary() const
Returns the primary body in the system (const).
Definition: BinarySystem.h:836
Satisfied when the surface zone of a body is spinning at exactly the wind saturation frequency...
SPIN_FREQUENCY
The derivative w.r.t. the spin frequency of a dissipating zone.
double __wind_strength
The strength of the magnetic wind.
virtual const DissipatingZone & zone(unsigned zone_index) const =0
A modifiable reference to one of the body's zones.
MOMENT_OF_INERTIA
virtual double moment_of_inertia(int deriv_order=0) const =0
Moment of inertia of the zone or its age derivative at the age of last configure() call...
double mass() const
The mass of the body (constant with age).
Decrales a body subject to angular momentum loss .
virtual CombinedStoppingCondition * stopping_conditions(BinarySystem &system, bool primary)
Conditions detecting the next possible discontinuities in the evolution due to this body...
double radius(int deriv_order=0) const
The current radius or its derivative with age of the body.
Declaration of a stopping condition monitoring for the surface spin of a star crossing the wind satur...
const DissipatingBody & secondary() const
Returns the secondary body in the system (const).
Definition: BinarySystem.h:839
double __saturation_freq
The frequency at which the wind loss saturates in rad/day.
Core::EvolModeType evolution_mode()
The evolution mode of last call to configure().
Definition: BinarySystem.h:996
NO_DERIV
The quantity itself, undifferentiated.
SPIN_ANGMOM
The derivative w.r.t. the spin angular momentum in .
double angular_momentum_loss(Evolve::Dissipation::QuantityEntry entry=Evolve::Dissipation::NO_DERIV) const
See DissipatingBody::angular_momentum_loss().
A class combining the the outputs of multiple stopping conditions.
bool __saturated
Is the wind currently saturated?
Describes a system of two bodies orbiting each other.
Definition: BinarySystem.h:56
virtual Evolve::CombinedStoppingCondition * stopping_conditions(Evolve::BinarySystem &system, bool primary)
Conditions detecting the next possible discontinuities in the evolution due to this body...
double spin_frequency() const
The surface spin freuqency of the body.