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.
52 lines
1.8 KiB
C
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
|