libiter: library of iterative solvers


Outline

libiter is a library containing iterative solvers for linear set of equations used in libstokes. Currently the following solvers are implemented:

References

Some useful references:

Download

please visit File Releases @ SF.

Changes

API

/* 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);