Program Listing for File BreakLockCondition.h¶
↰ Return to documentation for file (/home/kpenev/projects/git/poet/poet_src/Evolve/BreakLockCondition.h)
#ifndef __BREAK_LOCK_CONDITION_H
#define __BREAK_LOCK_CONDITION_H
#include "../Core/SharedLibraryExportMacros.h"
#include "StoppingCondition.h"
namespace Evolve {
class BinarySystem;
class LIB_LOCAL BreakLockCondition : public StoppingCondition {
private:
BinarySystem &__system;
unsigned __locked_zone_index;
public:
BreakLockCondition(
BinarySystem &system,
unsigned locked_zone_index
) :
__system(system),
__locked_zone_index(locked_zone_index)
{}
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 size_t num_subconditions() const {return 2;}
StoppingConditionType type(unsigned =0) const {return BREAK_LOCK;}
void reached(short deriv_sign, unsigned index=0);
virtual short expected_crossing_deriv_sign(
unsigned index = 0
) const
{
assert(index <= 1);
return (index == 0 ? -1 : 1);
}
virtual std::string describe(int index = 0) const;
}; //End BreakLockCondition class.
} //End Evolve namespace.
#endif