Program Listing for File SynchronizedCondition.h

Return to documentation for file (/home/kpenev/projects/git/poet/poet_src/Evolve/SynchronizedCondition.h)

#ifndef __SYNCHRONIZED_CONDITION_H
#define __SYNCHRONIZED_CONDITION_H

#include "../Core/SharedLibraryExportMacros.h"
#include "StoppingCondition.h"

namespace Evolve {

    class DissipatingZone;
    class BinarySystem;

    class LIB_LOCAL SynchronizedCondition : public StoppingCondition{
    private:
        int __orbital_freq_mult,

            __spin_freq_mult;

        bool __primary;

        unsigned __zone_index;

        const DissipatingZone &__zone;

        BinarySystem &__system;

    public:
        SynchronizedCondition(
            int orbital_freq_mult,

            int spin_freq_mult,

            short deriv_sign,

            bool primary,

            unsigned zone_index,

            BinarySystem &system
        );

        std::valarray<double> operator()(
            Core::EvolModeType evol_mode,
            const std::valarray<double> &orbit,
            const std::valarray<double> &derivatives,
            std::valarray<double> &stop_deriv
        ) const;

        StoppingConditionType type(unsigned =0) const {return SYNCHRONIZED;}

        int orbital_frequency_multiplier() const {return __orbital_freq_mult;}

        int spin_frequency_multiplier() const {return __spin_freq_mult;}

    //  short body_index() const {return __body_index;}

        void reached(short deriv_sign, unsigned index=0);

        virtual std::string describe(int index = -1) const;

    };//End SynchronizedCondition class.

}//End Evolve namespace.

#endif