![]() |
Object-oriented Scientific Computing Library: Version 0.910
|
Bulirsch-Stoer implicit ODE stepper (GSL) More...
#include <gsl_bsimp.h>
Bader-Deuflhard implicit extrapolative stepper (Bader83).
h_next
was defined in the original GSL version has been removed here, as it was unused by the stepper routine.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 102 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, 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. | |
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 gsl_bsimp< func_t, jac_func_t, vec_t, alloc_vec_t, alloc_t, mat_t, alloc_mat_t, mat_alloc_t >::deuf_kchoice | ( | double | eps2, |
size_t | dimension | ||
) | [inline, protected] |
Used in the allocate() function.
Definition at line 189 of file gsl_bsimp.h.
int gsl_bsimp< func_t, jac_func_t, vec_t, alloc_vec_t, alloc_t, mat_t, alloc_mat_t, mat_alloc_t >::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 244 of file gsl_bsimp.h.
int gsl_bsimp< func_t, jac_func_t, vec_t, alloc_vec_t, alloc_t, mat_t, alloc_mat_t, mat_alloc_t >::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 293 of file gsl_bsimp.h.
virtual int gsl_bsimp< func_t, jac_func_t, vec_t, alloc_vec_t, alloc_t, mat_t, alloc_mat_t, mat_alloc_t >::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 | ||
) | [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 504 of file gsl_bsimp.h.
double gsl_bsimp< func_t, jac_func_t, vec_t, alloc_vec_t, alloc_t, mat_t, alloc_mat_t, mat_alloc_t >::ex_wk[sequence_max] [protected] |
(This state variable was named 'x' in GSL.)
Definition at line 139 of file gsl_bsimp.h.
Documentation generated with Doxygen. Provided under the GNU Free Documentation License (see License Information).