Program Listing for File InterpolatedDerivatives.cpp¶
↰ Return to documentation for file (/home/kpenev/projects/git/poet/poet_src/StellarEvolution/InterpolatedDerivatives.cpp)
#define BUILDING_LIBRARY
#include "InterpolatedDerivatives.h"
namespace StellarEvolution {
double InterpolatedDerivatives::calc_deriv(unsigned deriv_order) const
{
if(deriv_order > 2) return 0.0;
alglib::real_1d_array interp_values;
interp_values.setlength(__interp_deriv->size());
for(unsigned i = 0; i < __interp_deriv->size(); ++i)
interp_values[i] = (*__interp_deriv)[i]->order(deriv_order);
return mass_feh_interp(__interp_masses,
__interp_feh,
interp_values,
__stellar_mass,
__stellar_feh);
}
InterpolatedDerivatives::InterpolatedDerivatives(
double mass,
double feh,
std::vector<const FunctionDerivatives*> *derivatives,
const alglib::real_1d_array &interp_masses,
const alglib::real_1d_array &interp_feh,
double age,
bool log_quantity,
bool delete_derivatives
) :
LogDerivatives(age, log_quantity),
__stellar_mass(mass),
__stellar_feh(feh),
__interp_deriv(derivatives),
__interp_masses(interp_masses),
__interp_feh(interp_feh),
__delete_derivatives(delete_derivatives)
{
assert(static_cast<long>(derivatives->size())
==
interp_masses.length() * interp_feh.length());
}
} //End of StellarEvolution namespace.