#include <gsl_bsimp.h>
h_next
was defined in the original GSL version has been removed here, as it was unused by the stepper routine.
At the moment, this class retains the GSL approach to handling non-integer return values in the user-specified derivative function. If the user-specified function returns gsl_efailed
, then the stepper attempts to decrease the stepsize to continue. If the user-specified function returns a non-zero value other than gsl_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.
Definition at line 100 of file gsl_bsimp.h.
Public Member Functions | |
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, param_t &pa, func_t &derivs, jac_func_t &jac) |
Perform an integration step. | |
Protected Member Functions | |
int | compute_weights (const double y[], double 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. | |
int | poly_extrap (gsl_matrix *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, double work[]) |
Polynomial extrapolation. | |
int | step_local (const double t0, const double h_total, const unsigned int n_step, const double y[], const double yp_loc[], const vec_t &dfdt_loc, const mat_t &dfdy_loc, vec_t &y_out) |
Basic implicit Bulirsch-Stoer step. | |
int | allocate (size_t n) |
Allocate memory for a system of size n . | |
void | free () |
Free allocated memory. | |
Protected Attributes | |
size_t | dim |
Size of allocated vectors. | |
alloc_t | ao |
Memory allocator for objects of type alloc_vec_t . | |
mat_alloc_t | mo |
Memory allocator for objects of type alloc_mat_t . | |
func_t * | funcp |
Function specifying derivatives. | |
jac_func_t * | jfuncp |
Jacobian. | |
param_t * | pap |
User-specified paramter. | |
gsl_matrix * | d |
Workspace for extrapolation. | |
gsl_matrix * | a_mat |
Workspace for linear system matrix. | |
double | ex_wk [sequence_max] |
Workspace for extrapolation. | |
size_t | order |
Order of last step. | |
State info | |
size_t | k_current |
size_t | k_choice |
double | eps |
Workspace for extrapolation step | |
double * | yp |
double * | y_save |
double * | yerr_save |
double * | y_extrap_save |
alloc_vec_t | y_extrap_sequence |
double * | extrap_work |
alloc_vec_t | dfdt |
alloc_vec_t | y_temp |
alloc_vec_t | delta_temp |
double * | weight |
alloc_mat_t | dfdy |
Workspace for the basic stepper | |
alloc_vec_t | rhs_temp |
double * | delta |
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. |
size_t deuf_kchoice | ( | double | eps2, | |
size_t | dimension | |||
) | [inline, protected] |
Used in the allocate() function.
Definition at line 191 of file gsl_bsimp.h.
int poly_extrap | ( | gsl_matrix * | 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, | |||
double | work[] | |||
) | [inline, protected] |
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 247 of file gsl_bsimp.h.
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, | |||
param_t & | pa, | |||
func_t & | derivs, | |||
jac_func_t & | jac | |||
) | [inline, virtual] |
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 509 of file gsl_bsimp.h.
int step_local | ( | const double | t0, | |
const double | h_total, | |||
const unsigned int | n_step, | |||
const double | y[], | |||
const double | yp_loc[], | |||
const vec_t & | dfdt_loc, | |||
const mat_t & | dfdy_loc, | |||
vec_t & | y_out | |||
) | [inline, protected] |
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 297 of file gsl_bsimp.h.
double ex_wk[sequence_max] [protected] |
(This state variable was named 'x' in GSL.)
Definition at line 140 of file gsl_bsimp.h.
Documentation generated with Doxygen and provided under the GNU Free Documentation License. See License Information for details.
Project hosting provided by
,
O2scl Sourceforge Project Page