xref: /petsc/include/petscpf.h (revision 6849ba73f22fecb8f92ef896a42e4e8bd4cd6965)
1 /*
2       mathematical function module.
3 */
4 #if !defined(__PETSCPF_H)
5 #define __PETSCPF_H
6 #include "petscvec.h"
7 PETSC_EXTERN_CXX_BEGIN
8 
9 /*
10     PPetscFList contains the list of preconditioners currently registered
11    These are added with the PFRegisterDynamic() macro
12 */
13 extern PetscFList PPetscFList;
14 
15 /*E
16     PFType - Type of PETSc mathematical function, a string name
17 
18    Level: beginner
19 
20 .seealso: PFSetType(), PF
21 E*/
22 #define PFType char*
23 #define PFCONSTANT      "constant"
24 #define PFMAT           "mat"
25 #define PFSTRING        "string"
26 #define PFQUICK         "quick"
27 #define PFIDENTITY      "identity"
28 #define PFMATLAB        "matlab"
29 
30 /*S
31      PF - Abstract PETSc mathematical function
32 
33    Level: beginner
34 
35   Concepts: functions
36 
37 .seealso:  PFCreate(), PFDestroy(), PFSetType(), PFApply(), PFApplyVec(), PFSet(), PFType
38 S*/
39 typedef struct _p_PF* PF;
40 
41 extern PetscCookie PF_COOKIE;
42 
43 EXTERN PetscErrorCode PFCreate(MPI_Comm,int,int,PF*);
44 EXTERN PetscErrorCode PFSetType(PF,const PFType,void*);
45 EXTERN PetscErrorCode PFSet(PF,PetscErrorCode(*)(void*,int,PetscScalar*,PetscScalar*),PetscErrorCode(*)(void*,Vec,Vec),PetscErrorCode(*)(void*,PetscViewer),PetscErrorCode(*)(void*),void*);
46 EXTERN PetscErrorCode PFApply(PF,int,PetscScalar*,PetscScalar*);
47 EXTERN PetscErrorCode PFApplyVec(PF,Vec,Vec);
48 
49 EXTERN PetscErrorCode        PFRegisterDestroy(void);
50 EXTERN PetscErrorCode        PFRegisterAll(const char[]);
51 extern PetscTruth PFRegisterAllCalled;
52 
53 EXTERN PetscErrorCode PFRegister(const char[],const char[],const char[],PetscErrorCode (*)(PF,void*));
54 #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
55 #define PFRegisterDynamic(a,b,c,d) PFRegister(a,b,c,0)
56 #else
57 #define PFRegisterDynamic(a,b,c,d) PFRegister(a,b,c,d)
58 #endif
59 
60 EXTERN PetscErrorCode PFDestroy(PF);
61 EXTERN PetscErrorCode PFSetFromOptions(PF);
62 EXTERN PetscErrorCode PFGetType(PF,PFType*);
63 
64 EXTERN PetscErrorCode PFView(PF,PetscViewer);
65 
66 #define PFSetOptionsPrefix(a,s) PetscObjectSetOptionsPrefix((PetscObject)(a),s)
67 
68 PETSC_EXTERN_CXX_END
69 #endif
70