1f97fa5f8SBarry Smith /* 23e3e4676SBarry Smith mathematical function module. 3f97fa5f8SBarry Smith */ 40a835dfdSSatish Balay #if !defined(__PETSCPF_H) 50a835dfdSSatish Balay #define __PETSCPF_H 6494233caSMatthew Knepley #include "petscvec.h" 7f97fa5f8SBarry Smith 8f97fa5f8SBarry Smith /* 91d280d73SBarry Smith PFList contains the list of preconditioners currently registered 103e3e4676SBarry Smith These are added with the PFRegisterDynamic() macro 11f97fa5f8SBarry Smith */ 12*014dd563SJed Brown PETSC_EXTERN PetscFList PFList; 13f97fa5f8SBarry Smith 1476bdecfbSBarry Smith /*J 15b9617806SBarry Smith PFType - Type of PETSc mathematical function, a string name 16b9617806SBarry Smith 17b9617806SBarry Smith Level: beginner 18b9617806SBarry Smith 19b9617806SBarry Smith .seealso: PFSetType(), PF 2076bdecfbSBarry Smith J*/ 21a313700dSBarry Smith #define PFType char* 223e3e4676SBarry Smith #define PFCONSTANT "constant" 233e3e4676SBarry Smith #define PFMAT "mat" 243eda8832SBarry Smith #define PFSTRING "string" 253eda8832SBarry Smith #define PFQUICK "quick" 2674637425SBarry Smith #define PFIDENTITY "identity" 2774637425SBarry Smith #define PFMATLAB "matlab" 28f97fa5f8SBarry Smith 29b9617806SBarry Smith /*S 30b9617806SBarry Smith PF - Abstract PETSc mathematical function 31f97fa5f8SBarry Smith 32b9617806SBarry Smith Level: beginner 33b9617806SBarry Smith 34b9617806SBarry Smith Concepts: functions 35b9617806SBarry Smith 36b9617806SBarry Smith .seealso: PFCreate(), PFDestroy(), PFSetType(), PFApply(), PFApplyVec(), PFSet(), PFType 37b9617806SBarry Smith S*/ 38b9617806SBarry Smith typedef struct _p_PF* PF; 39b9617806SBarry Smith 40*014dd563SJed Brown PETSC_EXTERN PetscClassId PF_CLASSID; 41f97fa5f8SBarry Smith 42*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFCreate(MPI_Comm,PetscInt,PetscInt,PF*); 43*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFSetType(PF,const PFType,void*); 44*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFSet(PF,PetscErrorCode(*)(void*,PetscInt,const PetscScalar*,PetscScalar*),PetscErrorCode(*)(void*,Vec,Vec),PetscErrorCode(*)(void*,PetscViewer),PetscErrorCode(*)(void*),void*); 45*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFApply(PF,PetscInt,const PetscScalar*,PetscScalar*); 46*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFApplyVec(PF,Vec,Vec); 47f97fa5f8SBarry Smith 48*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFRegisterDestroy(void); 49*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFRegisterAll(const char[]); 50*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFInitializePackage(const char[]); 51*014dd563SJed Brown PETSC_EXTERN PetscBool PFRegisterAllCalled; 52f97fa5f8SBarry Smith 53*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFRegister(const char[],const char[],const char[],PetscErrorCode (*)(PF,void*)); 54f97fa5f8SBarry Smith #if defined(PETSC_USE_DYNAMIC_LIBRARIES) 553e3e4676SBarry Smith #define PFRegisterDynamic(a,b,c,d) PFRegister(a,b,c,0) 56f97fa5f8SBarry Smith #else 573e3e4676SBarry Smith #define PFRegisterDynamic(a,b,c,d) PFRegister(a,b,c,d) 58f97fa5f8SBarry Smith #endif 59f97fa5f8SBarry Smith 60*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFDestroy(PF*); 61*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFSetFromOptions(PF); 62*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFGetType(PF,const PFType*); 63f97fa5f8SBarry Smith 64*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFView(PF,PetscViewer); 65f97fa5f8SBarry Smith 663eda8832SBarry Smith #define PFSetOptionsPrefix(a,s) PetscObjectSetOptionsPrefix((PetscObject)(a),s) 67e9fa29b7SSatish Balay 68f97fa5f8SBarry Smith #endif 69