Program Listing for File LagForcingFrequencyBreakCondition.h¶
↰ Return to documentation for file (/home/kpenev/projects/git/poet/poet_src/Evolve/LagForcingFrequencyBreakCondition.h)
#ifndef __CRITICAL_FORCING_FREQUENCY_CONDITION_H
#define __CRITICAL_FORCING_FREQUENCY_CONDITION_H
#include "../Core/SharedLibraryExportMacros.h"
#include "StoppingCondition.h"
#include "DissipatingBody.h"
#include "../Core/OrbitalExpressions.h"
#include "../Core/Error.h"
#include <vector>
namespace Evolve {
class BrokenPowerlawPhaseLagZone;
class LIB_LOCAL LagForcingFrequencyBreakCondition :
public StoppingCondition {
private:
int
__orbital_frequency_multiplier,
__spin_frequency_multiplier;
BrokenPowerlawPhaseLagZone &__zone;
const DissipatingBody
&__body,
&__other_body;
std::vector< std::vector<double>::size_type >::size_type
__term_index;
std::vector<double>::size_type __powerlaw_index;
unsigned __num_subconditions;
void set_num_subconditions();
public:
LagForcingFrequencyBreakCondition(
BrokenPowerlawPhaseLagZone &zone,
const DissipatingBody &body,
const DissipatingBody &other_body,
int orbital_frequency_multiplier,
int spin_frequency_multiplier
);
std::valarray<double> operator()(
Core::EvolModeType evol_mode,
const std::valarray<double> &orbit,
const std::valarray<double> &derivatives,
std::valarray<double> &stop_deriv
) const;
virtual void reached(short deriv_sign, unsigned index = 0);
virtual size_t num_subconditions() const
{return __num_subconditions;}
virtual StoppingConditionType type(unsigned =0) const
{return Evolve::EXTERNAL;}
virtual short expected_crossing_deriv_sign(
unsigned index = 0
) const;
virtual std::string describe(int index = -1) const;
~LagForcingFrequencyBreakCondition()
{
#ifndef NDEBUG
std::cerr << "Destroying: " << describe() << std::endl;
#endif
}
};//End LagForcingBreakFrequencyCondition class.
} //End Evolve namespace.
#endif