Class astep_base (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 o2scl::astep_base

Adaptive stepper [abstract base].

The adaptive stepper routines are based on one or many applications of ordinary ODE steppers (implemented in ode_step). Each adaptive stepper (astep_gsl or astep_nonadapt) can be used with any of the ODE stepper classes (e.g. ode_rkck_gsl). By default, ode_rkck_gsl is used. To modify the ODE stepper which is used, use the member function set_step() documented below.

Public Functions

astep_base()
~astep_base()
int astep(double &x, double xlimit, double &h, size_t n, vec_y_t &y, vec_dydx_t &dydx_out, vec_yerr_t &yerr, func_t &derivs) = 0

Make an adaptive integration step of the system derivs.

This attempts to take a step of size h from the point x of an n-dimensional system derivs starting with y. On exit, x and y contain the new values at the end of the step, h contains the size of the step, dydx_out contains the derivative at the end of the step, and yerr contains the estimated error at the end of the step.

int astep_derivs(double &x, double xlimit, double &h, size_t n, vec_y_t &y, vec_dydx_t &dydx, vec_yerr_t &yerr, func_t &derivs) = 0

Make an adaptive integration step of the system derivs with derivatives.

This attempts to take a step of size h from the point x of an n-dimensional system derivs starting with y and given the initial derivatives dydx. On exit, x, y and dydx contain the new values at the end of the step, h contains the size of the step, dydx contains the derivative at the end of the step, and yerr contains the estimated error at the end of the step.

int astep_full(double x, double xlimit, double &x_out, double &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) = 0

Make an adaptive integration step of the system derivs with derivatives.

This function performs an adaptive integration step with the n-dimensional system derivs and parameter pa. It Begins at x with initial stepsize h, ensuring that the step goes no farther than xlimit. At the end of the step, the size of the step taken is h and the new value of x is in x_out. Initially, the function values and derivatives should be specified in y and dydx. The function values, derivatives, and the error at the end of the step are given in yout, yerr, and dydx_out. Unlike in ode_step objects, the objects y, yout, dydx, and dydx_out must all be distinct.

int set_step(ode_step<vec_y_t, vec_dydx_t, vec_yerr_t, func_t> &step)

Set stepper.

This sets the stepper for use in the adaptive step routine. If no stepper is specified, then the default (def_step of type ode_rkck_gsl) is used.

Public Members

int verbose

Set output level.

ode_rkck_gsl<vec_y_t, vec_dydx_t, vec_yerr_t, func_t> def_step

The default stepper.

Protected Attributes

ode_step<vec_y_t, vec_dydx_t, vec_yerr_t, func_t> *stepp

Pointer to the stepper being used.