12eac72dbSBarry Smith 22eac72dbSBarry Smith #ifndef __KSP_PACKAGE 32eac72dbSBarry Smith #define __KSP_PACKAGE 42eac72dbSBarry Smith #include "petsc.h" 52eac72dbSBarry Smith #include "vec.h" 6aabeff55SBarry Smith #include "mat.h" 7aabeff55SBarry Smith #include "pc.h" 82eac72dbSBarry Smith 92eac72dbSBarry Smith typedef struct _KSP* KSP; 102eac72dbSBarry Smith 112eac72dbSBarry Smith /* Possible Krylov Space Methods */ 122eac72dbSBarry Smith typedef enum { KSPRICHARDSON, KSPCHEBYCHEV, KSPCG, KSPGMRES, 132eac72dbSBarry Smith KSPTCQMR, KSPBCGS, KSPCGS, KSPTFQMR, KSPCR, KSPLSQR, 142eac72dbSBarry Smith KSPPREONLY } KSPMETHOD; 152eac72dbSBarry Smith 16*1eb62cbbSBarry Smith extern int KSPPrintMethods(char *,char *); 172eac72dbSBarry Smith 188ed539a5SBarry Smith extern int KSPCreate(KSP *); 198ed539a5SBarry Smith extern int KSPSetMethod(KSP,KSPMETHOD); 208ed539a5SBarry Smith extern int KSPSetUp(KSP); 218ed539a5SBarry Smith extern int KSPSolve(KSP,int *); 228ed539a5SBarry Smith extern int KSPDestroy(KSP); 232eac72dbSBarry Smith 248ed539a5SBarry Smith extern int KSPRegisterAll(); 258ed539a5SBarry Smith extern int KSPRegister(KSPMETHOD,char *,int (*)(KSP)); 262eac72dbSBarry Smith 278ed539a5SBarry Smith extern int KSPGetMethodName(KSPMETHOD,char **); 288ed539a5SBarry Smith extern int KSPGetWorkCounts(KSP,int*,int*,int*,int*,int*); 298ed539a5SBarry Smith extern int KSPClearWorkCounts(KSP); 302eac72dbSBarry Smith 318ed539a5SBarry Smith extern int KSPSetIterations(KSP,int); 328ed539a5SBarry Smith extern int KSPSetRightPreconditioner(KSP); 338ed539a5SBarry Smith extern int KSPGetPreconditionerSide(KSP,int *); 348ed539a5SBarry Smith extern int KSPGetMethodFromContext(KSP,KSPMETHOD *); 35*1eb62cbbSBarry Smith extern int KSPGetMethodFromOptions(KSP,KSPMETHOD *); 368ed539a5SBarry Smith extern int KSPSetRelativeTolerance(KSP,double); 378ed539a5SBarry Smith extern int KSPSetAbsoluteTolerance(KSP,double); 388ed539a5SBarry Smith extern int KSPSetDivergenceTolerance(KSP,double); 398ed539a5SBarry Smith extern int KSPSetCalculateResidual(KSP); 408ed539a5SBarry Smith extern int KSPSetDoNotCalculateResidual(KSP); 418ed539a5SBarry Smith extern int KSPSetUsePreconditionedResidual(KSP); 42aabeff55SBarry Smith extern int KSPSetInitialGuessNonZero(KSP); 438ed539a5SBarry Smith extern int KSPSetCalculateEigenvalues(KSP); 448ed539a5SBarry Smith extern int KSPSetRhs(KSP,Vec); 458ed539a5SBarry Smith extern int KSPGetRhs(KSP,Vec *); 468ed539a5SBarry Smith extern int KSPSetSolution(KSP,Vec); 478ed539a5SBarry Smith extern int KSPGetSolution(KSP,Vec *); 482eac72dbSBarry Smith 49aabeff55SBarry Smith extern int KSPSetAmult(KSP,Mat); 50aabeff55SBarry Smith extern int KSPGetAmult(KSP,Mat *); 51aabeff55SBarry Smith extern int KSPSetBinv(KSP,PC); 52aabeff55SBarry Smith extern int KSPGetBinv(KSP,PC*); 53aabeff55SBarry Smith 548ed539a5SBarry Smith extern int KSPSetMonitor(KSP,int (*)(KSP,int,double, void*), void *); 558ed539a5SBarry Smith extern int KSPGetMonitorContext(KSP,void **); 568ed539a5SBarry Smith extern int KSPSetResidualHistory(KSP, double *,int); 578ed539a5SBarry Smith extern int KSPSetConvergenceTest(KSP,int (*)(KSP,int,double, void*), void *); 588ed539a5SBarry Smith extern int KSPGetConvergenceContext(KSP,void **); 592eac72dbSBarry Smith 608ed539a5SBarry Smith extern int KSPBuildSolution(KSP, Vec,Vec *); 618ed539a5SBarry Smith extern int KSPBuildResidual(KSP, Vec, Vec,Vec *); 622eac72dbSBarry Smith 638ed539a5SBarry Smith extern int KSPRichardsonSetScale(KSP , double); 648ed539a5SBarry Smith extern int KSPChebychevSetEigenvalues(KSP , double, double); 658ed539a5SBarry Smith extern int KSPCGGetEigenvalues(KSP, int n,double*,double*); 668ed539a5SBarry Smith extern int KSPGMRESSetRestart(KSP, int); 678ed539a5SBarry Smith extern int KSPSetFromOptions(KSP); 682eac72dbSBarry Smith 698ed539a5SBarry Smith extern int KSPDefaultCGMonitor(KSP,int,double, void * ); 708ed539a5SBarry Smith extern int KSPDefaultCGConverged(KSP,int,double, void *); 718ed539a5SBarry Smith extern int KSPDefaultMonitor(KSP,int,double, void *); 728ed539a5SBarry Smith extern int KSPLineGraphMonitor(KSP,int,double, void *); 738ed539a5SBarry Smith extern int KSPDefaultConverged(KSP,int,double, void *); 742eac72dbSBarry Smith 758ed539a5SBarry Smith extern int KSPPrintHelp(KSP); 768ed539a5SBarry Smith 77*1eb62cbbSBarry Smith extern int KSPSetOptionsPrefix(KSP,char*); 78*1eb62cbbSBarry Smith 798ed539a5SBarry Smith extern int KSPView(KSP,Viewer); 80*1eb62cbbSBarry Smith 81*1eb62cbbSBarry Smith #if defined(__DRAW_PACKAGE) 82*1eb62cbbSBarry Smith extern int KSPLGMonitorCreate(char*,char*,int,int,int,int,DrawLGCtx*); 83*1eb62cbbSBarry Smith extern int KSPLGMonitor(KSP,int,double,void*); 84*1eb62cbbSBarry Smith extern int KSPLGMonitorDestroy(DrawLGCtx); 85*1eb62cbbSBarry Smith #endif 86*1eb62cbbSBarry Smith 872eac72dbSBarry Smith #endif 882eac72dbSBarry Smith 892eac72dbSBarry Smith 90