xref: /petsc/include/petscksp.h (revision 8ed539a5e9028ff5f4219e37f66f1bef6cd978d1)
12eac72dbSBarry Smith 
22eac72dbSBarry Smith #ifndef __KSP_PACKAGE
32eac72dbSBarry Smith #define __KSP_PACKAGE
42eac72dbSBarry Smith #include "petsc.h"
52eac72dbSBarry Smith #include "vec.h"
62eac72dbSBarry Smith 
72eac72dbSBarry Smith typedef struct _KSP*     KSP;
82eac72dbSBarry Smith 
92eac72dbSBarry Smith /*  Possible Krylov Space Methods */
102eac72dbSBarry Smith typedef enum { KSPRICHARDSON, KSPCHEBYCHEV, KSPCG, KSPGMRES,
112eac72dbSBarry Smith                KSPTCQMR, KSPBCGS, KSPCGS, KSPTFQMR, KSPCR, KSPLSQR,
122eac72dbSBarry Smith                KSPPREONLY } KSPMETHOD;
132eac72dbSBarry Smith 
14*8ed539a5SBarry Smith extern int KSPPrintMethods(char *);
152eac72dbSBarry Smith 
16*8ed539a5SBarry Smith extern int KSPCreate(KSP *);
17*8ed539a5SBarry Smith extern int KSPSetMethod(KSP,KSPMETHOD);
18*8ed539a5SBarry Smith extern int KSPSetUp(KSP);
19*8ed539a5SBarry Smith extern int KSPSolve(KSP,int *);
20*8ed539a5SBarry Smith extern int KSPDestroy(KSP);
212eac72dbSBarry Smith 
22*8ed539a5SBarry Smith extern int KSPRegisterAll();
23*8ed539a5SBarry Smith extern int KSPRegister(KSPMETHOD,char *,int (*)(KSP));
242eac72dbSBarry Smith 
25*8ed539a5SBarry Smith extern int KSPGetMethodName(KSPMETHOD,char **);
26*8ed539a5SBarry Smith extern int KSPGetWorkCounts(KSP,int*,int*,int*,int*,int*);
27*8ed539a5SBarry Smith extern int KSPClearWorkCounts(KSP);
282eac72dbSBarry Smith 
29*8ed539a5SBarry Smith extern int KSPSetIterations(KSP,int);
30*8ed539a5SBarry Smith extern int KSPSetRightPreconditioner(KSP);
31*8ed539a5SBarry Smith extern int KSPGetPreconditionerSide(KSP,int *);
32*8ed539a5SBarry Smith extern int KSPGetMethodFromContext(KSP,KSPMETHOD *);
33*8ed539a5SBarry Smith extern int KSPGetMethodFromOptions(int,char*,KSPMETHOD *);
34*8ed539a5SBarry Smith extern int KSPSetRelativeTolerance(KSP,double);
35*8ed539a5SBarry Smith extern int KSPSetAbsoluteTolerance(KSP,double);
36*8ed539a5SBarry Smith extern int KSPSetDivergenceTolerance(KSP,double);
37*8ed539a5SBarry Smith extern int KSPSetCalculateResidual(KSP);
38*8ed539a5SBarry Smith extern int KSPSetDoNotCalculateResidual(KSP);
39*8ed539a5SBarry Smith extern int KSPSetUsePreconditionedResidual(KSP);
40*8ed539a5SBarry Smith extern int KSPSetInitialGuessZero(KSP);
41*8ed539a5SBarry Smith extern int KSPSetCalculateEigenvalues(KSP);
42*8ed539a5SBarry Smith extern int KSPSetRhs(KSP,Vec);
43*8ed539a5SBarry Smith extern int KSPGetRhs(KSP,Vec *);
44*8ed539a5SBarry Smith extern int KSPSetSolution(KSP,Vec);
45*8ed539a5SBarry Smith extern int KSPGetSolution(KSP,Vec *);
46*8ed539a5SBarry Smith extern int KSPSetAmult(KSP,int (*)(void *,Vec,Vec),void *);
472eac72dbSBarry Smith 
48*8ed539a5SBarry Smith extern int KSPGetAmultContext(KSP,void **);
49*8ed539a5SBarry Smith extern int KSPSetAmultTranspose(KSP,int (*)(void *,Vec,Vec));
50*8ed539a5SBarry Smith extern int KSPSetBinv(KSP,int(*)(void *,Vec,Vec),void *);
51*8ed539a5SBarry Smith extern int KSPGetBinvContext(KSP,void **);
52*8ed539a5SBarry Smith extern int KSPSetBinvTranspose(KSP,int (*)(void *,Vec,Vec));
53*8ed539a5SBarry Smith extern int KSPSetMatop(KSP,int (*)(void *,void *,Vec,Vec));
54*8ed539a5SBarry Smith extern int KSPSetMatopTranspose(KSP,int (*)(void *,void *,Vec,Vec));
55*8ed539a5SBarry Smith extern int KSPSetMonitor(KSP,int (*)(KSP,int,double, void*), void *);
56*8ed539a5SBarry Smith extern int KSPGetMonitorContext(KSP,void **);
57*8ed539a5SBarry Smith extern int KSPSetResidualHistory(KSP, double *,int);
58*8ed539a5SBarry Smith extern int KSPSetConvergenceTest(KSP,int (*)(KSP,int,double, void*), void *);
59*8ed539a5SBarry Smith extern int KSPGetConvergenceContext(KSP,void **);
602eac72dbSBarry Smith 
61*8ed539a5SBarry Smith extern int KSPBuildSolution(KSP, Vec,Vec *);
62*8ed539a5SBarry Smith extern int KSPBuildResidual(KSP, Vec, Vec,Vec *);
632eac72dbSBarry Smith 
64*8ed539a5SBarry Smith extern int KSPRichardsonSetScale(KSP , double);
65*8ed539a5SBarry Smith extern int KSPChebychevSetEigenvalues(KSP , double, double);
66*8ed539a5SBarry Smith extern int KSPCGGetEigenvalues(KSP, int n,double*,double*);
67*8ed539a5SBarry Smith extern int KSPGMRESSetRestart(KSP, int);
68*8ed539a5SBarry Smith extern int KSPSetFromOptions(KSP);
692eac72dbSBarry Smith 
70*8ed539a5SBarry Smith extern int KSPDefaultCGMonitor(KSP,int,double, void * );
71*8ed539a5SBarry Smith extern int KSPDefaultCGConverged(KSP,int,double, void *);
72*8ed539a5SBarry Smith extern int KSPDefaultMonitor(KSP,int,double, void *);
73*8ed539a5SBarry Smith extern int KSPLineGraphMonitor(KSP,int,double, void *);
74*8ed539a5SBarry Smith extern int KSPDefaultConverged(KSP,int,double, void *);
752eac72dbSBarry Smith 
76*8ed539a5SBarry Smith extern int KSPPrintHelp(KSP);
77*8ed539a5SBarry Smith 
78*8ed539a5SBarry Smith extern int KSPRichardsonSetFast(KSP,int (*)(void*,Vec,Vec,Vec,int),void*);
79*8ed539a5SBarry Smith 
80*8ed539a5SBarry Smith extern int KSPView(KSP,Viewer);
812eac72dbSBarry Smith #endif
822eac72dbSBarry Smith 
832eac72dbSBarry Smith 
84