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