xref: /petsc/include/petscksp.h (revision df60cc224878ed2ef3f52954bb2c505c4f71966d)
1 
2 #ifndef __KSP_PACKAGE
3 #define __KSP_PACKAGE
4 #include "petsc.h"
5 #include "vec.h"
6 #include "mat.h"
7 #include "pc.h"
8 
9 #define KSP_COOKIE  PETSC_COOKIE+8
10 
11 typedef struct _KSP*     KSP;
12 
13 /*  Possible Krylov Space Methods */
14 typedef enum { KSPRICHARDSON, KSPCHEBYCHEV, KSPCG, KSPGMRES,
15                KSPTCQMR, KSPBCGS, KSPCGS, KSPTFQMR, KSPCR, KSPLSQR,
16                KSPPREONLY } KSPMethod;
17 
18 extern int KSPCreate(MPI_Comm,KSP *);
19 extern int KSPSetMethod(KSP,KSPMethod);
20 extern int KSPSetUp(KSP);
21 extern int KSPSolve(KSP,int *);
22 extern int KSPDestroy(KSP);
23 
24 extern int KSPRegisterAll();
25 extern int KSPRegisterDestroy();
26 extern int KSPRegister(KSPMethod,char *,int (*)(KSP));
27 
28 extern int KSPGetMethodName(KSPMethod,char **);
29 extern int KSPSetMaxIterations(KSP,int);
30 extern int KSPSetRightPreconditioner(KSP);
31 extern int KSPGetPreconditionerSide(KSP,int *);
32 extern int KSPGetMethodFromContext(KSP,KSPMethod *);
33 extern int KSPSetRelativeTolerance(KSP,double);
34 extern int KSPSetAbsoluteTolerance(KSP,double);
35 extern int KSPSetDivergenceTolerance(KSP,double);
36 extern int KSPGetTolerances(KSP,double*,double*,double*);
37 extern int KSPSetCalculateResidual(KSP,PetscTruth);
38 extern int KSPSetUsePreconditionedResidual(KSP);
39 extern int KSPSetInitialGuessNonzero(KSP);
40 extern int KSPSetCalculateEigenvalues(KSP);
41 extern int KSPSetRhs(KSP,Vec);
42 extern int KSPGetRhs(KSP,Vec *);
43 extern int KSPSetSolution(KSP,Vec);
44 extern int KSPGetSolution(KSP,Vec *);
45 
46 extern int KSPSetBinv(KSP,PC);
47 extern int KSPGetBinv(KSP,PC*);
48 
49 extern int KSPSetMonitor(KSP,int (*)(KSP,int,double, void*), void *);
50 extern int KSPGetMonitorContext(KSP,void **);
51 extern int KSPSetResidualHistory(KSP, double *,int);
52 extern int KSPSetConvergenceTest(KSP,int (*)(KSP,int,double, void*), void *);
53 extern int KSPGetConvergenceContext(KSP,void **);
54 
55 extern int KSPBuildSolution(KSP, Vec,Vec *);
56 extern int KSPBuildResidual(KSP, Vec, Vec,Vec *);
57 
58 extern int KSPRichardsonSetScale(KSP , double);
59 extern int KSPChebychevSetEigenvalues(KSP , double, double);
60 extern int KSPCGGetEigenvalues(KSP, int n,double*,double*);
61 extern int KSPGMRESSetRestart(KSP, int);
62 extern int KSPGMRESSetUseUnmodifiedGrammSchmidt(KSP);
63 extern int KSPSetFromOptions(KSP);
64 
65 extern int KSPDefaultCGMonitor(KSP,int,double, void * );
66 extern int KSPDefaultCGConverged(KSP,int,double, void *);
67 extern int KSPDefaultMonitor(KSP,int,double, void *);
68 extern int KSPDefaultConverged(KSP,int,double, void *);
69 
70 extern int KSPPrintHelp(KSP);
71 
72 extern int KSPSetOptionsPrefix(KSP,char*);
73 
74 extern int KSPView(KSP,Viewer);
75 
76 #if defined(__DRAW_PACKAGE)
77 extern int KSPLGMonitorCreate(char*,char*,int,int,int,int,DrawLGCtx*);
78 extern int KSPLGMonitor(KSP,int,double,void*);
79 extern int KSPLGMonitorDestroy(DrawLGCtx);
80 #endif
81 
82 #endif
83 
84 
85