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 99e25ed09SBarry Smith #define KSP_COOKIE PETSC_COOKIE+8 10f0479e8cSBarry Smith 112eac72dbSBarry Smith typedef struct _KSP* KSP; 122eac72dbSBarry Smith 132eac72dbSBarry Smith /* Possible Krylov Space Methods */ 142eac72dbSBarry Smith typedef enum { KSPRICHARDSON, KSPCHEBYCHEV, KSPCG, KSPGMRES, 152eac72dbSBarry Smith KSPTCQMR, KSPBCGS, KSPCGS, KSPTFQMR, KSPCR, KSPLSQR, 16*f8936d11SLois Curfman McInnes KSPPREONLY } KSPMethod; 172eac72dbSBarry Smith 181eb62cbbSBarry Smith extern int KSPPrintMethods(char *,char *); 192eac72dbSBarry Smith 206b5873e3SBarry Smith extern int KSPCreate(MPI_Comm,KSP *); 21*f8936d11SLois Curfman McInnes extern int KSPSetMethod(KSP,KSPMethod); 228ed539a5SBarry Smith extern int KSPSetUp(KSP); 238ed539a5SBarry Smith extern int KSPSolve(KSP,int *); 248ed539a5SBarry Smith extern int KSPDestroy(KSP); 252eac72dbSBarry Smith 268ed539a5SBarry Smith extern int KSPRegisterAll(); 27d6dfbf8fSBarry Smith extern int KSPRegisterDestroy(); 28*f8936d11SLois Curfman McInnes extern int KSPRegister(KSPMethod,char *,int (*)(KSP)); 292eac72dbSBarry Smith 30*f8936d11SLois Curfman McInnes extern int KSPGetMethodName(KSPMethod,char **); 310de89847SLois Curfman McInnes extern int KSPSetMaxIterations(KSP,int); 328ed539a5SBarry Smith extern int KSPSetRightPreconditioner(KSP); 338ed539a5SBarry Smith extern int KSPGetPreconditionerSide(KSP,int *); 34*f8936d11SLois Curfman McInnes extern int KSPGetMethodFromContext(KSP,KSPMethod *); 358ed539a5SBarry Smith extern int KSPSetRelativeTolerance(KSP,double); 368ed539a5SBarry Smith extern int KSPSetAbsoluteTolerance(KSP,double); 378ed539a5SBarry Smith extern int KSPSetDivergenceTolerance(KSP,double); 38*f8936d11SLois Curfman McInnes extern int KSPSetCalculateResidual(KSP,PetscTruth); 398ed539a5SBarry Smith extern int KSPSetUsePreconditionedResidual(KSP); 40c39b5c85SLois Curfman McInnes extern int KSPSetInitialGuessNonzero(KSP); 418ed539a5SBarry Smith extern int KSPSetCalculateEigenvalues(KSP); 428ed539a5SBarry Smith extern int KSPSetRhs(KSP,Vec); 438ed539a5SBarry Smith extern int KSPGetRhs(KSP,Vec *); 448ed539a5SBarry Smith extern int KSPSetSolution(KSP,Vec); 458ed539a5SBarry Smith extern int KSPGetSolution(KSP,Vec *); 462eac72dbSBarry Smith 47aabeff55SBarry Smith extern int KSPSetBinv(KSP,PC); 48aabeff55SBarry Smith extern int KSPGetBinv(KSP,PC*); 49aabeff55SBarry Smith 508ed539a5SBarry Smith extern int KSPSetMonitor(KSP,int (*)(KSP,int,double, void*), void *); 518ed539a5SBarry Smith extern int KSPGetMonitorContext(KSP,void **); 528ed539a5SBarry Smith extern int KSPSetResidualHistory(KSP, double *,int); 538ed539a5SBarry Smith extern int KSPSetConvergenceTest(KSP,int (*)(KSP,int,double, void*), void *); 548ed539a5SBarry Smith extern int KSPGetConvergenceContext(KSP,void **); 552eac72dbSBarry Smith 568ed539a5SBarry Smith extern int KSPBuildSolution(KSP, Vec,Vec *); 578ed539a5SBarry Smith extern int KSPBuildResidual(KSP, Vec, Vec,Vec *); 582eac72dbSBarry Smith 598ed539a5SBarry Smith extern int KSPRichardsonSetScale(KSP , double); 608ed539a5SBarry Smith extern int KSPChebychevSetEigenvalues(KSP , double, double); 618ed539a5SBarry Smith extern int KSPCGGetEigenvalues(KSP, int n,double*,double*); 628ed539a5SBarry Smith extern int KSPGMRESSetRestart(KSP, int); 63441f95eaSBarry Smith extern int KSPGMRESSetUseUnmodifiedGrammSchmidt(KSP); 648ed539a5SBarry Smith extern int KSPSetFromOptions(KSP); 652eac72dbSBarry Smith 668ed539a5SBarry Smith extern int KSPDefaultCGMonitor(KSP,int,double, void * ); 678ed539a5SBarry Smith extern int KSPDefaultCGConverged(KSP,int,double, void *); 688ed539a5SBarry Smith extern int KSPDefaultMonitor(KSP,int,double, void *); 698ed539a5SBarry Smith extern int KSPDefaultConverged(KSP,int,double, void *); 702eac72dbSBarry Smith 718ed539a5SBarry Smith extern int KSPPrintHelp(KSP); 728ed539a5SBarry Smith 731eb62cbbSBarry Smith extern int KSPSetOptionsPrefix(KSP,char*); 741eb62cbbSBarry Smith 758ed539a5SBarry Smith extern int KSPView(KSP,Viewer); 761eb62cbbSBarry Smith 771eb62cbbSBarry Smith #if defined(__DRAW_PACKAGE) 781eb62cbbSBarry Smith extern int KSPLGMonitorCreate(char*,char*,int,int,int,int,DrawLGCtx*); 791eb62cbbSBarry Smith extern int KSPLGMonitor(KSP,int,double,void*); 801eb62cbbSBarry Smith extern int KSPLGMonitorDestroy(DrawLGCtx); 811eb62cbbSBarry Smith #endif 821eb62cbbSBarry Smith 832eac72dbSBarry Smith #endif 842eac72dbSBarry Smith 852eac72dbSBarry Smith 86