Class ode_rkf45_gsl (o2scl)

O2scl : Class List

template<class vec_y_t = boost::numeric::ublas::vector<double>, class vec_dydx_t = vec_y_t, class vec_yerr_t = vec_y_t, class func_t = ode_funct, class fp_t = double>
class ode_rkf45_gsl : public o2scl::ode_step<boost::numeric::ublas::vector<double>, boost::numeric::ublas::vector<double>, boost::numeric::ublas::vector<double>, ode_funct, double>

Runge-Kutta-Fehlberg embedded Runge-Kutta ODE stepper (GSL)

Based on [Hairer09].

Todo:

Check this because it may not give exact dydt_out.

Storage for the intermediate steps

vec_dydx_t k2
vec_dydx_t k3
vec_dydx_t k4
vec_dydx_t k5
vec_dydx_t k6
vec_y_t ytmp
size_t ndim

Size of allocated vectors.

Storage for the coefficients

fp_t ah[5]
fp_t b3[2]
fp_t b4[3]
fp_t b5[4]
fp_t b6[5]
fp_t c1
fp_t c3
fp_t c4
fp_t c5
fp_t c6
fp_t ec[7]
inline ode_rkf45_gsl()
inline virtual ~ode_rkf45_gsl()
inline virtual int step(fp_t x, fp_t h, size_t n, vec_y_t &y, vec_dydx_t &dydx, vec_y_t &yout, vec_yerr_t &yerr, vec_dydx_t &dydx_out, func_t &derivs)

Perform an integration step.

Given initial value of the n-dimensional function in y and the derivative in dydx (which must be computed beforehand) at the point x, take a step of size h giving the result in yout, the uncertainty in yerr, and the new derivative in dydx_out using function derivs to calculate derivatives. The parameters yout and y and the parameters dydx_out and dydx may refer to the same object.

If derivs always returns zero, then this function will also return zero. If not, step() will return the first non-zero value which was obtained in a call to derivs . The error handler is never called.