Planetary Orbital Evolution due to Tides
Orbital evolution of two objects experiencing tides
Evolve Namespace Reference

Orientations of zones of bodies in a binary system. More...

Namespaces

 Dissipation
 Isolates constants related to the tidal dissipation.
 

Classes

class  BinarySystem
 Describes a system of two bodies orbiting each other. More...
 
class  BreakLockCondition
 Satisfied when the maximum tidal torque that the planet can exert on the star is no longer sufficient to keep the lock. More...
 
class  BrokenPowerlawPhaseLagZone
 A DissipatingZone where the phase lag is described by a broken powerlaw. More...
 
class  CombinedStoppingCondition
 A class combining the the outputs of multiple stopping conditions. More...
 
class  ConstPhaseLagZone
 A zone with constant phase lag for all tidal terms. More...
 
class  ConstSolutionIterator
 Iterates over the tabulated solution after an evolution calculation. More...
 
class  DiskBinarySystem
 For some prescribed amount of time the surface of the pramary spins at a prescribed rate, it is then released and (at a possibly different age) a secondary body forms in a prescribed initial orbit. More...
 
class  DissipatingBody
 A base class for any body contributing to tidal dissipation. More...
 
class  DissipatingZone
 A layer of a system body for which the tidal bulge is not exactly in phase with the tidal potential. More...
 
class  EccentricityExpansionCoefficients
 A class which reads-in and provides a convenient interface to the \(p_{m,s}\) coefficients. More...
 
class  EccentricOrbit
 Basic description of two bodies in an eccentric orbit. More...
 
class  ExpectedEvolutionMode
 Some evolution mode that changes at specified ages. More...
 
class  ExternalStoppingCondition
 A base class for all external stopping conditions. More...
 
class  ExtremumInformation
 Infomation about an extremum of a function. More...
 
class  LagForcingFrequencyBreakCondition
 satisfied when a forcing frequency reaches a critical value. More...
 
class  NoStopCondition
 A stopping condition that is never satisfied. More...
 
class  OrbitSolver
 Solves the system of ODEs describing the evolution of a single planet around a single star. More...
 
class  PolynomialEvolutionZone
 
class  RotFastCondition
 Satisfied when a zone is rotating faster than a threshold. More...
 
class  SecondaryDeathCondition
 Satisfied when the planet enters below either the roche sphere or the stellar photosphere. More...
 
class  SingleTidalTermBody
 A skumanich wind body with a single zone dissipative to only a single tidal term. More...
 
class  SingleTidalTermZone
 A zone dissipative to only a single tidal term. More...
 
class  SpinOrbitLockInfo
 Defines a lock between the spin of a dissipating body and the orbit. More...
 
class  StopHistoryInterval
 A collection of accepted and discarded evolution steps which contain some reason to stop. More...
 
class  StopInformation
 The information about why and where the evolution should stop. More...
 
class  StoppingCondition
 A base class for all stopping conditions. More...
 
class  SynchronizedCondition
 Satisfied when some multiples of the orbit and stellar rotation are synchronized. More...
 
class  test_DifferentialEquations
 The test suite that compares the differential equations for eccentricity and semimajor axis to literature expansions. More...
 
class  test_GravitationalPotential
 The test suite that compares the tidal potential expansion to the exact expression. More...
 
class  test_LockMonitoring
 The test suite that ensures the correct locks are selected for monitoring and the fixes applied to the tidal frequency are correct. More...
 
class  test_OrbitSolver
 The test suite that exercises the OrbitSolver class. More...
 
class  test_TidalTorquePower
 The test suite that compares the tidal torque and power for a single zone against expectations. More...
 
class  TidalPotential
 Calculate the tidal potential over one component of an eccentric binary. More...
 
class  TidalPotentialExpansion
 Evaluate the tidal potential using the expansion. More...
 
class  TidalPotentialTerms
 
class  TidalTermTriplet
 
class  TransformedSolution
 A class that can be passed to the solution testing function instead of the solver that transforms the solutions before testing. More...
 
