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