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... | |
![]() | |
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. | |
![]() | |
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. | |
![]() | |
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).