Program Listing for File CustomStellarEvolution.cpp

Return to documentation for file (/home/kpenev/projects/git/poet/poet_src/StellarEvolution/CustomStellarEvolution.cpp)

#define BUILDING_LIBRARY
#include "CustomStellarEvolution.h"

namespace CustomStellarEvolution {

    Evolution::Evolution(const std::string &filename,
            const std::vector<Columns> &format,
            const std::vector<double> &smoothing,
            const std::vector<int> &nodes)
    {
        std::ifstream track(filename.c_str(), std::ios_base::in);
        std::vector<int> column_numbers(NUM_TRACK_QUANTITIES, -1);
        for(size_t i=0; i<format.size(); ++i) {
            std::cerr << "Initial column_numbers[" << format[i] << "]=" << i
                      << std::endl;
            column_numbers[format[i]]=i;
        }
        std::valarray< std::list<double> >
            quantities=parse_columns(track, column_numbers, false);
        track.close();
        interpolate_from(
                std::valarray<double>(1.0, 1),
                std::list< std::valarray<double> >(
                    1,
                    list_to_valarray(quantities[AGE])
                ),
                std::list< std::valarray<double> >(
                    1,
                    list_to_valarray(quantities[RSTAR])
                ),
                std::list< std::valarray<double> >(
                    1,
                    list_to_valarray(quantities[ICONV])
                ),
                std::list< std::valarray<double> >(
                    1,
                    list_to_valarray(quantities[IRAD])
                ),
                std::list< std::valarray<double> >(
                    1,
                    list_to_valarray(quantities[MRAD])
                ),
                std::list< std::valarray<double> >(
                    1,
                    list_to_valarray(quantities[RRAD])
                ),

                smoothing[RSTAR],
                smoothing[ICONV],
                smoothing[IRAD],
                smoothing[MRAD],
                smoothing[RRAD],

                nodes[RSTAR],
                nodes[ICONV],
                nodes[IRAD],
                nodes[MRAD],
                nodes[RRAD],

                (column_numbers[LSTAR]==-1 ?
                 std::list< std::valarray<double> >() :
                 std::list< std::valarray<double> >(1,
                     list_to_valarray(quantities[LSTAR]))),
                smoothing[LSTAR],
                nodes[LSTAR],

                (column_numbers[MRAD]==-1
                 ? 0
                 : std::numeric_limits<double>::max()),

                0,
                0
        );
    }
};