xref: /petsc/include/petscksp.h (revision c6a45a9732aaf0679b0f4eb4ddc75ce99ee9558a)
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 typedef struct _KSP*     KSP;
10 
11 /*  Possible Krylov Space Methods */
12 typedef enum { KSPRICHARDSON, KSPCHEBYCHEV, KSPCG, KSPGMRES,
13                KSPTCQMR, KSPBCGS, KSPCGS, KSPTFQMR, KSPCR, KSPLSQR,
14                KSPPREONLY } KSPMETHOD;
15 
16 extern int KSPPrintMethods(char *,char *);
17 
18 extern int KSPCreate(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 KSPRegister(KSPMETHOD,char *,int (*)(KSP));
26 
27 extern int KSPGetMethodName(KSPMETHOD,char **);
28 extern int KSPGetWorkCounts(KSP,int*,int*,int*,int*,int*);
29 extern int KSPClearWorkCounts(KSP);
30 
31 extern int KSPSetIterations(KSP,int);
32 extern int KSPSetRightPreconditioner(KSP);
33 extern int KSPGetPreconditionerSide(KSP,int *);
34 extern int KSPGetMethodFromContext(KSP,KSPMETHOD *);
35 extern int KSPGetMethodFromOptions(KSP,KSPMETHOD *);
36 extern int KSPSetRelativeTolerance(KSP,double);
37 extern int KSPSetAbsoluteTolerance(KSP,double);
38 extern int KSPSetDivergenceTolerance(KSP,double);
39 extern int KSPSetCalculateResidual(KSP);
40 extern int KSPSetDoNotCalculateResidual(KSP);
41 extern int KSPSetUsePreconditionedResidual(KSP);
42 extern int KSPSetInitialGuessNonZero(KSP);
43 extern int KSPSetCalculateEigenvalues(KSP);
44 extern int KSPSetRhs(KSP,Vec);
45 extern int KSPGetRhs(KSP,Vec *);
46 extern int KSPSetSolution(KSP,Vec);
47 extern int KSPGetSolution(KSP,Vec *);
48 
49 extern int KSPSetAmult(KSP,Mat);
50 extern int KSPGetAmult(KSP,Mat *);
51 extern int KSPSetBinv(KSP,PC);
52 extern int KSPGetBinv(KSP,PC*);
53 
54 extern int KSPSetMonitor(KSP,int (*)(KSP,int,double, void*), void *);
55 extern int KSPGetMonitorContext(KSP,void **);
56 extern int KSPSetResidualHistory(KSP, double *,int);
57 extern int KSPSetConvergenceTest(KSP,int (*)(KSP,int,double, void*), void *);
58 extern int KSPGetConvergenceContext(KSP,void **);
59 
60 extern int KSPBuildSolution(KSP, Vec,Vec *);
61 extern int KSPBuildResidual(KSP, Vec, Vec,Vec *);
62 
63 extern int KSPRichardsonSetScale(KSP , double);
64 extern int KSPChebychevSetEigenvalues(KSP , double, double);
65 extern int KSPCGGetEigenvalues(KSP, int n,double*,double*);
66 extern int KSPGMRESSetRestart(KSP, int);
67 extern int KSPSetFromOptions(KSP);
68 
69 extern int KSPDefaultCGMonitor(KSP,int,double, void * );
70 extern int KSPDefaultCGConverged(KSP,int,double, void *);
71 extern int KSPDefaultMonitor(KSP,int,double, void *);
72 extern int KSPLineGraphMonitor(KSP,int,double, void *);
73 extern int KSPDefaultConverged(KSP,int,double, void *);
74 
75 extern int KSPPrintHelp(KSP);
76 
77 extern int KSPSetOptionsPrefix(KSP,char*);
78 
79 extern int KSPView(KSP,Viewer);
80 
81 #if defined(__DRAW_PACKAGE)
82 extern int KSPLGMonitorCreate(char*,char*,int,int,int,int,DrawLGCtx*);
83 extern int KSPLGMonitor(KSP,int,double,void*);
84 extern int KSPLGMonitorDestroy(DrawLGCtx);
85 #endif
86 
87 #endif
88 
89 
90