1*87828ca2SBarry Smith /* $Id: petscpf.h,v 1.11 2001/08/02 20:29:32 balay Exp bsmith $ */ 2f97fa5f8SBarry Smith 3f97fa5f8SBarry Smith /* 43e3e4676SBarry Smith mathematical function module. 5f97fa5f8SBarry Smith */ 60a835dfdSSatish Balay #if !defined(__PETSCPF_H) 70a835dfdSSatish Balay #define __PETSCPF_H 80a835dfdSSatish Balay #include "petscmat.h" 9f97fa5f8SBarry Smith 10f97fa5f8SBarry Smith /* 11b0a32e0cSBarry Smith PPetscFList contains the list of preconditioners currently registered 123e3e4676SBarry Smith These are added with the PFRegisterDynamic() macro 13f97fa5f8SBarry Smith */ 14b0a32e0cSBarry Smith extern PetscFList PPetscFList; 15f97fa5f8SBarry Smith 16b9617806SBarry Smith /*E 17b9617806SBarry Smith PFType - Type of PETSc mathematical function, a string name 18b9617806SBarry Smith 19b9617806SBarry Smith Level: beginner 20b9617806SBarry Smith 21b9617806SBarry Smith .seealso: PFSetType(), PF 22b9617806SBarry Smith E*/ 23b9617806SBarry Smith typedef char *PFType; 243e3e4676SBarry Smith #define PFCONSTANT "constant" 253e3e4676SBarry Smith #define PFMAT "mat" 263eda8832SBarry Smith #define PFSTRING "string" 273eda8832SBarry Smith #define PFQUICK "quick" 2874637425SBarry Smith #define PFIDENTITY "identity" 2974637425SBarry Smith #define PFMATLAB "matlab" 30f97fa5f8SBarry Smith 31b9617806SBarry Smith /*S 32b9617806SBarry Smith PF - Abstract PETSc mathematical function 33f97fa5f8SBarry Smith 34b9617806SBarry Smith Level: beginner 35b9617806SBarry Smith 36b9617806SBarry Smith Concepts: functions 37b9617806SBarry Smith 38b9617806SBarry Smith .seealso: PFCreate(), PFDestroy(), PFSetType(), PFApply(), PFApplyVec(), PFSet(), PFType 39b9617806SBarry Smith S*/ 40b9617806SBarry Smith typedef struct _p_PF* PF; 41b9617806SBarry Smith 42b9617806SBarry Smith #define PF_COOKIE PETSC_COOKIE+9 43f97fa5f8SBarry Smith 44ca44d042SBarry Smith EXTERN int PFCreate(MPI_Comm,int,int,PF*); 45ca44d042SBarry Smith EXTERN int PFSetType(PF,PFType,void*); 46*87828ca2SBarry Smith EXTERN int PFSet(PF,int(*)(void*,int,PetscScalar*,PetscScalar*),int(*)(void*,Vec,Vec),int(*)(void*,PetscViewer),int(*)(void*),void*); 47*87828ca2SBarry Smith EXTERN int PFApply(PF,int,PetscScalar*,PetscScalar*); 48ca44d042SBarry Smith EXTERN int PFApplyVec(PF,Vec,Vec); 49f97fa5f8SBarry Smith 50ca44d042SBarry Smith EXTERN int PFRegisterDestroy(void); 51ca44d042SBarry Smith EXTERN int PFRegisterAll(char*); 523eda8832SBarry Smith extern PetscTruth PFRegisterAllCalled; 53f97fa5f8SBarry Smith 54ca44d042SBarry Smith EXTERN int PFRegister(char*,char*,char*,int(*)(PF,void*)); 55f97fa5f8SBarry Smith #if defined(PETSC_USE_DYNAMIC_LIBRARIES) 563e3e4676SBarry Smith #define PFRegisterDynamic(a,b,c,d) PFRegister(a,b,c,0) 57f97fa5f8SBarry Smith #else 583e3e4676SBarry Smith #define PFRegisterDynamic(a,b,c,d) PFRegister(a,b,c,d) 59f97fa5f8SBarry Smith #endif 60f97fa5f8SBarry Smith 61ca44d042SBarry Smith EXTERN int PFDestroy(PF); 62ca44d042SBarry Smith EXTERN int PFSetFromOptions(PF); 63ca44d042SBarry Smith EXTERN int PFGetType(PF,PFType*); 64f97fa5f8SBarry Smith 65b0a32e0cSBarry Smith EXTERN int PFView(PF,PetscViewer); 66f97fa5f8SBarry Smith 673eda8832SBarry Smith #define PFSetOptionsPrefix(a,s) PetscObjectSetOptionsPrefix((PetscObject)(a),s) 68f97fa5f8SBarry Smith #endif 69f97fa5f8SBarry Smith 70f97fa5f8SBarry Smith 71f97fa5f8SBarry Smith 72f97fa5f8SBarry Smith 73