Program Listing for File mass_feh_interp.cpp¶
↰ Return to documentation for file (/home/kpenev/projects/git/poet/poet_src/StellarEvolution/mass_feh_interp.cpp)
#define BUILDING_LIBRARY
#include "mass_feh_interp.h"
namespace StellarEvolution {
double mass_feh_interp(
const alglib::real_1d_array &interp_masses,
const alglib::real_1d_array &interp_feh,
const alglib::real_1d_array &interp_values,
double stellar_mass,
double stellar_feh
)
{
assert(interp_masses.length() * interp_feh.length()
==
interp_values.length());
if(interp_values.length() == 1) {
return interp_values[0];
} else if(interp_masses.length() == 1) {
alglib::spline1dinterpolant spline;
alglib::spline1dbuildcubic(interp_feh,
interp_values,
spline);
return alglib::spline1dcalc(spline, stellar_feh);
} else if(interp_feh.length() == 1) {
alglib::spline1dinterpolant spline;
alglib::spline1dbuildcubic(interp_masses,
interp_values,
spline);
return alglib::spline1dcalc(spline, stellar_mass);
} else {
alglib::spline2dinterpolant spline;
alglib::spline2dbuildbicubicv(interp_masses,
interp_masses.length(),
interp_feh,
interp_feh.length(),
interp_values,
1,
spline);
return alglib::spline2dcalc(spline,
stellar_mass,
stellar_feh);
}
}
}