xref: /petsc/include/petscpf.h (revision 3e3e46762cde9a0400962bc7fb38273a291eba99)
1*3e3e4676SBarry Smith /* $Id: pf.h,v 1.1 2000/01/22 22:58:26 bsmith Exp bsmith $ */
2f97fa5f8SBarry Smith 
3f97fa5f8SBarry Smith /*
4*3e3e4676SBarry Smith       mathematical function module.
5f97fa5f8SBarry Smith */
6*3e3e4676SBarry Smith #if !defined(__PF_H)
7*3e3e4676SBarry Smith #define __PF_H
8f97fa5f8SBarry Smith #include "mat.h"
9f97fa5f8SBarry Smith 
10f97fa5f8SBarry Smith /*
11*3e3e4676SBarry Smith     PFList contains the list of preconditioners currently registered
12*3e3e4676SBarry Smith    These are added with the PFRegisterDynamic() macro
13f97fa5f8SBarry Smith */
14*3e3e4676SBarry Smith extern FList PFList;
15*3e3e4676SBarry Smith typedef char *PFType;
16f97fa5f8SBarry Smith 
17f97fa5f8SBarry Smith /*
18*3e3e4676SBarry Smith     Standard PETSc functions
19f97fa5f8SBarry Smith */
20*3e3e4676SBarry Smith #define PFCONSTANT      "constant"
21*3e3e4676SBarry Smith #define PFMAT           "mat"
22f97fa5f8SBarry Smith 
23*3e3e4676SBarry Smith typedef struct _p_PF* PF;
24*3e3e4676SBarry Smith #define PF_COOKIE     PETSC_COOKIE+9
25f97fa5f8SBarry Smith 
26f97fa5f8SBarry Smith 
27*3e3e4676SBarry Smith extern int PFCreate(MPI_Comm,int,int,PF*);
28*3e3e4676SBarry Smith extern int PFSetType(PF,PFType,void*);
29*3e3e4676SBarry Smith extern int PFSet(PF,int(*)(int,Scalar*,Scalar*,void*),int(*)(Vec,Vec,void*),int(*)(void*,Viewer),int(*)(void*),void*);
30*3e3e4676SBarry Smith extern int PFSetUp(PF);
31*3e3e4676SBarry Smith extern int PFApply(PF,int,Scalar*,Scalar*);
32*3e3e4676SBarry Smith extern int PFApplyVec(PF,Vec,Vec);
33f97fa5f8SBarry Smith 
34*3e3e4676SBarry Smith extern int PFRegisterDestroy(void);
35*3e3e4676SBarry Smith extern int PFRegisterAll(char*);
36*3e3e4676SBarry Smith extern int PFRegisterAllCalled;
37f97fa5f8SBarry Smith 
38*3e3e4676SBarry Smith extern int PFRegister(char*,char*,char*,int(*)(PF));
39f97fa5f8SBarry Smith #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
40*3e3e4676SBarry Smith #define PFRegisterDynamic(a,b,c,d) PFRegister(a,b,c,0)
41f97fa5f8SBarry Smith #else
42*3e3e4676SBarry Smith #define PFRegisterDynamic(a,b,c,d) PFRegister(a,b,c,d)
43f97fa5f8SBarry Smith #endif
44f97fa5f8SBarry Smith 
45*3e3e4676SBarry Smith extern int PFDestroy(PF);
46*3e3e4676SBarry Smith extern int PFSetFromOptions(PF);
47*3e3e4676SBarry Smith extern int PFSetTypeFromOptions(PF);
48*3e3e4676SBarry Smith extern int PFGetType(PF,PFType*);
49f97fa5f8SBarry Smith 
50*3e3e4676SBarry Smith extern int PFView(PF,Viewer);
51f97fa5f8SBarry Smith 
52f97fa5f8SBarry Smith #endif
53f97fa5f8SBarry Smith 
54f97fa5f8SBarry Smith 
55f97fa5f8SBarry Smith 
56f97fa5f8SBarry Smith 
57