![]() |
Object-oriented Scientific Computing Library: Version 0.910
|
Adaptive ODE stepper (GSL) More...
#include <gsl_astep.h>
This class performs an adaptive step of a system of ODEs. To modify the ODE stepper which is used, use the function adapt_step::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 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
- ovector_basealloc_vec_t
- ovectoralloc_t
- ovector_alloc Definition at line 259 of file gsl_astep.h.
Public Member Functions | |
virtual int | astep (double &x, double xmax, double &h, size_t n, vec_t &y, vec_t &dydx_out, vec_t &yerr, func_t &derivs) |
Make an adaptive integration step of the system derivs . | |
virtual int | astep_derivs (double &x, double xmax, double &h, size_t n, vec_t &y, vec_t &dydx, vec_t &yerr, func_t &derivs) |
Make an adaptive integration step of the system derivs with derivatives. | |
virtual int | astep_full (double x, double xmax, double &x_out, double &h, size_t n, vec_t &y, vec_t &dydx, vec_t &yout, vec_t &yerr, vec_t &dydx_out, func_t &derivs) |
Make an adaptive integration step of the system derivs . | |
Data Fields | |
gsl_ode_control< vec_t > | con |
Control specification. | |
Protected Member Functions | |
int | evolve_apply (double t0, double t1, double &t, double &h, size_t nvar, vec_t &y, vec_t &dydx, vec_t &yout, vec_t &yerr, vec_t &dydx_out, func_t &derivs) |
Apply the evolution for the next adaptive step. | |
Protected Attributes | |
alloc_t | ao |
Memory allocator for objects of type alloc_vec_t . | |
alloc_vec_t | yout_int |
Temporary storage for yout. | |
alloc_vec_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. |
int gsl_astep< func_t, vec_t, alloc_vec_t, alloc_t >::evolve_apply | ( | double | t0, |
double | t1, | ||
double & | t, | ||
double & | h, | ||
size_t | nvar, | ||
vec_t & | y, | ||
vec_t & | dydx, | ||
vec_t & | yout, | ||
vec_t & | yerr, | ||
vec_t & | dydx_out, | ||
func_t & | derivs | ||
) | [inline, protected] |
This function is based on gsl_odeiv2_evolve_apply
.
y
, yout
, dydx
and dydx_out
are all distinct vectors. Definition at line 293 of file gsl_astep.h.
virtual int gsl_astep< func_t, vec_t, alloc_vec_t, alloc_t >::astep | ( | double & | x, |
double | xmax, | ||
double & | h, | ||
size_t | n, | ||
vec_t & | y, | ||
vec_t & | dydx_out, | ||
vec_t & | yerr, | ||
func_t & | derivs | ||
) | [inline, virtual] |
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.
Implements adapt_step< func_t, vec_t, alloc_vec_t, alloc_t >.
Definition at line 452 of file gsl_astep.h.
virtual int gsl_astep< func_t, vec_t, alloc_vec_t, alloc_t >::astep_derivs | ( | double & | x, |
double | xmax, | ||
double & | h, | ||
size_t | n, | ||
vec_t & | y, | ||
vec_t & | dydx, | ||
vec_t & | yerr, | ||
func_t & | derivs | ||
) | [inline, virtual] |
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.
Implements adapt_step< func_t, vec_t, alloc_vec_t, alloc_t >.
Definition at line 497 of file gsl_astep.h.
virtual int gsl_astep< func_t, vec_t, alloc_vec_t, alloc_t >::astep_full | ( | double | x, |
double | xmax, | ||
double & | x_out, | ||
double & | h, | ||
size_t | n, | ||
vec_t & | y, | ||
vec_t & | dydx, | ||
vec_t & | yout, | ||
vec_t & | yerr, | ||
vec_t & | dydx_out, | ||
func_t & | derivs | ||
) | [inline, virtual] |
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.
Implements adapt_step< func_t, vec_t, alloc_vec_t, alloc_t >.
Definition at line 548 of file gsl_astep.h.
Documentation generated with Doxygen. Provided under the GNU Free Documentation License (see License Information).