class  ZoneOrientation
 

Typedefs

typedef int(* GSL_ODE_TYPE) (double, const double *, double *, void *)
 
typedef int(* GSL_JAC_TYPE) (double, const double *, double *, double *, void *)
 
typedef bool(* STOP_EVOL_TYPE) (double, const double *, void *)
 

Enumerations

enum  ZoneEvolutionQuantities {
  ANGULAR_MOMENTUM, ANGULAR_MOMENTUM_DERIV, INCLINATION, INCLINATION_DERIV,
  PERIAPSIS, PERIAPSIS_DERIV, MOMENT_OF_INERTIA, MOMENT_OF_INERTIA_FIRST_DERIV,
  MOMENT_OF_INERTIA_SECOND_DERIV, OUTER_RADIUS, OUTER_RADIUS_FIRST_DERIV, OUTER_RADIUS_SECOND_DERIV,
  OUTER_MASS, OUTER_MASS_DERIV, NUM_REAL_EVOL_QUANTITIES, E_ORDER =NUM_REAL_EVOL_QUANTITIES,
  ORBITAL_FREQ_MULTIPLIER, SPIN_FREQ_MULTIPLIER, NUM_EVOL_QUANTITIES
}
 IDs for quantities saved as part of the evolution. More...
 
enum  StoppingConditionType {
  NO_STOP, SYNCHRONIZED, BREAK_LOCK, PLANET_DEATH,
  WIND_SATURATION, LARGE_EXPANSION_ERROR, SMALL_EXPANSION_ERROR, EXTERNAL
}
 The reasons for stopping the evolution currently supported. More...
 
enum  RealEvolutionQuantity {
  SEMIMAJOR, ECCENTRICITY, CONV_INCLINATION, RAD_INCLINATION,
  CONV_PERIAPSIS, RAD_PERIAPSIS, CONV_ANGMOM, RAD_ANGMOM,
  AGE, NUM_REAL_QUANTITIES
}
 Define identifiers for the quantities whose evolution we check. More...
 

Functions

std::ostream & operator<< (std::ostream &os, const ZoneEvolutionQuantities &evol_var)
 More civilized output for EvolVarType variables. More...
 
std::ostream & operator<< (std::ostream &os, const Dissipation::Quantity &quantity)
 More civilized output for Dissipation::Quantity variables. More...
 
std::ostream & operator<< (std::ostream &os, Dissipation::QuantityEntry entry)
 More civilized output for Dissipation::QuantityEntry variables. More...
 
LIB_LOCAL bool zone_specific (Dissipation::QuantityEntry entry)
 
int stellar_system_diff_eq ( double age, const double *parameters, double *derivatives, void *system)
 A wrapper tha allows the stellar system differential equation to be passed to the GSL ODE solver. More...
 
int stellar_system_jacobian ( double age, const double *parameters, double *param_derivs, double *age_derivs, void *system_mode)
 A wrapper tha allows the stellar system jacobian to be passed to the GSL ODE solver. More...
 
std::ostream & operator<< (std::ostream &os, const SpinOrbitLockInfo &lock)
 Civilized output for locks. More...
 
std::ostream & operator<< (std::ostream &os, StopHistoryInterval interval)
 Civilized output of a StopHistoryInterval. More...
 
std::ostream & operator<< (std::ostream &os, const StopInformation &stop)
 Civilized output of a StopInformation object. More...
 
std::ostream & operator<< (std::ostream &os, const StoppingConditionType &stop_cond_type)
 More civilized output for StoppingConditionType variables. More...
 
Eigen::Vector3d zone_to_zone_transform ( const ZoneOrientation &from_zone, const ZoneOrientation &to_zone, const Eigen::Vector3d &vector, Dissipation::QuantityEntry deriv=Dissipation::NO_DERIV, bool with_respect_to_from=false)
 Transforms a vector betwen the coordinates systems of two zones. More...
 
std::ostream & operator<< (std::ostream &os, RealEvolutionQuantity q)
 
