xref: /petsc/include/petscpf.h (revision 014dd563d73e9fc78d056590fa6cf997782bf92d)
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"
7f97fa5f8SBarry Smith 
8f97fa5f8SBarry Smith /*
91d280d73SBarry Smith     PFList contains the list of preconditioners currently registered
103e3e4676SBarry Smith    These are added with the PFRegisterDynamic() macro
11f97fa5f8SBarry Smith */
12*014dd563SJed Brown PETSC_EXTERN PetscFList PFList;
13f97fa5f8SBarry Smith 
1476bdecfbSBarry Smith /*J
15b9617806SBarry Smith     PFType - Type of PETSc mathematical function, a string name
16b9617806SBarry Smith 
17b9617806SBarry Smith    Level: beginner
18b9617806SBarry Smith 
19b9617806SBarry Smith .seealso: PFSetType(), PF
2076bdecfbSBarry Smith J*/
21a313700dSBarry Smith #define PFType char*
223e3e4676SBarry Smith #define PFCONSTANT      "constant"
233e3e4676SBarry Smith #define PFMAT           "mat"
243eda8832SBarry Smith #define PFSTRING        "string"
253eda8832SBarry Smith #define PFQUICK         "quick"
2674637425SBarry Smith #define PFIDENTITY      "identity"
2774637425SBarry Smith #define PFMATLAB        "matlab"
28f97fa5f8SBarry Smith 
29b9617806SBarry Smith /*S
30b9617806SBarry Smith      PF - Abstract PETSc mathematical function
31f97fa5f8SBarry Smith 
32b9617806SBarry Smith    Level: beginner
33b9617806SBarry Smith 
34b9617806SBarry Smith   Concepts: functions
35b9617806SBarry Smith 
36b9617806SBarry Smith .seealso:  PFCreate(), PFDestroy(), PFSetType(), PFApply(), PFApplyVec(), PFSet(), PFType
37b9617806SBarry Smith S*/
38b9617806SBarry Smith typedef struct _p_PF* PF;
39b9617806SBarry Smith 
40*014dd563SJed Brown PETSC_EXTERN PetscClassId PF_CLASSID;
41f97fa5f8SBarry Smith 
42*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFCreate(MPI_Comm,PetscInt,PetscInt,PF*);
43*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFSetType(PF,const PFType,void*);
44*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFSet(PF,PetscErrorCode(*)(void*,PetscInt,const PetscScalar*,PetscScalar*),PetscErrorCode(*)(void*,Vec,Vec),PetscErrorCode(*)(void*,PetscViewer),PetscErrorCode(*)(void*),void*);
45*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFApply(PF,PetscInt,const PetscScalar*,PetscScalar*);
46*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFApplyVec(PF,Vec,Vec);
47f97fa5f8SBarry Smith 
48*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFRegisterDestroy(void);
49*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFRegisterAll(const char[]);
50*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFInitializePackage(const char[]);
51*014dd563SJed Brown PETSC_EXTERN PetscBool PFRegisterAllCalled;
52f97fa5f8SBarry Smith 
53*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFRegister(const char[],const char[],const char[],PetscErrorCode (*)(PF,void*));
54f97fa5f8SBarry Smith #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
553e3e4676SBarry Smith #define PFRegisterDynamic(a,b,c,d) PFRegister(a,b,c,0)
56f97fa5f8SBarry Smith #else
573e3e4676SBarry Smith #define PFRegisterDynamic(a,b,c,d) PFRegister(a,b,c,d)
58f97fa5f8SBarry Smith #endif
59f97fa5f8SBarry Smith 
60*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFDestroy(PF*);
61*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFSetFromOptions(PF);
62*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFGetType(PF,const PFType*);
63f97fa5f8SBarry Smith 
64*014dd563SJed Brown PETSC_EXTERN PetscErrorCode PFView(PF,PetscViewer);
65f97fa5f8SBarry Smith 
663eda8832SBarry Smith #define PFSetOptionsPrefix(a,s) PetscObjectSetOptionsPrefix((PetscObject)(a),s)
67e9fa29b7SSatish Balay 
68f97fa5f8SBarry Smith #endif
69