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