Program Listing for File PolynomialEvolutionZone.cpp

Return to documentation for file (/home/kpenev/projects/git/poet/poet_src/unit_tests/testEvolve/PolynomialEvolutionZone.cpp)

#include "PolynomialEvolutionZone.h"

namespace Evolve {
    void PolynomialEvolutionZone::configure(bool initialize,
                                            double age,
                                            double orbital_frequency,
                                            double eccentricity,
                                            double orbital_angmom,
                                            double spin,
                                            double inclination,
                                            double periapsis,
                                            bool spin_is_frequency)
    {
        for(int deriv_order = 0; deriv_order <= 2; ++deriv_order) {
            __current_radius[deriv_order] = outer_radius(age,
                                                         deriv_order);
            __current_mass[deriv_order] = outer_mass(age,
                                                     deriv_order);
            __current_inertia[deriv_order] = moment_of_inertia(age,
                                                               deriv_order);
        }

        DissipatingZone::configure(initialize,
                                   age,
                                   orbital_frequency,
                                   eccentricity,
                                   orbital_angmom,
                                   spin,
                                   inclination,
                                   periapsis,
                                   spin_is_frequency);
    }

    double PolynomialEvolutionZone::evaluate_polynomial(
        const std::valarray<double> &coefficients,
        double age,
        int deriv_order
    ) const
    {
        std::valarray<double> gsl_result(deriv_order + 1);
        gsl_poly_eval_derivs(&(coefficients[0]),
                             coefficients.size(),
                             age,
                             &(gsl_result[0]),
                             deriv_order + 1);
        return gsl_result[deriv_order];
    }

}//End Evolve namespace.