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