Program Listing for File CombinedStoppingCondition.h¶
↰ Return to documentation for file (/home/kpenev/projects/git/poet/poet_src/Evolve/CombinedStoppingCondition.h)
#ifndef __COMBINED_STOPPING_CONDITION_H
#define __COMBINED_STOPPING_CONDITION_H
#include "../Core/SharedLibraryExportMacros.h"
#include "StoppingCondition.h"
#include <vector>
namespace Evolve {
class LIB_PUBLIC CombinedStoppingCondition : public StoppingCondition {
private:
std::vector<StoppingCondition *> __sub_conditions;
unsigned __num_subconditions;
bool __delete_subcond;
std::vector<StoppingConditionType> __types;
void update_meta_information(const StoppingCondition *rhs);
void add_subcondition_values(
const StoppingCondition *cond,
Core::EvolModeType evol_mode,
const std::valarray<double> &orbit,
const std::valarray<double> &derivatives,
size_t &first_index,
std::valarray<double> &values,
std::valarray<double> &derivs) const;
std::vector<StoppingCondition *>::const_iterator
find_condition(unsigned &index) const;
std::vector<StoppingCondition *>::iterator
find_condition(unsigned &index);
public:
CombinedStoppingCondition() :
__sub_conditions(), __num_subconditions(0), __delete_subcond(true) {}
CombinedStoppingCondition &operator|=(CombinedStoppingCondition &rhs);
CombinedStoppingCondition &operator|=(StoppingCondition *rhs);
std::valarray<double> operator()(
Core::EvolModeType evol_mode,
const std::valarray<double> &orbit,
const std::valarray<double> &derivatives,
std::valarray<double> &stop_deriv) const;
void no_delete_subcond() {__delete_subcond=false;}
virtual size_t num_subconditions() const {return __num_subconditions;}
StoppingConditionType type(unsigned index=0) const
{return __types[index];}
virtual void reached(short deriv_sign, unsigned index=0);
short expected_crossing_deriv_sign(unsigned index = 0) const;
virtual std::string describe(int index) const;
~CombinedStoppingCondition();
}; //End CombinedStoppingCondition class.
} //End Evolve namespace.
#endif