Program Listing for File WindSaturationCondition.h¶
↰ Return to documentation for file (/home/kpenev/projects/git/poet/poet_src/Star/WindSaturationCondition.h)
#ifndef __WIND_SATURATION_CONDITION_H
#define __WIND_SATURATION_CONDITION_H
#include "../Core/SharedLibraryExportMacros.h"
#include "../Evolve/StoppingCondition.h"
#include "SaturatingSkumanichWindBody.h"
namespace Star {
class LIB_LOCAL WindSaturationCondition : public Evolve::StoppingCondition {
private:
double __saturation_freq;
SaturatingSkumanichWindBody &__body;
const Evolve::DissipatingBody &__other_body;
bool __primary;
public:
WindSaturationCondition(
SaturatingSkumanichWindBody &body,
const Evolve::DissipatingBody &other_body,
bool primary,
bool saturated
) :
StoppingCondition((saturated ? -1 : 1)),
__saturation_freq(body.saturation_frequency()),
__body(body),
__other_body(other_body),
__primary(primary)
{}
std::valarray<double> operator()(
Core::EvolModeType evol_mode,
const std::valarray<double> &orbit,
const std::valarray<double> &derivatives,
std::valarray<double> &stop_deriv
) const;
Evolve::StoppingConditionType type(unsigned =0) const
{return Evolve::WIND_SATURATION;}
void reached(short deriv_sign, unsigned index=0)
{
Evolve::StoppingCondition::reached(deriv_sign, index);
__body.saturation_freq_crossed(deriv_sign);
}
virtual std::string describe(int index = -1) const;
};//End WindSaturationCondition class.
}//End Star namespace.
#endif