Program Listing for File ConstPhaseLagZone.h¶
↰ Return to documentation for file (/home/kpenev/projects/git/poet/poet_src/unit_tests/testEvolve/ConstPhaseLagZone.h)
#ifndef __CONST_PHASE_LAG_H
#define __CONST_PHASE_LAG_H
#include "PolynomialEvolutionZone.h"
namespace Evolve {
class ConstPhaseLagZone : public PolynomialEvolutionZone {
private:
double __phase_lag;
public:
ConstPhaseLagZone(
double phase_lag,
const std::valarray<double> &mass_coefficients,
const std::valarray<double> &radius_coefficients,
const std::valarray<double> &inertia_coefficients
) :
PolynomialEvolutionZone(mass_coefficients,
radius_coefficients,
inertia_coefficients),
__phase_lag(phase_lag)
{}
double modified_phase_lag(int,
int spin_frequency_multiplier,
double forcing_frequency,
Dissipation::QuantityEntry entry,
double &above_lock_value) const
{
double result;
if(entry != Dissipation::NO_DERIV)
result = 0.0;
else
result = __phase_lag;
if(forcing_frequency == 0) {
return 0.0;
if(spin_frequency_multiplier >= 0) {
above_lock_value = -result;
return result;
} else {
above_lock_value = result;
return -result;
}
} else {
return (forcing_frequency > 0 ? result : -result);
}
}
bool dissipative() const {return true;}
};//End ConstPhaseLagZone class.
}//End Evolve namespace.
#endif