Planetary Orbital Evolution due to Tides
Orbital evolution of two objects experiencing tides
Evolve::TidalPotentialTerms Class Reference
+ Collaboration diagram for Evolve::TidalPotentialTerms:

Public Member Functions

double get_expansion_precision () const
 Return the expansion precision target for the expansion terms. More...
 
void configure (double inclination, double arg_of_periapsis=0)
 Set the inclination relative to the orbit. More...
 
void operator() (double e, int m, int mp, std::complex< double > &no_deriv, std::complex< double > &inclination_deriv, std::complex< double > &eccentricity_deriv) const
 Calculates \(\sum_s W_{2,s}D_{m,s}(\Theta)p_{s,m'}\) (see documentation) and its derivatives w.r.t. e and \(\Theta\). More...
 
void operator() (double e, int m, int mp, double &no_deriv, double &inclination_deriv, double &eccentricity_deriv) const
 Return only the real parts of the complex version of the operator, since only the real part enters the tidal torque and power. More...
 

Static Public Member Functions

static void prepare (const std::string &tabulated_pms_fname, double precision, bool pre_load, bool disable_precision_fail)
 See EccentricityExpansionCoefficients::prepare() More...
 
static unsigned required_expansion_order (double e)
 The maximum orbital frequency multiplier to include in the potential Fourier expansion in order to achive a specified precision. More...
 
static std::pair< double, double > get_expansion_range (int max_mp)
 Return the range of eccentricities (min, max) over which an expansion going up to given max m' is valid and required. More...
 
static unsigned max_expansion_order ()
 The maximum eccentricity expansion order (orbital frequency multiplier for which the expansion is known. More...
 
static const EccentricityExpansionCoefficientsexpansion_coefficient_evaluator ()
 Provide direct access to the eccentircity expansion coefficients. More...
 

Private Attributes

double __Ummp_inclination
 The inclination with which __Ummp was last filled. More...
 
double __arg_of_periapsis
 The argument of periaspsis set by the last call to configure(). More...
 
std::valarray< std::valarray< double > > __Ummp
 The \(\mathcal{U}_{m,m'}\) quantities defined in Lai (2012). More...
 
std::valarray< std::valarray< double > > __Ummp_deriv
 The derivatives of the \(\mathcal{U}_{m,m'}\) quantities w.r.t. the inclination. More...
 

Static Private Attributes

static EccentricityExpansionCoefficients __pms
 The eccentricity expansion of \(p_{m,s}\). More...
 
static const double __Umm_coef [][3]
 The constant coefficiients in \(\mathcal{U}_{m,m'}\) of Lai (2012). More...
 

Detailed Description

Definition at line 20 of file TidalPotentialTerms.h.

Member Function Documentation

◆ configure()

void Evolve::TidalPotentialTerms::configure ( double  inclination,
double  arg_of_periapsis = 0 
)

Set the inclination relative to the orbit.

Definition at line 42 of file TidalPotentialTerms.cpp.

◆ expansion_coefficient_evaluator()

static const EccentricityExpansionCoefficients& Evolve::TidalPotentialTerms::expansion_coefficient_evaluator ( )
inlinestatic

Provide direct access to the eccentircity expansion coefficients.

Definition at line 156 of file TidalPotentialTerms.h.

◆ get_expansion_precision()

double Evolve::TidalPotentialTerms::get_expansion_precision ( ) const
inline

Return the expansion precision target for the expansion terms.

Definition at line 84 of file TidalPotentialTerms.h.

◆ get_expansion_range()

std::pair< double, double > Evolve::TidalPotentialTerms::get_expansion_range ( int  max_mp)
static

Return the range of eccentricities (min, max) over which an expansion going up to given max m' is valid and required.

For eccentricities below the minimum (first value of returned pair) terms with frequency \(m\Omega_\star-m'\Omega_{orb}\) can be excluded from the expansion for all m, without violating the precision requirement. For eccentricities at or above maximum (second value of returned pair) at least one \(m\Omega_\star-m'\Omega_{orb}\) term must be included in the series in order to satisfy the precision requirement.

Definition at line 120 of file TidalPotentialTerms.cpp.

◆ max_expansion_order()

static unsigned Evolve::TidalPotentialTerms::max_expansion_order ( )
inlinestatic

The maximum eccentricity expansion order (orbital frequency multiplier for which the expansion is known.

Definition at line 151 of file TidalPotentialTerms.h.

◆ operator()() [1/2]

void Evolve::TidalPotentialTerms::operator() ( double  e,
int  m,
int  mp,
std::complex< double > &  no_deriv,
std::complex< double > &  inclination_deriv,
std::complex< double > &  eccentricity_deriv 
) const

Calculates \(\sum_s W_{2,s}D_{m,s}(\Theta)p_{s,m'}\) (see documentation) and its derivatives w.r.t. e and \(\Theta\).

configure() should already have been called with the appropriate inclination and argument of periapsis.

Parameters
eThe eccentricity.
mThe m index (spin freuqency multiplier).
mpThe m' index (orbital frequency multiplier).
no_derivSet to the undifferentiated value.
inclination_derivSet to the inclination derivative.
eccentricity_derivSet to the eccentricity_derivative.

Definition at line 137 of file TidalPotentialTerms.cpp.

◆ operator()() [2/2]

void Evolve::TidalPotentialTerms::operator() ( double  e,
int  m,
int  mp,
double &  no_deriv,
double &  inclination_deriv,
double &  eccentricity_deriv 
) const

Return only the real parts of the complex version of the operator, since only the real part enters the tidal torque and power.

Parameters
eThe eccentricity.
mThe m index.
mpThe m' index.
no_derivSet to the undifferentiated value.
inclination_derivSet to the inclination derivative.
eccentricity_derivSet to the eccentricity_derivative.

Definition at line 174 of file TidalPotentialTerms.cpp.

◆ prepare()

static void Evolve::TidalPotentialTerms::prepare ( const std::string &  tabulated_pms_fname,
double  precision,
bool  pre_load,
bool  disable_precision_fail 
)
inlinestatic

◆ required_expansion_order()

static unsigned Evolve::TidalPotentialTerms::required_expansion_order ( double  e)
inlinestatic

The maximum orbital frequency multiplier to include in the potential Fourier expansion in order to achive a specified precision.

The return value (call it \(O\)) is such that \(O p_{m, O+1} < //\mathrm{precision}\). The reasoning is that if \(p_{m,s}\) will decay substantially as s doubles.

Parameters
eThe eccentricity at which tidal potential needs to be evaluated.

Definition at line 69 of file TidalPotentialTerms.h.

Member Data Documentation

◆ __arg_of_periapsis

double Evolve::TidalPotentialTerms::__arg_of_periapsis
private

The argument of periaspsis set by the last call to configure().

Definition at line 36 of file TidalPotentialTerms.h.

◆ __pms

EccentricityExpansionCoefficients Evolve::TidalPotentialTerms::__pms
staticprivate

The eccentricity expansion of \(p_{m,s}\).

Definition at line 23 of file TidalPotentialTerms.h.

◆ __Umm_coef

const double Evolve::TidalPotentialTerms::__Umm_coef
staticprivate
Initial value:
={
{
std::sqrt(3.0 * M_PI / 10.0) / 4.0,
-std::sqrt(6.0 * M_PI / 5.0) / 4.0,
std::sqrt(3.0 * M_PI / 10.0) / 4.0
},
{
-std::sqrt(3.0 * M_PI / 10.0) / 2.0,
-std::sqrt(6.0 * M_PI / 5.0) / 2.0,
std::sqrt(3.0 * M_PI / 10.0) / 2.0
},
{
3.0 * std::sqrt(M_PI / 5.0) / 4.0,
-std::sqrt(M_PI / 5.0) / 2.0,
3.0 * std::sqrt(M_PI / 5.0) / 4.0
},
{
-std::sqrt(3.0 * M_PI / 10.0) / 2.0,
std::sqrt(6.0 * M_PI / 5.0) / 2.0,
std::sqrt(3.0 * M_PI / 10.0) / 2.0
},
{
std::sqrt(3.0 * M_PI / 10.0) / 4.0,
-std::sqrt(6.0 * M_PI / 5.0) / 4.0,
std::sqrt(3.0 * M_PI / 10.0) / 4.0
}
}

The constant coefficiients in \(\mathcal{U}_{m,m'}\) of Lai (2012).

The first index is m+2 (since m starts from -2) and the second index is m'/2+1 since the only allowed values are -2, 0 and 1.

Definition at line 30 of file TidalPotentialTerms.h.

◆ __Ummp

std::valarray< std::valarray<double> > Evolve::TidalPotentialTerms::__Ummp
private

The \(\mathcal{U}_{m,m'}\) quantities defined in Lai (2012).

Definition at line 40 of file TidalPotentialTerms.h.

◆ __Ummp_deriv

std::valarray< std::valarray<double> > Evolve::TidalPotentialTerms::__Ummp_deriv
private

The derivatives of the \(\mathcal{U}_{m,m'}\) quantities w.r.t. the inclination.

Definition at line 40 of file TidalPotentialTerms.h.

◆ __Ummp_inclination

double Evolve::TidalPotentialTerms::__Ummp_inclination
private

The inclination with which __Ummp was last filled.

Definition at line 33 of file TidalPotentialTerms.h.


The documentation for this class was generated from the following files: