Program Listing for File EccentricityExpansionCoefficients.h

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

#ifndef __ECCENTRICITY_EXPANSION_COEFFICIENTS_H
#define __ECCENTRICITY_EXPANSION_COEFFICIENTS_H

#include "../Core/SharedLibraryExportMacros.h"
#include "../Core/Error.h"
#include <vector>
#include <fstream>
#include <iomanip>
#include <cmath>
#include <iostream>
#include <sstream>
#include <cassert>
#include <algorithm>

namespace Evolve {

    class LIB_PUBLIC EccentricityExpansionCoefficients {
    private:
        unsigned __max_e_power;

        std::vector< std::vector<double> >
            __alpha,

            __gamma_plus,

            __gamma_minus;

        bool __useable;

        //corresponding to the given term.
        int inner_index(
                int msign,

                int s,

                int epower) const;

        std::pair<double, double> p_m2s(
                double e,

                int s,

                unsigned max_e_power,

                bool deriv
        ) const;

        std::pair<double, double> p_0s(
                double e,

                int s,

                unsigned max_e_power,

                bool deriv
        ) const;

        std::pair<double, double> p_p2s(
                double e,

                int s,

                unsigned max_e_power,

                bool deriv
        ) const;

    public:
        EccentricityExpansionCoefficients() : __useable(false) {}

        void read(
                const std::string &tabulated_pms_fname="",

                int max_e_power=-1);


        unsigned max_e_power() const {return __max_e_power;}

        std::pair<double, double> operator()(
                int m,

                int s,

                double e,

                unsigned max_e_power,

                bool deriv) const;
    }; //End EccentricityExpansionCoefficients class.

} //End Evolve namespace.

#endif