1 /* 2 mathematical function module. 3 */ 4 #if !defined(__PETSCPF_H) 5 #define __PETSCPF_H 6 #include "petscvec.h" 7 PETSC_EXTERN_CXX_BEGIN 8 9 /* 10 PPetscFList contains the list of preconditioners currently registered 11 These are added with the PFRegisterDynamic() macro 12 */ 13 extern PetscFList PPetscFList; 14 15 /*E 16 PFType - Type of PETSc mathematical function, a string name 17 18 Level: beginner 19 20 .seealso: PFSetType(), PF 21 E*/ 22 #define PFType char* 23 #define PFCONSTANT "constant" 24 #define PFMAT "mat" 25 #define PFSTRING "string" 26 #define PFQUICK "quick" 27 #define PFIDENTITY "identity" 28 #define PFMATLAB "matlab" 29 30 /*S 31 PF - Abstract PETSc mathematical function 32 33 Level: beginner 34 35 Concepts: functions 36 37 .seealso: PFCreate(), PFDestroy(), PFSetType(), PFApply(), PFApplyVec(), PFSet(), PFType 38 S*/ 39 typedef struct _p_PF* PF; 40 41 extern PetscCookie PF_COOKIE; 42 43 EXTERN PetscErrorCode PFCreate(MPI_Comm,int,int,PF*); 44 EXTERN PetscErrorCode PFSetType(PF,const PFType,void*); 45 EXTERN PetscErrorCode PFSet(PF,PetscErrorCode(*)(void*,int,PetscScalar*,PetscScalar*),PetscErrorCode(*)(void*,Vec,Vec),PetscErrorCode(*)(void*,PetscViewer),PetscErrorCode(*)(void*),void*); 46 EXTERN PetscErrorCode PFApply(PF,int,PetscScalar*,PetscScalar*); 47 EXTERN PetscErrorCode PFApplyVec(PF,Vec,Vec); 48 49 EXTERN PetscErrorCode PFRegisterDestroy(void); 50 EXTERN PetscErrorCode PFRegisterAll(const char[]); 51 extern PetscTruth PFRegisterAllCalled; 52 53 EXTERN PetscErrorCode PFRegister(const char[],const char[],const char[],PetscErrorCode (*)(PF,void*)); 54 #if defined(PETSC_USE_DYNAMIC_LIBRARIES) 55 #define PFRegisterDynamic(a,b,c,d) PFRegister(a,b,c,0) 56 #else 57 #define PFRegisterDynamic(a,b,c,d) PFRegister(a,b,c,d) 58 #endif 59 60 EXTERN PetscErrorCode PFDestroy(PF); 61 EXTERN PetscErrorCode PFSetFromOptions(PF); 62 EXTERN PetscErrorCode PFGetType(PF,PFType*); 63 64 EXTERN PetscErrorCode PFView(PF,PetscViewer); 65 66 #define PFSetOptionsPrefix(a,s) PetscObjectSetOptionsPrefix((PetscObject)(a),s) 67 68 PETSC_EXTERN_CXX_END 69 #endif 70