double locked_unsat_eq (double a, void *params)
 The equation that should be solved in order to get the semimamjor axis at a gien time. More...
 
double locked_sat_eq (double a, void *params)
 The equation that should be solved in order to get the semimamjor axis at a given time for the locked evolution when the wind is saturated. More...
 
double locked_unsat_deriv (double a, void *params)
 The derivative of the equation that should be solved in order to get the semimamjor axis at a given time for the locked evolution when the wind is not saturated. More...
 
double locked_sat_deriv (double a, void *params)
 The derivative of the equation that should be solved in order to get the semimamjor axis at a gien time for the locked evolution when the wind is saturated. More...
 
void locked_unsat_eq_deriv (double a, void *params, double *f, double *df)
 The equation and its derivative that should be solved in order to get the semimamjor axis at a given time for the locked evolution when the wind is not saturated. More...
 
void locked_sat_eq_deriv (double a, void *params, double *f, double *df)
 The equation and its derivative that should be solved in order to get the semimamjor axis at a given time for the locked evolution when the wind is saturated. More...
 

Variables

const double MIN_RELATIVE_STEP
 
const double epsilon = std::numeric_limits<double>::epsilon()
 
const double TSTART = 2.0 * MIN_AGE
 
const double zero = 0.0
 
const double one = 1.0
 
const double Mjup_to_Msun
 
const double Rjup_to_Rsun
 
StellarEvolution::PolynomialEvolutionQuantity nan_func (std::valarray< double >(Core::NaN, 2), TSTART, MAX_AGE)
 
StellarEvolution::PolynomialEvolutionQuantity zero_func (std::valarray< double >(), TSTART, MAX_AGE)
 
StellarEvolution::PolynomialEvolutionQuantity one_func (std::valarray< double >(1.0, 1), TSTART, MAX_AGE)
 
StellarEvolution::PolynomialEvolutionQuantity two_func (std::valarray< double >(2.0, 1), TSTART, MAX_AGE)
 
StellarEvolution::PolynomialEvolutionQuantity two_hundred_func (std::valarray< double >(200.0, 1), TSTART, MAX_AGE)
 

Detailed Description

Orientations of zones of bodies in a binary system.

Enumeration Type Documentation

◆ RealEvolutionQuantity

Define identifiers for the quantities whose evolution we check.

Definition at line 15 of file RealEvolutionQuantity.h.

◆ StoppingConditionType

The reasons for stopping the evolution currently supported.

Enumerator
NO_STOP 

No reason to stop.

SYNCHRONIZED 

Synchroneity between the stellar spin and the orbit was reached (from either direction).

BREAK_LOCK 

The spin-orbit lock can no longer be maintaned.

PLANET_DEATH 

The planet died.

WIND_SATURATION 

The stellar spin frequency reached the wind saturation frequency (from either direction).

LARGE_EXPANSION_ERROR 

The error due to truncating the eccentricity expansion is too large.

SMALL_EXPANSION_ERROR 

The error due to truncating the eccentricity expansion is too small.

EXTERNAL 

The stellar rotation reached some critical value (from either direction).

Definition at line 19 of file StoppingCondition.h.

◆ ZoneEvolutionQuantities

IDs for quantities saved as part of the evolution.

Enumerator
ANGULAR_MOMENTUM 

Angular momentum of the zone.

ANGULAR_MOMENTUM_DERIV 

The rate at which angular momentum changes.

INCLINATION 

Inclination of the zone.

INCLINATION_DERIV 

The rate at which the the inclination changes.

PERIAPSIS 

Periapsis of the zone.

PERIAPSIS_DERIV 

The rate at which periapsis changes.

MOMENT_OF_INERTIA 

Moment of inertia of the zone.

MOMENT_OF_INERTIA_FIRST_DERIV 

Age derivative of MOMENT_OF_INERTIA.

MOMENT_OF_INERTIA_SECOND_DERIV 

Age second deriv of MOMENT_OF_INERTIA.

OUTER_RADIUS 

Outer radius boundary of the zone.

OUTER_RADIUS_FIRST_DERIV 

