1 /* $Id: petscpf.h,v 1.7 2000/08/01 20:58:40 bsmith Exp bsmith $ */ 2 3 /* 4 mathematical function module. 5 */ 6 #if !defined(__PETSCPF_H) 7 #define __PETSCPF_H 8 #include "petscmat.h" 9 10 /* 11 PFList contains the list of preconditioners currently registered 12 These are added with the PFRegisterDynamic() macro 13 */ 14 extern FList PFList; 15 typedef char *PFType; 16 17 /* 18 Standard PETSc functions 19 */ 20 #define PFCONSTANT "constant" 21 #define PFMAT "mat" 22 #define PFSTRING "string" 23 #define PFQUICK "quick" 24 #define PFIDENTITY "identity" 25 #define PFMATLAB "matlab" 26 27 typedef struct _p_PF* PF; 28 #define PF_COOKIE PETSC_COOKIE+9 29 30 31 EXTERN int PFCreate(MPI_Comm,int,int,PF*); 32 EXTERN int PFSetType(PF,PFType,void*); 33 EXTERN int PFSet(PF,int(*)(void*,int,Scalar*,Scalar*),int(*)(void*,Vec,Vec),int(*)(void*,Viewer),int(*)(void*),void*); 34 EXTERN int PFApply(PF,int,Scalar*,Scalar*); 35 EXTERN int PFApplyVec(PF,Vec,Vec); 36 37 EXTERN int PFRegisterDestroy(void); 38 EXTERN int PFRegisterAll(char*); 39 extern PetscTruth PFRegisterAllCalled; 40 41 EXTERN int PFRegister(char*,char*,char*,int(*)(PF,void*)); 42 #if defined(PETSC_USE_DYNAMIC_LIBRARIES) 43 #define PFRegisterDynamic(a,b,c,d) PFRegister(a,b,c,0) 44 #else 45 #define PFRegisterDynamic(a,b,c,d) PFRegister(a,b,c,d) 46 #endif 47 48 EXTERN int PFDestroy(PF); 49 EXTERN int PFSetFromOptions(PF); 50 EXTERN int PFSetTypeFromOptions(PF); 51 EXTERN int PFGetType(PF,PFType*); 52 53 EXTERN int PFView(PF,Viewer); 54 55 #define PFSetOptionsPrefix(a,s) PetscObjectSetOptionsPrefix((PetscObject)(a),s) 56 #endif 57 58 59 60 61