Bulirsch-Stoer implicit ODE stepper (GSL) More...
#include <ode_bsimp_gsl.h>
Implicit Bulirsch-Stoer method of Bader and Deuflhard (Bader83).
h_next
was defined in the original GSL version has been removed here, as it was unused by the stepper routine.exc_efailed
, then the stepper attempts to decrease the stepsize to continue. If the user-specified function returns a non-zero value other than exc_efailed
, or if the Jacobian evaluation returns any non-zero value, then the stepper aborts and returns the error value without calling the error handler. This behavior may change in the future.There is an example for the usage of this class in examples/ex_stiff.cpp
documented in the Stiff differential equations example section.
Definition at line 105 of file ode_bsimp_gsl.h.
Public Types | |
typedef boost::numeric::ublas::unbounded_array< double > | ubarr |
typedef boost::numeric::ublas::vector< double > | ubvector |
typedef boost::numeric::ublas::matrix< double > | ubmatrix |
Protected Attributes | |
size_t | dim |
Size of allocated vectors. | |
func_t * | funcp |
Function specifying derivatives. | |
jac_func_t * | jfuncp |
Jacobian. | |
ubmatrix | d |
Workspace for extrapolation. | |
ubmatrix | a_mat |
Workspace for linear system matrix. | |
double | ex_wk [sequence_max] |
Workspace for extrapolation. More... | |
State info | |
size_t | k_current |
size_t | k_choice |
double | eps |
Workspace for extrapolation step | |
ubarr | yp |
ubarr | y_save |
ubarr | yerr_save |
ubarr | y_extrap_save |
vec_t | y_extrap_sequence |
ubarr | extrap_work |
vec_t | dfdt |
vec_t | y_temp |
vec_t | delta_temp |
ubarr | weight |
mat_t | dfdy |
Static Protected Attributes | |
static const int | sequence_count =8 |
Number of entries in the Bader-Deuflhard extrapolation sequence. | |
static const int | sequence_max =7 |
Largest index of the Bader-Deuflhard extrapolation sequence. | |
Workspace for the basic stepper | |
vec_t | rhs_temp |
ubarr | delta |
size_t | order |
Order of last step. | |
int | verbose |
Verbose parameter. | |
int | compute_weights (const ubarr &y, ubarr &w, size_t n) |
Compute weights. | |
size_t | deuf_kchoice (double eps2, size_t dimension) |
Calculate a choice for the "order" of the method, using the Deuflhard criteria. More... | |
int | poly_extrap (ubmatrix &dloc, const double x[], const unsigned int i_step, const double x_i, const vec_t &y_i, vec_t &y_0, vec_t &y_0_err, ubarr &work) |
Polynomial extrapolation. More... | |
int | step_local (const double t0, const double h_total, const unsigned int n_step, const ubarr &y, const ubarr &yp_loc, const vec_t &dfdt_loc, const mat_t &dfdy_loc, vec_t &y_out) |
Basic implicit Bulirsch-Stoer step. More... | |
int | allocate (size_t n) |
Allocate memory for a system of size n . | |
void | free () |
Free allocated memory. | |
ode_bsimp_gsl () | |
virtual | ~ode_bsimp_gsl () |
int | reset () |
Reset stepper. | |
virtual int | step (double x, double h, size_t n, vec_t &y, vec_t &dydx, vec_t &yout, vec_t &yerr, vec_t &dydx_out, func_t &derivs, jac_func_t &jac) |
Perform an integration step. More... | |
|
inlineprotected |
Used in the allocate() function.
Definition at line 192 of file ode_bsimp_gsl.h.
|
inlineprotected |
Compute the step of index i_step
using polynomial extrapolation to evaulate functions by fitting a polynomial to estimates (x_i,y_i)
and output the result to y_0
and y_0_err
.
The index i_step
begins with zero.
Definition at line 246 of file ode_bsimp_gsl.h.
|
inlinevirtual |
Given initial value of the n-dimensional function in y
and the derivative in dydx
(which must generally 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
(at x+h
) using function derivs
to calculate derivatives. Implementations which do not calculate yerr
and/or dydx_out
do not reference these variables so that a blank vec_t
can be given. All of the implementations allow yout=y
and dydx_out=dydx
if necessary.
Definition at line 500 of file ode_bsimp_gsl.h.
|
inlineprotected |
Divide the step h_total
into n_step
smaller steps and do the Bader-Deuflhard semi-implicit iteration. This function starts at t0
with function values y
, derivatives yp_loc
, and information from the Jacobian to compute the final value y_out
.
Definition at line 295 of file ode_bsimp_gsl.h.
|
protected |
(This state variable was named 'x' in GSL.)
Definition at line 142 of file ode_bsimp_gsl.h.
Documentation generated with Doxygen. Provided under the
GNU Free Documentation License (see License Information).