xref: /petsc/include/petscksp.h (revision 1eb62cbb64d64b61ce4c1a3ec8cb7777b3ff11c2)
12eac72dbSBarry Smith 
22eac72dbSBarry Smith #ifndef __KSP_PACKAGE
32eac72dbSBarry Smith #define __KSP_PACKAGE
42eac72dbSBarry Smith #include "petsc.h"
52eac72dbSBarry Smith #include "vec.h"
6aabeff55SBarry Smith #include "mat.h"
7aabeff55SBarry Smith #include "pc.h"
82eac72dbSBarry Smith 
92eac72dbSBarry Smith typedef struct _KSP*     KSP;
102eac72dbSBarry Smith 
112eac72dbSBarry Smith /*  Possible Krylov Space Methods */
122eac72dbSBarry Smith typedef enum { KSPRICHARDSON, KSPCHEBYCHEV, KSPCG, KSPGMRES,
132eac72dbSBarry Smith                KSPTCQMR, KSPBCGS, KSPCGS, KSPTFQMR, KSPCR, KSPLSQR,
142eac72dbSBarry Smith                KSPPREONLY } KSPMETHOD;
152eac72dbSBarry Smith 
16*1eb62cbbSBarry Smith extern int KSPPrintMethods(char *,char *);
172eac72dbSBarry Smith 
188ed539a5SBarry Smith extern int KSPCreate(KSP *);
198ed539a5SBarry Smith extern int KSPSetMethod(KSP,KSPMETHOD);
208ed539a5SBarry Smith extern int KSPSetUp(KSP);
218ed539a5SBarry Smith extern int KSPSolve(KSP,int *);
228ed539a5SBarry Smith extern int KSPDestroy(KSP);
232eac72dbSBarry Smith 
248ed539a5SBarry Smith extern int KSPRegisterAll();
258ed539a5SBarry Smith extern int KSPRegister(KSPMETHOD,char *,int (*)(KSP));
262eac72dbSBarry Smith 
278ed539a5SBarry Smith extern int KSPGetMethodName(KSPMETHOD,char **);
288ed539a5SBarry Smith extern int KSPGetWorkCounts(KSP,int*,int*,int*,int*,int*);
298ed539a5SBarry Smith extern int KSPClearWorkCounts(KSP);
302eac72dbSBarry Smith 
318ed539a5SBarry Smith extern int KSPSetIterations(KSP,int);
328ed539a5SBarry Smith extern int KSPSetRightPreconditioner(KSP);
338ed539a5SBarry Smith extern int KSPGetPreconditionerSide(KSP,int *);
348ed539a5SBarry Smith extern int KSPGetMethodFromContext(KSP,KSPMETHOD *);
35*1eb62cbbSBarry Smith extern int KSPGetMethodFromOptions(KSP,KSPMETHOD *);
368ed539a5SBarry Smith extern int KSPSetRelativeTolerance(KSP,double);
378ed539a5SBarry Smith extern int KSPSetAbsoluteTolerance(KSP,double);
388ed539a5SBarry Smith extern int KSPSetDivergenceTolerance(KSP,double);
398ed539a5SBarry Smith extern int KSPSetCalculateResidual(KSP);
408ed539a5SBarry Smith extern int KSPSetDoNotCalculateResidual(KSP);
418ed539a5SBarry Smith extern int KSPSetUsePreconditionedResidual(KSP);
42aabeff55SBarry Smith extern int KSPSetInitialGuessNonZero(KSP);
438ed539a5SBarry Smith extern int KSPSetCalculateEigenvalues(KSP);
448ed539a5SBarry Smith extern int KSPSetRhs(KSP,Vec);
458ed539a5SBarry Smith extern int KSPGetRhs(KSP,Vec *);
468ed539a5SBarry Smith extern int KSPSetSolution(KSP,Vec);
478ed539a5SBarry Smith extern int KSPGetSolution(KSP,Vec *);
482eac72dbSBarry Smith 
49aabeff55SBarry Smith extern int KSPSetAmult(KSP,Mat);
50aabeff55SBarry Smith extern int KSPGetAmult(KSP,Mat *);
51aabeff55SBarry Smith extern int KSPSetBinv(KSP,PC);
52aabeff55SBarry Smith extern int KSPGetBinv(KSP,PC*);
53aabeff55SBarry Smith 
548ed539a5SBarry Smith extern int KSPSetMonitor(KSP,int (*)(KSP,int,double, void*), void *);
558ed539a5SBarry Smith extern int KSPGetMonitorContext(KSP,void **);
568ed539a5SBarry Smith extern int KSPSetResidualHistory(KSP, double *,int);
578ed539a5SBarry Smith extern int KSPSetConvergenceTest(KSP,int (*)(KSP,int,double, void*), void *);
588ed539a5SBarry Smith extern int KSPGetConvergenceContext(KSP,void **);
592eac72dbSBarry Smith 
608ed539a5SBarry Smith extern int KSPBuildSolution(KSP, Vec,Vec *);
618ed539a5SBarry Smith extern int KSPBuildResidual(KSP, Vec, Vec,Vec *);
622eac72dbSBarry Smith 
638ed539a5SBarry Smith extern int KSPRichardsonSetScale(KSP , double);
648ed539a5SBarry Smith extern int KSPChebychevSetEigenvalues(KSP , double, double);
658ed539a5SBarry Smith extern int KSPCGGetEigenvalues(KSP, int n,double*,double*);
668ed539a5SBarry Smith extern int KSPGMRESSetRestart(KSP, int);
678ed539a5SBarry Smith extern int KSPSetFromOptions(KSP);
682eac72dbSBarry Smith 
698ed539a5SBarry Smith extern int KSPDefaultCGMonitor(KSP,int,double, void * );
708ed539a5SBarry Smith extern int KSPDefaultCGConverged(KSP,int,double, void *);
718ed539a5SBarry Smith extern int KSPDefaultMonitor(KSP,int,double, void *);
728ed539a5SBarry Smith extern int KSPLineGraphMonitor(KSP,int,double, void *);
738ed539a5SBarry Smith extern int KSPDefaultConverged(KSP,int,double, void *);
742eac72dbSBarry Smith 
758ed539a5SBarry Smith extern int KSPPrintHelp(KSP);
768ed539a5SBarry Smith 
77*1eb62cbbSBarry Smith extern int KSPSetOptionsPrefix(KSP,char*);
78*1eb62cbbSBarry Smith 
798ed539a5SBarry Smith extern int KSPView(KSP,Viewer);
80*1eb62cbbSBarry Smith 
81*1eb62cbbSBarry Smith #if defined(__DRAW_PACKAGE)
82*1eb62cbbSBarry Smith extern int KSPLGMonitorCreate(char*,char*,int,int,int,int,DrawLGCtx*);
83*1eb62cbbSBarry Smith extern int KSPLGMonitor(KSP,int,double,void*);
84*1eb62cbbSBarry Smith extern int KSPLGMonitorDestroy(DrawLGCtx);
85*1eb62cbbSBarry Smith #endif
86*1eb62cbbSBarry Smith 
872eac72dbSBarry Smith #endif
882eac72dbSBarry Smith 
892eac72dbSBarry Smith 
90