libiter is a library containing iterative solvers for linear set of equations used in libstokes. Currently the following solvers are implemented:
Some useful references:
please visit File Releases @ SF.
/* initialize parameters
* INPUT
* solver : string indicating the solver
* sta, sta2, gpb, otmk, or gmres (default)
* eps and log10_eps
* max (and restart)
* debug = 0 : no debug info
* = 1 : iteration numbs and residue
* out : FILE * to output debug info.
* OUTPUT
* (struct iter *) returned value :
*/
struct iter *
iter_init (const char * solver,
int max,
int restart,
double eps,
int debug,
FILE * out);
/* wrapper routine for iterative solvers
* INPUT
* n : size of vectors v[] and f[] -- expected to be np * nelm for red-sym
* b [n] : given vector
* atimes (n, x, b, user_data) : routine to calc A.x and return b[]
* user_data : pointer to be passed to solver and atimes routines
* it_param : parameters for iterative solvers
* solver : string indicating the solver
* "steepest" : steepest descent method
* "cg" : conjugate gradient
* "cgs" : conjugate gradient squared
* "bicgstab" : bi-conjugate gradient stabilized
* "sta", "sta2", "gpb", "otmk" :
* "gmres" : generalized minimum residual method (default)
* eps and log10_eps
* max (and restart)
* OUTPUT
* x [n] : solution
*/
void
solve_iter (int n, const double *b,
double *x,
void (*atimes) (int, const double *, double *, void *),
void * user_data,
struct iter * it_param);