xref: /petsc/include/petscpf.h (revision 87828ca270d8140797fd4271705413c4ecfcb535)
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