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