xref: /petsc/include/petscksp.h (revision f8936d11c5b9f5cc97f94e855294ebad430b0fdf)
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