First age deriv of OUTER_RADIUS.

OUTER_RADIUS_SECOND_DERIV 

Second age deriv of OUTER_RADIUS.

OUTER_MASS 

Outer mass boundary of the zone.

OUTER_MASS_DERIV 

First age derivative of OUTER_MASS.

NUM_REAL_EVOL_QUANTITIES 

Number of real values evolution quantities.

E_ORDER 

Eccentricity expansion order.

ORBITAL_FREQ_MULTIPLIER 

For locked zones this is the orbital frequency multiple of the lock.

SPIN_FREQ_MULTIPLIER 

For locked zones this is the spin frequency multiple of the lock.

A value of zero indicates no lock was held.

NUM_EVOL_QUANTITIES 

The total number of quantities whose evolution is tracked.

Definition at line 28 of file DissipatingZone.h.

Function Documentation

◆ locked_sat_deriv()

double Evolve::locked_sat_deriv ( double  a,
void *  params 
)

The derivative of the equation that should be solved in order to get the semimamjor axis at a gien time for the locked evolution when the wind is saturated.

The paramaters should be: alpha, beta.

Definition at line 1925 of file testOrbitSolver.cpp.

◆ locked_sat_eq()

double Evolve::locked_sat_eq ( double  a,
void *  params 
)

The equation that should be solved in order to get the semimamjor axis at a given time for the locked evolution when the wind is saturated.

The paramaters should be: alpha, beta, kappa, C, t

Definition at line 1888 of file testOrbitSolver.cpp.

◆ locked_sat_eq_deriv()

void Evolve::locked_sat_eq_deriv ( double  a,
void *  params,
double *  f,
double *  df 
)

The equation and its derivative that should be solved in order to get the semimamjor axis at a given time for the locked evolution when the wind is saturated.

The paramaters should be: alpha, beta, kappa, C, t

Definition at line 1965 of file testOrbitSolver.cpp.

◆ locked_unsat_deriv()

double Evolve::locked_unsat_deriv ( double  a,
void *  params 
)

The derivative of the equation that should be solved in order to get the semimamjor axis at a given time for the locked evolution when the wind is not saturated.

The paramaters should be: alpha, beta.

Definition at line 1912 of file testOrbitSolver.cpp.

◆ locked_unsat_eq()

double Evolve::locked_unsat_eq ( double  a,
void *  params 
)

The equation that should be solved in order to get the semimamjor axis at a gien time.

The paramaters should be: alpha, beta, kappa, C, t

Definition at line 1865 of file testOrbitSolver.cpp.

◆ locked_unsat_eq_deriv()

void Evolve::locked_unsat_eq_deriv ( double  a,
void *  params,
double *  f,
double *  df 
)

The equation and its derivative that should be solved in order to get the semimamjor axis at a given time for the locked evolution when the wind is not saturated.

The paramaters should be: alpha, beta, kappa, C, t

Definition at line 1938 of file testOrbitSolver.cpp.

◆ operator<<() [1/7]

LIB_LOCAL std::ostream & Evolve::operator<< ( std::ostream &  os,
const StopInformation stop 
)

Civilized output of a StopInformation object.

Definition at line 6 of file StopInformation.cpp.

◆ operator<<() [2/7]

LIB_LOCAL std::ostream & Evolve::operator<< ( std::ostream &  os,
const SpinOrbitLockInfo lock 
)

Civilized output for locks.

Definition at line 6 of file SpinOrbitLockInfo.cpp.

◆ operator<<() [3/7]

std::ostream & Evolve::operator<< ( std::ostream &  os,
const ZoneEvolutionQuantities evol_var 
)

More civilized output for EvolVarType variables.

Definition at line 7 of file DissipatingZone.cpp.

◆ operator<<() [4/7]

LIB_LOCAL std::ostream & Evolve::operator<< ( std::ostream &  os,
const StoppingConditionType stop_cond_type 
)

More civilized output for StoppingConditionType variables.

Definition at line 13 of file StoppingCondition.cpp.

◆ operator<<() [5/7]

