Adaptive ODE stepper (GSL) More...
#include <astep_gsl.h>
This class performs an adaptive step of a system of ODEs. To modify the ODE stepper which is used, use the function astep_base::set_step().
Note, this has been updated to correspond to the ode-initval2 functions in GSL.
There is an example for the usage of this class in examples/ex_ode.cpp documented in the Ordinary differential equations example section.
Document what happens when the stepper function returns a non-zero value, as it's different now with the ode-initval2 function.
Document count, failed_steps, etc.
Default template arguments
func_t - ode_functvec_t - boost::numeric::ublas::vector < double > Definition at line 268 of file astep_gsl.h.
Public Types | |
| typedef boost::numeric::ublas::vector< double > | ubvector |
Public Member Functions | |
| virtual int | astep (double &x, double xmax, double &h, size_t n, vec_y_t &y, vec_dydx_t &dydx_out, vec_yerr_t &yerr, func_t &derivs) |
Make an adaptive integration step of the system derivs. More... | |
| virtual int | astep_derivs (double &x, double xmax, double &h, size_t n, vec_y_t &y, vec_dydx_t &dydx, vec_yerr_t &yerr, func_t &derivs) |
Make an adaptive integration step of the system derivs with derivatives. More... | |
| virtual int | astep_full (double x, double xmax, 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) |
Make an adaptive integration step of the system derivs. More... | |
Public Member Functions inherited from o2scl::astep_base< boost::numeric::ublas::vector< double >, boost::numeric::ublas::vector< double >, boost::numeric::ublas::vector< double >, ode_funct > | |
| virtual int | astep (double &x, double xlimit, double &h, size_t n, boost::numeric::ublas::vector< double > &y, boost::numeric::ublas::vector< double > &dydx_out, boost::numeric::ublas::vector< double > &yerr, ode_funct &derivs)=0 |
Make an adaptive integration step of the system derivs. More... | |
| virtual int | astep_derivs (double &x, double xlimit, double &h, size_t n, boost::numeric::ublas::vector< double > &y, boost::numeric::ublas::vector< double > &dydx, boost::numeric::ublas::vector< double > &yerr, ode_funct &derivs)=0 |
Make an adaptive integration step of the system derivs with derivatives. More... | |
| virtual int | astep_full (double x, double xlimit, double &x_out, double &h, size_t n, boost::numeric::ublas::vector< double > &y, boost::numeric::ublas::vector< double > &dydx, boost::numeric::ublas::vector< double > &yout, boost::numeric::ublas::vector< double > &yerr, boost::numeric::ublas::vector< double > &dydx_out, ode_funct &derivs)=0 |
Make an adaptive integration step of the system derivs with derivatives. More... | |
| int | set_step (ode_step< boost::numeric::ublas::vector< double >, boost::numeric::ublas::vector< double >, boost::numeric::ublas::vector< double >, ode_funct > &step) |
| Set stepper. More... | |
Public Attributes | |
| ode_control_gsl< vec_y_t, vec_dydx_t, vec_yerr_t > | con |
| Control specification. | |
Public Attributes inherited from o2scl::astep_base< boost::numeric::ublas::vector< double >, boost::numeric::ublas::vector< double >, boost::numeric::ublas::vector< double >, ode_funct > | |
| int | verbose |
| Set output level. | |
| ode_rkck_gsl< boost::numeric::ublas::vector< double >, boost::numeric::ublas::vector< double >, boost::numeric::ublas::vector< double >, ode_funct > | def_step |
| The default stepper. | |
Protected Member Functions | |
| int | evolve_apply (double t0, double t1, double &t, double &h, size_t nvar, vec_y_t &y, vec_dydx_t &dydx, vec_y_t &yout, vec_yerr_t &yerr, vec_dydx_t &dydx_out, func_t &derivs) |
| Apply the evolution for the next adaptive step. More... | |
Protected Attributes | |
| vec_y_t | yout_int |
| Temporary storage for yout. | |
| vec_dydx_t | dydx_int |
| Internal storage for dydx. | |
| double | last_step |
| The size of the last step. | |
| unsigned long int | count |
| The number of steps. | |
| unsigned long int | failed_steps |
| The number of failed steps. | |
| size_t | msize |
| The size of the allocated vectors. | |
Protected Attributes inherited from o2scl::astep_base< boost::numeric::ublas::vector< double >, boost::numeric::ublas::vector< double >, boost::numeric::ublas::vector< double >, ode_funct > | |
| ode_step< boost::numeric::ublas::vector< double >, boost::numeric::ublas::vector< double >, boost::numeric::ublas::vector< double >, ode_funct > * | stepp |
| Pointer to the stepper being used. | |
|
inlinevirtual |
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.
Definition at line 461 of file astep_gsl.h.
|
inlinevirtual |
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.
Definition at line 506 of file astep_gsl.h.
|
inlinevirtual |
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 xmax. 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.
This adaptive stepper function is faster than astep() or astep_derivs() because it does not require any copying of vectors.
Definition at line 557 of file astep_gsl.h.
|
inlineprotected |
This function is based on gsl_odeiv2_evolve_apply.
y, yout, dydx and dydx_out are all distinct vectors. Definition at line 304 of file astep_gsl.h.
Documentation generated with Doxygen. Provided under the
GNU Free Documentation License (see License Information).