You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
psblas3/cbind/krylov/psb_krylov_cbind.h

52 lines
1.8 KiB
C

#ifndef PSB_KRYL_CBIND_
#define PSB_KRYL_CBIND_
#include "psb_base_cbind.h"
#include "psb_prec_cbind.h"
#ifdef __cplusplus
extern "C" {
#endif
/* Object handle related routines */
/* No new handles for Krylov methods. */
/* Here's a choice: define a struct to hold the options */
/* Drawback: we end up defining defaults in two places */
/* Note: must be interoperable */
typedef struct psb_c_solveroptions {
int iter; /* On exit how many iterations were performed */
int itmax; /* On entry maximum number of iterations */
int itrace; /* On entry print an info message every itrace iterations */
int irst; /* Restart depth for RGMRES or BiCGSTAB(L) */
int istop; /* Stopping criterion: 1:backward error 2: ||r||_2/||b||_2 */
double eps; /* Stopping tolerance */
double err; /* Convergence indicator on exit */
} psb_c_SolverOptions;
int psb_c_DefaultSolverOptions(psb_c_SolverOptions *opt);
int psb_c_skrylov(const char *method, psb_c_sspmat *ah, psb_c_sprec *ph,
psb_c_svector *bh, psb_c_svector *xh,
psb_c_descriptor *cdh, psb_c_SolverOptions *opt);
int psb_c_dkrylov(const char *method, psb_c_dspmat *ah, psb_c_dprec *ph,
psb_c_dvector *bh, psb_c_dvector *xh,
psb_c_descriptor *cdh, psb_c_SolverOptions *opt);
int psb_c_ckrylov(const char *method, psb_c_cspmat *ah, psb_c_cprec *ph,
psb_c_cvector *bh, psb_c_cvector *xh,
psb_c_descriptor *cdh, psb_c_SolverOptions *opt);
int psb_c_zkrylov(const char *method, psb_c_zspmat *ah, psb_c_zprec *ph,
psb_c_zvector *bh, psb_c_zvector *xh,
psb_c_descriptor *cdh, psb_c_SolverOptions *opt);
#define PSB_VALID_KRYLOV_METHODS_STRINGS "CG","CGS","BICG","BICGSTAB","RGMRES","BICGSTABL","FCG","GCR"
#define PSB_VALID_KRYLOV_METHODS_STRING "CG CGS BICG BICGSTAB RGMRES BICGSTABL FCG GCR"
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif