Program Listing for File PowerlawPhaseLagZone.cpp¶
↰ Return to documentation for file (/home/kpenev/projects/git/poet/poet_src/BinarySystem/PowerlawPhaseLagZone.cpp)
#include "PowerlawPhaseLagZone.h"
double PowerlawPhaseLagZone::modified_phase_lag(
int orbital_frequency_multiplier,
int spin_frequency_multiplier,
double forcing_frequency,
Dissipation::QuantityEntry entry,
double &above_lock_value) const
{
if(entry == Dissipation::AGE || entry == Dissipation::EXPANSION_ERROR)
return 0;
double result = (__phase_lag_one_day
*
std::pow(std::abs(forcing_frequency) / (2.0 * M_PI),
__phase_lag_powerlaw_index));
if(result > __max_phase_lag) {
if(entry == Dissipation::NO_DERIV) result = __max_phase_lag;
else result = 0.0;
} else if(entry != Dissipation::NO_DERIV) {
result *= __phase_lag_powerlaw_index / forcing_frequency;
if(entry == Dissipation::SPIN_FREQUENCY)
result *= -spin_frequency_multiplier;
if(entry == Dissipation::ORBITAL_FREQUENCY)
result *= orbital_frequency_multiplier;
}
if(forcing_frequency == 0) above_lock_value = -result;
return (forcing_frequency > 0 ? result : -result);
}