12eac72dbSBarry Smith 22eac72dbSBarry Smith #ifndef __KSP_PACKAGE 32eac72dbSBarry Smith #define __KSP_PACKAGE 42eac72dbSBarry Smith #include "petsc.h" 52eac72dbSBarry Smith #include "vec.h" 62eac72dbSBarry Smith 72eac72dbSBarry Smith typedef struct _KSP* KSP; 82eac72dbSBarry Smith 92eac72dbSBarry Smith /* Possible Krylov Space Methods */ 102eac72dbSBarry Smith typedef enum { KSPRICHARDSON, KSPCHEBYCHEV, KSPCG, KSPGMRES, 112eac72dbSBarry Smith KSPTCQMR, KSPBCGS, KSPCGS, KSPTFQMR, KSPCR, KSPLSQR, 122eac72dbSBarry Smith KSPPREONLY } KSPMETHOD; 132eac72dbSBarry Smith 14*8ed539a5SBarry Smith extern int KSPPrintMethods(char *); 152eac72dbSBarry Smith 16*8ed539a5SBarry Smith extern int KSPCreate(KSP *); 17*8ed539a5SBarry Smith extern int KSPSetMethod(KSP,KSPMETHOD); 18*8ed539a5SBarry Smith extern int KSPSetUp(KSP); 19*8ed539a5SBarry Smith extern int KSPSolve(KSP,int *); 20*8ed539a5SBarry Smith extern int KSPDestroy(KSP); 212eac72dbSBarry Smith 22*8ed539a5SBarry Smith extern int KSPRegisterAll(); 23*8ed539a5SBarry Smith extern int KSPRegister(KSPMETHOD,char *,int (*)(KSP)); 242eac72dbSBarry Smith 25*8ed539a5SBarry Smith extern int KSPGetMethodName(KSPMETHOD,char **); 26*8ed539a5SBarry Smith extern int KSPGetWorkCounts(KSP,int*,int*,int*,int*,int*); 27*8ed539a5SBarry Smith extern int KSPClearWorkCounts(KSP); 282eac72dbSBarry Smith 29*8ed539a5SBarry Smith extern int KSPSetIterations(KSP,int); 30*8ed539a5SBarry Smith extern int KSPSetRightPreconditioner(KSP); 31*8ed539a5SBarry Smith extern int KSPGetPreconditionerSide(KSP,int *); 32*8ed539a5SBarry Smith extern int KSPGetMethodFromContext(KSP,KSPMETHOD *); 33*8ed539a5SBarry Smith extern int KSPGetMethodFromOptions(int,char*,KSPMETHOD *); 34*8ed539a5SBarry Smith extern int KSPSetRelativeTolerance(KSP,double); 35*8ed539a5SBarry Smith extern int KSPSetAbsoluteTolerance(KSP,double); 36*8ed539a5SBarry Smith extern int KSPSetDivergenceTolerance(KSP,double); 37*8ed539a5SBarry Smith extern int KSPSetCalculateResidual(KSP); 38*8ed539a5SBarry Smith extern int KSPSetDoNotCalculateResidual(KSP); 39*8ed539a5SBarry Smith extern int KSPSetUsePreconditionedResidual(KSP); 40*8ed539a5SBarry Smith extern int KSPSetInitialGuessZero(KSP); 41*8ed539a5SBarry Smith extern int KSPSetCalculateEigenvalues(KSP); 42*8ed539a5SBarry Smith extern int KSPSetRhs(KSP,Vec); 43*8ed539a5SBarry Smith extern int KSPGetRhs(KSP,Vec *); 44*8ed539a5SBarry Smith extern int KSPSetSolution(KSP,Vec); 45*8ed539a5SBarry Smith extern int KSPGetSolution(KSP,Vec *); 46*8ed539a5SBarry Smith extern int KSPSetAmult(KSP,int (*)(void *,Vec,Vec),void *); 472eac72dbSBarry Smith 48*8ed539a5SBarry Smith extern int KSPGetAmultContext(KSP,void **); 49*8ed539a5SBarry Smith extern int KSPSetAmultTranspose(KSP,int (*)(void *,Vec,Vec)); 50*8ed539a5SBarry Smith extern int KSPSetBinv(KSP,int(*)(void *,Vec,Vec),void *); 51*8ed539a5SBarry Smith extern int KSPGetBinvContext(KSP,void **); 52*8ed539a5SBarry Smith extern int KSPSetBinvTranspose(KSP,int (*)(void *,Vec,Vec)); 53*8ed539a5SBarry Smith extern int KSPSetMatop(KSP,int (*)(void *,void *,Vec,Vec)); 54*8ed539a5SBarry Smith extern int KSPSetMatopTranspose(KSP,int (*)(void *,void *,Vec,Vec)); 55*8ed539a5SBarry Smith extern int KSPSetMonitor(KSP,int (*)(KSP,int,double, void*), void *); 56*8ed539a5SBarry Smith extern int KSPGetMonitorContext(KSP,void **); 57*8ed539a5SBarry Smith extern int KSPSetResidualHistory(KSP, double *,int); 58*8ed539a5SBarry Smith extern int KSPSetConvergenceTest(KSP,int (*)(KSP,int,double, void*), void *); 59*8ed539a5SBarry Smith extern int KSPGetConvergenceContext(KSP,void **); 602eac72dbSBarry Smith 61*8ed539a5SBarry Smith extern int KSPBuildSolution(KSP, Vec,Vec *); 62*8ed539a5SBarry Smith extern int KSPBuildResidual(KSP, Vec, Vec,Vec *); 632eac72dbSBarry Smith 64*8ed539a5SBarry Smith extern int KSPRichardsonSetScale(KSP , double); 65*8ed539a5SBarry Smith extern int KSPChebychevSetEigenvalues(KSP , double, double); 66*8ed539a5SBarry Smith extern int KSPCGGetEigenvalues(KSP, int n,double*,double*); 67*8ed539a5SBarry Smith extern int KSPGMRESSetRestart(KSP, int); 68*8ed539a5SBarry Smith extern int KSPSetFromOptions(KSP); 692eac72dbSBarry Smith 70*8ed539a5SBarry Smith extern int KSPDefaultCGMonitor(KSP,int,double, void * ); 71*8ed539a5SBarry Smith extern int KSPDefaultCGConverged(KSP,int,double, void *); 72*8ed539a5SBarry Smith extern int KSPDefaultMonitor(KSP,int,double, void *); 73*8ed539a5SBarry Smith extern int KSPLineGraphMonitor(KSP,int,double, void *); 74*8ed539a5SBarry Smith extern int KSPDefaultConverged(KSP,int,double, void *); 752eac72dbSBarry Smith 76*8ed539a5SBarry Smith extern int KSPPrintHelp(KSP); 77*8ed539a5SBarry Smith 78*8ed539a5SBarry Smith extern int KSPRichardsonSetFast(KSP,int (*)(void*,Vec,Vec,Vec,int),void*); 79*8ed539a5SBarry Smith 80*8ed539a5SBarry Smith extern int KSPView(KSP,Viewer); 812eac72dbSBarry Smith #endif 822eac72dbSBarry Smith 832eac72dbSBarry Smith 84