xref: /petsc/include/petscpf.h (revision b0a32e0c6855ee6a6cd3495fa7da12ea9885bc5d)
1*b0a32e0cSBarry Smith /* $Id: petscpf.h,v 1.8 2000/08/24 22:43:56 bsmith 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 /*
11*b0a32e0cSBarry Smith     PPetscFList contains the list of preconditioners currently registered
123e3e4676SBarry Smith    These are added with the PFRegisterDynamic() macro
13f97fa5f8SBarry Smith */
14*b0a32e0cSBarry Smith extern PetscFList PPetscFList;
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"
223eda8832SBarry Smith #define PFSTRING        "string"
233eda8832SBarry Smith #define PFQUICK         "quick"
2474637425SBarry Smith #define PFIDENTITY      "identity"
2574637425SBarry Smith #define PFMATLAB        "matlab"
26f97fa5f8SBarry Smith 
273e3e4676SBarry Smith typedef struct _p_PF* PF;
283e3e4676SBarry Smith #define PF_COOKIE     PETSC_COOKIE+9
29f97fa5f8SBarry Smith 
30f97fa5f8SBarry Smith 
31ca44d042SBarry Smith EXTERN int PFCreate(MPI_Comm,int,int,PF*);
32ca44d042SBarry Smith EXTERN int PFSetType(PF,PFType,void*);
33*b0a32e0cSBarry Smith EXTERN int PFSet(PF,int(*)(void*,int,Scalar*,Scalar*),int(*)(void*,Vec,Vec),int(*)(void*,PetscViewer),int(*)(void*),void*);
34ca44d042SBarry Smith EXTERN int PFApply(PF,int,Scalar*,Scalar*);
35ca44d042SBarry Smith EXTERN int PFApplyVec(PF,Vec,Vec);
36f97fa5f8SBarry Smith 
37ca44d042SBarry Smith EXTERN int        PFRegisterDestroy(void);
38ca44d042SBarry Smith EXTERN int        PFRegisterAll(char*);
393eda8832SBarry Smith extern PetscTruth PFRegisterAllCalled;
40f97fa5f8SBarry Smith 
41ca44d042SBarry Smith EXTERN int PFRegister(char*,char*,char*,int(*)(PF,void*));
42f97fa5f8SBarry Smith #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
433e3e4676SBarry Smith #define PFRegisterDynamic(a,b,c,d) PFRegister(a,b,c,0)
44f97fa5f8SBarry Smith #else
453e3e4676SBarry Smith #define PFRegisterDynamic(a,b,c,d) PFRegister(a,b,c,d)
46f97fa5f8SBarry Smith #endif
47f97fa5f8SBarry Smith 
48ca44d042SBarry Smith EXTERN int PFDestroy(PF);
49ca44d042SBarry Smith EXTERN int PFSetFromOptions(PF);
50ca44d042SBarry Smith EXTERN int PFSetTypeFromOptions(PF);
51ca44d042SBarry Smith EXTERN int PFGetType(PF,PFType*);
52f97fa5f8SBarry Smith 
53*b0a32e0cSBarry Smith EXTERN int PFView(PF,PetscViewer);
54f97fa5f8SBarry Smith 
553eda8832SBarry Smith #define PFSetOptionsPrefix(a,s) PetscObjectSetOptionsPrefix((PetscObject)(a),s)
56f97fa5f8SBarry Smith #endif
57f97fa5f8SBarry Smith 
58f97fa5f8SBarry Smith 
59f97fa5f8SBarry Smith 
60f97fa5f8SBarry Smith 
61