![]() |
Object-oriented Scientific Computing Library: Version 0.910
|
ODE solver using a generic linear solver to solve finite-difference equations. More...
#include <ode_it_solve.h>
Definition at line 130 of file ode_it_solve.h.
Public Member Functions | |
int | set_solver (o2scl_linalg::linear_solver< solver_vec_t, solver_mat_t > &ls) |
Set the linear solver. | |
int | solve (size_t n_grid, size_t n_eq, size_t nb_left, vec_t &x, mat_t &y, func_t &derivs, func_t &left, func_t &right, solver_mat_t &mat, solver_vec_t &rhs, solver_vec_t &dy) |
Solve derivs with boundary conditions left and right . | |
Data Fields | |
bool | make_mats |
int | verbose |
Set level of output (default 0) | |
double | h |
Stepsize for finite differencing (default ![]() | |
double | tol_rel |
Tolerance (default ![]() | |
size_t | niter |
Maximum number of iterations (default 30) | |
double | alpha |
Size of correction to apply (default 1.0) | |
o2scl_linalg::linear_solver_hh < solver_vec_t, solver_mat_t > | def_solver |
Default linear solver. | |
Protected Member Functions | |
virtual double | fd_left (size_t ieq, size_t ivar, double x, vec_t &y) |
Compute the derivatives of the LHS boundary conditions. | |
virtual double | fd_right (size_t ieq, size_t ivar, double x, vec_t &y) |
Compute the derivatives of the RHS boundary conditions. | |
virtual double | fd_derivs (size_t ieq, size_t ivar, double x, vec_t &y) |
Compute the finite-differenced part of the differential equations. | |
Protected Attributes | |
o2scl_linalg::linear_solver < solver_vec_t, solver_mat_t > * | solver |
Solver. | |
Storage for functions | |
ode_it_funct< vec_t > * | fl |
ode_it_funct< vec_t > * | fr |
ode_it_funct< vec_t > * | fd |
int ode_it_solve< func_t, vec_t, mat_t, matrix_row_t, solver_vec_t, solver_mat_t >::solve | ( | size_t | n_grid, |
size_t | n_eq, | ||
size_t | nb_left, | ||
vec_t & | x, | ||
mat_t & | y, | ||
func_t & | derivs, | ||
func_t & | left, | ||
func_t & | right, | ||
solver_mat_t & | mat, | ||
solver_vec_t & | rhs, | ||
solver_vec_t & | dy | ||
) | [inline] |
Given a grid of size n_grid
and n_eq
differential equations, solve them by relaxation. The grid is specified in x
, which is a vector of size n_grid
. The differential equations are given in derivs
, the boundary conditions on the left hand side in left
, and the boundary conditions on the right hand side in right
. The number of boundary conditions on the left hand side is nb_left
, and the number of boundary conditions on the right hand side should be n_eq-nb_left
. The initial guess for the solution, a matrix of size [n_grid][n_eq]
should be given in y
. Upon success, y
will contain an approximate solution of the differential equations. The matrix mat
is workspace of size [n_grid*n_eq][n_grid*n_eq]
, and the vectors rhs
and y
are workspace of size [n_grid*n_eq]
.
Definition at line 189 of file ode_it_solve.h.
virtual double ode_it_solve< func_t, vec_t, mat_t, matrix_row_t, solver_vec_t, solver_mat_t >::fd_left | ( | size_t | ieq, |
size_t | ivar, | ||
double | x, | ||
vec_t & | y | ||
) | [inline, protected, virtual] |
This function computes
Definition at line 356 of file ode_it_solve.h.
virtual double ode_it_solve< func_t, vec_t, mat_t, matrix_row_t, solver_vec_t, solver_mat_t >::fd_right | ( | size_t | ieq, |
size_t | ivar, | ||
double | x, | ||
vec_t & | y | ||
) | [inline, protected, virtual] |
This function computes
Definition at line 375 of file ode_it_solve.h.
virtual double ode_it_solve< func_t, vec_t, mat_t, matrix_row_t, solver_vec_t, solver_mat_t >::fd_derivs | ( | size_t | ieq, |
size_t | ivar, | ||
double | x, | ||
vec_t & | y | ||
) | [inline, protected, virtual] |
This function computes
Definition at line 395 of file ode_it_solve.h.
Documentation generated with Doxygen. Provided under the GNU Free Documentation License (see License Information).