xref: /petsc/include/petscpf.h (revision 1d280d73c02b5f40ed8a2d6aeb3f302f7f78b483)
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"
7e9fa29b7SSatish Balay PETSC_EXTERN_CXX_BEGIN
8f97fa5f8SBarry Smith 
9f97fa5f8SBarry Smith /*
10*1d280d73SBarry Smith     PFList contains the list of preconditioners currently registered
113e3e4676SBarry Smith    These are added with the PFRegisterDynamic() macro
12f97fa5f8SBarry Smith */
13*1d280d73SBarry Smith extern PetscFList PFList;
14f97fa5f8SBarry Smith 
15b9617806SBarry Smith /*E
16b9617806SBarry Smith     PFType - Type of PETSc mathematical function, a string name
17b9617806SBarry Smith 
18b9617806SBarry Smith    Level: beginner
19b9617806SBarry Smith 
20b9617806SBarry Smith .seealso: PFSetType(), PF
21b9617806SBarry Smith E*/
22e5a9bf91SBarry Smith #define PFType const char*
233e3e4676SBarry Smith #define PFCONSTANT      "constant"
243e3e4676SBarry Smith #define PFMAT           "mat"
253eda8832SBarry Smith #define PFSTRING        "string"
263eda8832SBarry Smith #define PFQUICK         "quick"
2774637425SBarry Smith #define PFIDENTITY      "identity"
2874637425SBarry Smith #define PFMATLAB        "matlab"
29f97fa5f8SBarry Smith 
30b9617806SBarry Smith /*S
31b9617806SBarry Smith      PF - Abstract PETSc mathematical function
32f97fa5f8SBarry Smith 
33b9617806SBarry Smith    Level: beginner
34b9617806SBarry Smith 
35b9617806SBarry Smith   Concepts: functions
36b9617806SBarry Smith 
37b9617806SBarry Smith .seealso:  PFCreate(), PFDestroy(), PFSetType(), PFApply(), PFApplyVec(), PFSet(), PFType
38b9617806SBarry Smith S*/
39b9617806SBarry Smith typedef struct _p_PF* PF;
40b9617806SBarry Smith 
416849ba73SBarry Smith extern PetscCookie PF_COOKIE;
42f97fa5f8SBarry Smith 
430c735eedSKris Buschelman EXTERN PetscErrorCode PETSCVEC_DLLEXPORT PFCreate(MPI_Comm,PetscInt,PetscInt,PF*);
442e90c967SHong Zhang EXTERN PetscErrorCode PETSCVEC_DLLEXPORT PFSetType(PF,PFType,void*);
450c735eedSKris Buschelman EXTERN PetscErrorCode PETSCVEC_DLLEXPORT PFSet(PF,PetscErrorCode(*)(void*,PetscInt,PetscScalar*,PetscScalar*),PetscErrorCode(*)(void*,Vec,Vec),PetscErrorCode(*)(void*,PetscViewer),PetscErrorCode(*)(void*),void*);
460c735eedSKris Buschelman EXTERN PetscErrorCode PETSCVEC_DLLEXPORT PFApply(PF,PetscInt,PetscScalar*,PetscScalar*);
470c735eedSKris Buschelman EXTERN PetscErrorCode PETSCVEC_DLLEXPORT PFApplyVec(PF,Vec,Vec);
48f97fa5f8SBarry Smith 
490c735eedSKris Buschelman EXTERN PetscErrorCode PETSCVEC_DLLEXPORT PFRegisterDestroy(void);
500c735eedSKris Buschelman EXTERN PetscErrorCode PETSCVEC_DLLEXPORT PFRegisterAll(const char[]);
519877f0dbSBarry Smith EXTERN PetscErrorCode PETSCVEC_DLLEXPORT PFInitializePackage(const char[]);
523eda8832SBarry Smith extern PetscTruth PFRegisterAllCalled;
53f97fa5f8SBarry Smith 
540c735eedSKris Buschelman EXTERN PetscErrorCode PETSCVEC_DLLEXPORT PFRegister(const char[],const char[],const char[],PetscErrorCode (*)(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 
610c735eedSKris Buschelman EXTERN PetscErrorCode PETSCVEC_DLLEXPORT PFDestroy(PF);
620c735eedSKris Buschelman EXTERN PetscErrorCode PETSCVEC_DLLEXPORT PFSetFromOptions(PF);
630c735eedSKris Buschelman EXTERN PetscErrorCode PETSCVEC_DLLEXPORT PFGetType(PF,PFType*);
64f97fa5f8SBarry Smith 
650c735eedSKris Buschelman EXTERN PetscErrorCode PETSCVEC_DLLEXPORT PFView(PF,PetscViewer);
66f97fa5f8SBarry Smith 
673eda8832SBarry Smith #define PFSetOptionsPrefix(a,s) PetscObjectSetOptionsPrefix((PetscObject)(a),s)
68e9fa29b7SSatish Balay 
69e9fa29b7SSatish Balay PETSC_EXTERN_CXX_END
70f97fa5f8SBarry Smith #endif
71