xref: /petsc/include/petscksp.h (revision 8c819ef214cd8c0b6bd3ceeeb0404fcd3864b7e9)
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 
15 extern int KSPCreate          ANSI_ARGS((KSP *));
16 extern int KSPSetMethod       ANSI_ARGS((KSP,KSPMETHOD));
17 extern int KSPSetUp           ANSI_ARGS((KSP));
18 extern int KSPSolve           ANSI_ARGS((KSP,int *));
19 extern int KSPDestroy         ANSI_ARGS((KSP));
20 
21 extern int KSPRegisterAll     ANSI_ARGS(());
22 extern int KSPRegister        ANSI_ARGS((KSPMETHOD,char *,void (*)()));
23 
24 extern int KSPGetMethodName   ANSI_ARGS((KSPMETHOD,char **));
25 extern int KSPGetWorkCounts   ANSI_ARGS((KSP,int*,int*,int*,int*,int*));
26 extern int KSPClearWorkCounts ANSI_ARGS((KSP));
27 
28 extern int KSPSetIterations   ANSI_ARGS((KSP,int));
29 extern int KSPSetRightPreconditioner ANSI_ARGS((KSP));
30 extern int KSPGetPreconditionerSide ANSI_ARGS((KSP,int *));
31 extern int KSPGetMethodFromContext  ANSI_ARGS((KSP,KSPMETHOD *));
32 extern int KSPGetMethodFromCommandLine
33                     ANSI_ARGS((int *,char **,int,char *,KSPMETHOD *));
34 extern int KSPSetRelativeTolerance  ANSI_ARGS((KSP,double));
35 extern int KSPSetAbsoluteTolerance ANSI_ARGS((KSP,double));
36 extern int KSPSetDivergenceTolerance  ANSI_ARGS((KSP,double));
37 extern int KSPSetCalculateResidual ANSI_ARGS((KSP));
38 extern int KSPSetDoNotCalculateResidual ANSI_ARGS((KSP));
39 extern int KSPSetUsePreconditionedResidual ANSI_ARGS((KSP));
40 extern int KSPSetInitialGuessZero ANSI_ARGS((KSP));
41 extern int KSPSetCalculateEigenvalues ANSI_ARGS((KSP));
42 extern int KSPSetRhs ANSI_ARGS((KSP,VeVector));
43 extern int KSPGetRhs ANSI_ARGS((KSP,Vec *));
44 extern int KSPSetSolution ANSI_ARGS((KSP,Vec));
45 extern int KSPGetSolution ANSI_ARGS((KSP,Vec *));
46 extern int KSPSetAmult  ANSI_ARGS((KSP,void (*)(void *,Vec,Vec),void *));
47 
48 extern int KSPGetAmultContext ANSI_ARGS((KSP,void **));
49 extern int KSPSetAmultTranspose ANSI_ARGS((KSP,void (*)(void *,Vec,Vec)));
50 extern int KSPSetBinv     ANSI_ARGS((KSP,void(*)(void *,Vec,Vec),void *));
51 extern int KSPGetBinvContext ANSI_ARGS((KSP,void **));
52 extern int KSPSetBinvTranspose
53                     ANSI_ARGS((KSP,void (*)(void *,Vec,Vec)));
54 extern int KSPSetMatop
55                     ANSI_ARGS((KSP,void (*)(void *,Vec,Vec)));
56 extern int KSPSetMatopTranspose  ANSI_ARGS((KSP,void (*)(void *,Vec,Vec)));
57 extern int KSPSetMonitor
58                ANSI_ARGS((KSP,void (*)(KSP,int,double, void*), void *));
59 extern int KSPGetMonitorContext  ANSI_ARGS((KSP,void **));
60 extern int KSPSetResidualHistory  ANSI_ARGS((KSP, double *,int));
61 extern int KSPSetConvergenceTest
62                ANSI_ARGS((KSP,int (*)(KSP,int,double, void*), void *));
63 extern int KSPGetConvergenceContext  ANSI_ARGS((KSP,void **));
64 
65 extern int KSPBuildSolution  ANSI_ARGS((KSP, Vec,Vec *));
66 extern int KSPBuildResidual  ANSI_ARGS((KSP, Vec, Vec,Vec *));
67 
68 extern int KSPRichardsonSetScale  ANSI_ARGS((KSP , double));
69 extern int KSPChebychevSetEigenvalues  ANSI_ARGS((KSP , double, double));
70 extern int KSPGMRESSetRestart  ANSI_ARGS((KSP, int));
71 
72 extern int KSPDefaultCGMonitor  ANSI_ARGS((KSP,int,double, void * ));
73 extern int KSPDefaultCGConverged  ANSI_ARGS((KSP,int,double, void *));
74 extern int KSPDefaultMonitor    ANSI_ARGS((KSP,int,double, void *));
75 extern int KSPLineGraphMonitor  ANSI_ARGS((KSP,int,double, void *));
76 extern int KSPDefaultConverged  ANSI_ARGS((KSP,int,double, void *));
77 
78 #endif
79 
80 
81