1*ffb21b54SBarry Smith /* $Id: pf.h,v 1.2 2000/01/24 04:05:37 bsmith Exp bsmith $ */ 2f97fa5f8SBarry Smith 3f97fa5f8SBarry Smith /* 43e3e4676SBarry Smith mathematical function module. 5f97fa5f8SBarry Smith */ 63e3e4676SBarry Smith #if !defined(__PF_H) 73e3e4676SBarry Smith #define __PF_H 8f97fa5f8SBarry Smith #include "mat.h" 9f97fa5f8SBarry Smith 10f97fa5f8SBarry Smith /* 113e3e4676SBarry Smith PFList contains the list of preconditioners currently registered 123e3e4676SBarry Smith These are added with the PFRegisterDynamic() macro 13f97fa5f8SBarry Smith */ 143e3e4676SBarry Smith extern FList PFList; 153e3e4676SBarry Smith typedef char *PFType; 16f97fa5f8SBarry Smith 17f97fa5f8SBarry Smith /* 183e3e4676SBarry Smith Standard PETSc functions 19f97fa5f8SBarry Smith */ 203e3e4676SBarry Smith #define PFCONSTANT "constant" 213e3e4676SBarry Smith #define PFMAT "mat" 22f97fa5f8SBarry Smith 233e3e4676SBarry Smith typedef struct _p_PF* PF; 243e3e4676SBarry Smith #define PF_COOKIE PETSC_COOKIE+9 25f97fa5f8SBarry Smith 26f97fa5f8SBarry Smith 273e3e4676SBarry Smith extern int PFCreate(MPI_Comm,int,int,PF*); 283e3e4676SBarry Smith extern int PFSetType(PF,PFType,void*); 29*ffb21b54SBarry Smith extern int PFSet(PF,int(*)(void*,int,Scalar*,Scalar*),int(*)(void*,Vec,Vec),int(*)(void*,Viewer),int(*)(void*),void*); 303e3e4676SBarry Smith extern int PFApply(PF,int,Scalar*,Scalar*); 313e3e4676SBarry Smith extern int PFApplyVec(PF,Vec,Vec); 32f97fa5f8SBarry Smith 333e3e4676SBarry Smith extern int PFRegisterDestroy(void); 343e3e4676SBarry Smith extern int PFRegisterAll(char*); 353e3e4676SBarry Smith extern int PFRegisterAllCalled; 36f97fa5f8SBarry Smith 37*ffb21b54SBarry Smith extern int PFRegister(char*,char*,char*,int(*)(PF,void*)); 38f97fa5f8SBarry Smith #if defined(PETSC_USE_DYNAMIC_LIBRARIES) 393e3e4676SBarry Smith #define PFRegisterDynamic(a,b,c,d) PFRegister(a,b,c,0) 40f97fa5f8SBarry Smith #else 413e3e4676SBarry Smith #define PFRegisterDynamic(a,b,c,d) PFRegister(a,b,c,d) 42f97fa5f8SBarry Smith #endif 43f97fa5f8SBarry Smith 443e3e4676SBarry Smith extern int PFDestroy(PF); 453e3e4676SBarry Smith extern int PFSetFromOptions(PF); 463e3e4676SBarry Smith extern int PFSetTypeFromOptions(PF); 473e3e4676SBarry Smith extern int PFGetType(PF,PFType*); 48f97fa5f8SBarry Smith 493e3e4676SBarry Smith extern int PFView(PF,Viewer); 50f97fa5f8SBarry Smith 51f97fa5f8SBarry Smith #endif 52f97fa5f8SBarry Smith 53f97fa5f8SBarry Smith 54f97fa5f8SBarry Smith 55f97fa5f8SBarry Smith 56