xref: /petsc/include/petscksp.h (revision d7e8b82609919f5be22f34483b29990a2bb120b8)
1*d7e8b826SBarry Smith /* $Id: ksp.h,v 1.27 1995/11/01 19:12:32 bsmith Exp bsmith $ */
22eac72dbSBarry Smith 
32eac72dbSBarry Smith #ifndef __KSP_PACKAGE
42eac72dbSBarry Smith #define __KSP_PACKAGE
52eac72dbSBarry Smith #include "petsc.h"
62eac72dbSBarry Smith #include "vec.h"
7aabeff55SBarry Smith #include "mat.h"
8aabeff55SBarry Smith #include "pc.h"
92eac72dbSBarry Smith 
109e25ed09SBarry Smith #define KSP_COOKIE  PETSC_COOKIE+8
11f0479e8cSBarry Smith 
122eac72dbSBarry Smith typedef struct _KSP*     KSP;
132eac72dbSBarry Smith 
142eac72dbSBarry Smith /*  Possible Krylov Space Methods */
152eac72dbSBarry Smith typedef enum { KSPRICHARDSON, KSPCHEBYCHEV, KSPCG, KSPGMRES,
162eac72dbSBarry Smith                KSPTCQMR, KSPBCGS, KSPCGS, KSPTFQMR, KSPCR, KSPLSQR,
17065ac47aSLois Curfman McInnes                KSPPREONLY, KSPQCG } KSPMethod;
182eac72dbSBarry Smith 
196b5873e3SBarry Smith extern int KSPCreate(MPI_Comm,KSP *);
20f8936d11SLois Curfman McInnes extern int KSPSetMethod(KSP,KSPMethod);
218ed539a5SBarry Smith extern int KSPSetUp(KSP);
228ed539a5SBarry Smith extern int KSPSolve(KSP,int *);
238ed539a5SBarry Smith extern int KSPDestroy(KSP);
242eac72dbSBarry Smith 
258ed539a5SBarry Smith extern int KSPRegisterAll();
26d6dfbf8fSBarry Smith extern int KSPRegisterDestroy();
27f8936d11SLois Curfman McInnes extern int KSPRegister(KSPMethod,char *,int (*)(KSP));
282eac72dbSBarry Smith 
29f8936d11SLois Curfman McInnes extern int KSPGetMethodName(KSPMethod,char **);
308ed539a5SBarry Smith extern int KSPSetRightPreconditioner(KSP);
318ed539a5SBarry Smith extern int KSPGetPreconditionerSide(KSP,int *);
32f8936d11SLois Curfman McInnes extern int KSPGetMethodFromContext(KSP,KSPMethod *);
33ae622e99SLois Curfman McInnes extern int KSPGetTolerances(KSP,double*,double*,double*,int*);
34f9a5357eSLois Curfman McInnes extern int KSPSetTolerances(KSP,double,double,double,int);
35f8936d11SLois Curfman McInnes extern int KSPSetCalculateResidual(KSP,PetscTruth);
368ed539a5SBarry Smith extern int KSPSetUsePreconditionedResidual(KSP);
37c39b5c85SLois Curfman McInnes extern int KSPSetInitialGuessNonzero(KSP);
388ed539a5SBarry Smith extern int KSPSetCalculateEigenvalues(KSP);
398ed539a5SBarry Smith extern int KSPSetRhs(KSP,Vec);
408ed539a5SBarry Smith extern int KSPGetRhs(KSP,Vec *);
418ed539a5SBarry Smith extern int KSPSetSolution(KSP,Vec);
428ed539a5SBarry Smith extern int KSPGetSolution(KSP,Vec *);
432eac72dbSBarry Smith 
44aabeff55SBarry Smith extern int KSPSetBinv(KSP,PC);
45aabeff55SBarry Smith extern int KSPGetBinv(KSP,PC*);
46aabeff55SBarry Smith 
478ed539a5SBarry Smith extern int KSPSetMonitor(KSP,int (*)(KSP,int,double, void*), void *);
488ed539a5SBarry Smith extern int KSPGetMonitorContext(KSP,void **);
498ed539a5SBarry Smith extern int KSPSetResidualHistory(KSP, double *,int);
508ed539a5SBarry Smith extern int KSPSetConvergenceTest(KSP,int (*)(KSP,int,double, void*), void *);
518ed539a5SBarry Smith extern int KSPGetConvergenceContext(KSP,void **);
522eac72dbSBarry Smith 
538ed539a5SBarry Smith extern int KSPBuildSolution(KSP, Vec,Vec *);
548ed539a5SBarry Smith extern int KSPBuildResidual(KSP, Vec, Vec,Vec *);
552eac72dbSBarry Smith 
568ed539a5SBarry Smith extern int KSPRichardsonSetScale(KSP , double);
578ed539a5SBarry Smith extern int KSPChebychevSetEigenvalues(KSP , double, double);
5883f0b094SBarry Smith extern int KSPCGGetEigenvalues(KSP, int n,Scalar*,Scalar*);
598ed539a5SBarry Smith extern int KSPGMRESSetRestart(KSP, int);
6008480c60SBarry Smith 
611b918aecSLois Curfman McInnes extern int KSPGMRESSetOrthogRoutine(KSP,int (*)(KSP,int));
62cddf8d76SBarry Smith extern int KSPGMRESUnmodifiedOrthog(KSP,int);
63cddf8d76SBarry Smith extern int KSPGMRESBasicOrthog(KSP,int);
64cddf8d76SBarry Smith extern int KSPGMRESIROrthog(KSP,int);
6508480c60SBarry Smith 
668ed539a5SBarry Smith extern int KSPSetFromOptions(KSP);
672eac72dbSBarry Smith 
68c01c455dSBarry Smith extern int KSPCGDefaultMonitor(KSP,int,double, void * );
69c01c455dSBarry Smith extern int KSPCGDefaultConverged(KSP,int,double, void *);
708ed539a5SBarry Smith extern int KSPDefaultMonitor(KSP,int,double, void *);
718c48e012SBarry Smith extern int KSPDefaultSMonitor(KSP,int,double, void *);
728ed539a5SBarry Smith extern int KSPDefaultConverged(KSP,int,double, void *);
732eac72dbSBarry Smith 
74c01c455dSBarry Smith extern int KSPResidual(KSP,Vec,Vec,Vec,Vec,Vec,Vec);
75c01c455dSBarry Smith extern int KSPUnwindPre(KSP,Vec,Vec);
76c01c455dSBarry Smith extern int KSPDefaultBuildSolution(KSP,Vec,Vec*);
77c01c455dSBarry Smith extern int KSPDefaultBuildResidual(KSP,Vec,Vec,Vec *);
78c01c455dSBarry Smith 
798ed539a5SBarry Smith extern int KSPPrintHelp(KSP);
808ed539a5SBarry Smith 
811eb62cbbSBarry Smith extern int KSPSetOptionsPrefix(KSP,char*);
821eb62cbbSBarry Smith 
838ed539a5SBarry Smith extern int KSPView(KSP,Viewer);
841eb62cbbSBarry Smith 
851eb62cbbSBarry Smith #if defined(__DRAW_PACKAGE)
86*d7e8b826SBarry Smith extern int KSPLGMonitorCreate(char*,char*,int,int,int,int,DrawLG*);
871eb62cbbSBarry Smith extern int KSPLGMonitor(KSP,int,double,void*);
88*d7e8b826SBarry Smith extern int KSPLGMonitorDestroy(DrawLG);
891eb62cbbSBarry Smith #endif
901eb62cbbSBarry Smith 
912eac72dbSBarry Smith #endif
922eac72dbSBarry Smith 
932eac72dbSBarry Smith 
94