LIB_LOCAL std::ostream & Evolve::operator<< ( std::ostream &  os,
const Dissipation::Quantity &  quantity 
)

More civilized output for Dissipation::Quantity variables.

Definition at line 14 of file DissipationQuantities.cpp.

◆ operator<<() [6/7]

LIB_LOCAL std::ostream & Evolve::operator<< ( std::ostream &  os,
Dissipation::QuantityEntry  entry 
)

More civilized output for Dissipation::QuantityEntry variables.

More civilized output for Dissipation::QuantityError variables.

Definition at line 31 of file DissipationQuantities.cpp.

◆ operator<<() [7/7]

LIB_LOCAL std::ostream & Evolve::operator<< ( std::ostream &  os,
StopHistoryInterval  interval 
)

Civilized output of a StopHistoryInterval.

Definition at line 237 of file StopHistoryInterval.cpp.

◆ stellar_system_diff_eq()

LIB_LOCAL int Evolve::stellar_system_diff_eq ( double  age,
const double *  parameters,
double *  derivatives,
void *  system_mode 
)

A wrapper tha allows the stellar system differential equation to be passed to the GSL ODE solver.

Parameters
ageSystem age in Gyr.
parametersA C-style array of the variables evolved under the current set of equations.
derivativesA C-style array of the rates of change of the orbital_parameters.
systemA C-style array of pointers giving the stellar system, the current evolution mode, the wind saturation state to assume, the spin-orbit lock of the star and the dissipation rates.

Definition at line 23 of file OrbitSolver.cpp.

◆ stellar_system_jacobian()

LIB_LOCAL int Evolve::stellar_system_jacobian ( double  age,
const double *  orbital_parameters,
double *  param_derivs,
double *  age_derivs,
void *  system_mode 
)

A wrapper tha allows the stellar system jacobian to be passed to the GSL ODE solver.

Parameters
ageSystem age in Gyr.
parametersA C-style array of the variables evolved under the current set of equations.
param_derivsA C-style array of the Jacobian matrix entries.
age_derivsA C-style array of the partial age derivatives of the differential equations. Age is in Gyr.
system_modeA C-style array of pointers giving the stellar system and the current evolution mode.

Definition at line 39 of file OrbitSolver.cpp.

◆ zone_to_zone_transform()

LIB_PUBLIC Eigen::Vector3d Evolve::zone_to_zone_transform ( const ZoneOrientation from_zone,
const ZoneOrientation to_zone,
const Eigen::Vector3d &  vector,
Dissipation::QuantityEntry  deriv,
bool  with_respect_to_from 
)

Transforms a vector betwen the coordinates systems of two zones.

Parameters
from_zoneThe zone whose coordinate system the vectors are currently in.
to_zoneThe zone whose coordinate system we want to transform the vectors to.
vectorThe vector to transform.
derivDerivatives with respect to inclination and periapsis can be computed (assuming vector does not depend on these), in addition to the regular transform. It is an error to request another derivative.
with_respect_to_fromIf deriv is not NO_DERIV, derivatives can be computed with respect to quantities of the from_zone (if this argument is true) or the to_zone (if false).

Definition at line 6 of file ZoneOrientation.cpp.

Variable Documentation

◆ MIN_RELATIVE_STEP

const double Evolve::MIN_RELATIVE_STEP
Initial value:
= (
1.0
+
10.0 * std::numeric_limits<double>::epsilon()
)

Definition at line 17 of file OrbitSolver.cpp.

◆ Mjup_to_Msun

const double Evolve::Mjup_to_Msun
Initial value:
/
const double jupiter_mass
Mass of Jupiter [kg].
const double solar_mass
Mass of the sun [kg].

Definition at line 17 of file testOrbitSolver.cpp.

◆ Rjup_to_Rsun

const double Evolve::Rjup_to_Rsun
Initial value:
/
const double jupiter_radius
Radius of Jupiter [m].
const double solar_radius
Radius of the sun [m].

Definition at line 21 of file testOrbitSolver.cpp.