xref: /petsc/include/petscts.h (revision 29bbc08cd5461c366aba6645924e8ff42acd1de0)
1 /* $Id: petscts.h,v 1.42 2000/05/10 16:44:25 bsmith Exp bsmith $ */
2 /*
3    User interface for the timestepping package. This is package
4    is for use in solving time-dependent PDEs.
5 */
6 #if !defined(__PETSCTS_H)
7 #define __PETSCTS_H
8 #include "petscsnes.h"
9 
10 typedef struct _p_TS* TS;
11 #define TS_COOKIE PETSC_COOKIE+18
12 
13 #define TS_EULER           "euler"
14 #define TS_BEULER          "beuler"
15 #define TS_PSEUDO          "pseudo"
16 #define TS_CRANK_NICHOLSON "crank-nicholson"
17 #define TS_PVODE           "pvode"
18 
19 typedef char *TSType;
20 
21 typedef enum {TS_LINEAR,TS_NONLINEAR} TSProblemType;
22 
23 EXTERN int TSCreate(MPI_Comm,TSProblemType,TS*);
24 EXTERN int TSSetType(TS,TSType);
25 EXTERN int TSGetProblemType(TS,TSProblemType*);
26 EXTERN int TSDestroy(TS);
27 
28 EXTERN int TSSetMonitor(TS,int(*)(TS,int,double,Vec,void*),void *,int (*)(void*));
29 EXTERN int TSClearMonitor(TS);
30 EXTERN int TSGetType(TS,TSType*);
31 
32 EXTERN int TSSetOptionsPrefix(TS,char *);
33 EXTERN int TSAppendOptionsPrefix(TS,char *);
34 EXTERN int TSGetOptionsPrefix(TS,char **);
35 EXTERN int TSSetFromOptions(TS);
36 EXTERN int TSSetUp(TS);
37 
38 EXTERN int TSSetSolution(TS,Vec);
39 EXTERN int TSGetSolution(TS,Vec*);
40 
41 EXTERN int TSSetDuration(TS,int,double);
42 
43 EXTERN int TSDefaultMonitor(TS,int,double,Vec,void*);
44 EXTERN int TSStep(TS,int *,double*);
45 
46 EXTERN int TSSetInitialTimeStep(TS,double,double);
47 EXTERN int TSGetTimeStep(TS,double*);
48 EXTERN int TSGetTime(TS,double*);
49 EXTERN int TSGetTimeStepNumber(TS,int*);
50 EXTERN int TSSetTimeStep(TS,double);
51 
52 EXTERN int TSSetRHSFunction(TS,int (*)(TS,double,Vec,Vec,void*),void*);
53 EXTERN int TSSetRHSMatrix(TS,Mat,Mat,int (*)(TS,double,Mat*,Mat*,MatStructure*,void*),void*);
54 EXTERN int TSSetRHSJacobian(TS,Mat,Mat,int(*)(TS,double,Vec,Mat*,Mat*,MatStructure*,void*),void*);
55 EXTERN int TSSetRHSBoundaryConditions(TS,int (*)(TS,double,Vec,void*),void*);
56 
57 EXTERN int TSDefaultComputeJacobianColor(TS,double,Vec,Mat*,Mat*,MatStructure*,void*);
58 EXTERN int TSDefaultComputeJacobian(TS,double,Vec,Mat*,Mat*,MatStructure*,void*);
59 
60 EXTERN int TSGetRHSMatrix(TS,Mat*,Mat*,void**);
61 EXTERN int TSGetRHSJacobian(TS,Mat*,Mat*,void**);
62 
63 EXTERN int TSPseudoSetTimeStep(TS,int(*)(TS,double*,void*),void*);
64 EXTERN int TSPseudoDefaultTimeStep(TS,double*,void*);
65 EXTERN int TSPseudoComputeTimeStep(TS,double *);
66 
67 EXTERN int TSPseudoSetVerifyTimeStep(TS,int(*)(TS,Vec,void*,double*,int*),void*);
68 EXTERN int TSPseudoDefaultVerifyTimeStep(TS,Vec,void*,double*,int*);
69 EXTERN int TSPseudoVerifyTimeStep(TS,Vec,double*,int*);
70 EXTERN int TSPseudoSetTimeStepIncrement(TS,double);
71 EXTERN int TSPseudoIncrementDtFromInitialDt(TS);
72 
73 EXTERN int TSComputeRHSFunction(TS,double,Vec,Vec);
74 EXTERN int TSComputeRHSBoundaryConditions(TS,double,Vec);
75 EXTERN int TSComputeRHSJacobian(TS,double,Vec,Mat*,Mat*,MatStructure*);
76 
77 extern FList      TSList;
78 EXTERN int        TSRegisterAll(char*);
79 EXTERN int        TSRegisterDestroy(void);
80 extern PetscTruth TSRegisterAllCalled;
81 
82 EXTERN int TSRegister(char*,char*,char*,int(*)(TS));
83 #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
84 #define TSRegisterDynamic(a,b,c,d) TSRegister(a,b,c,0)
85 #else
86 #define TSRegisterDynamic(a,b,c,d) TSRegister(a,b,c,d)
87 #endif
88 
89 EXTERN int TSGetSNES(TS,SNES*);
90 EXTERN int TSGetSLES(TS,SLES*);
91 
92 EXTERN int TSView(TS,Viewer);
93 
94 EXTERN int TSSetApplicationContext(TS,void *);
95 EXTERN int TSGetApplicationContext(TS,void **);
96 
97 EXTERN int TSLGMonitorCreate(char *,char *,int,int,int,int,DrawLG *);
98 EXTERN int TSLGMonitor(TS,int,double,Vec,void *);
99 EXTERN int TSLGMonitorDestroy(DrawLG);
100 
101 /*
102        PETSc interface to PVode
103 */
104 #define PVODE_UNMODIFIED_GS PVODE_CLASSICAL_GS
105 typedef enum { PVODE_ADAMS,PVODE_BDF } TSPVodeType;
106 typedef enum { PVODE_MODIFIED_GS = 0,PVODE_CLASSICAL_GS = 1 } TSPVodeGramSchmidtType;
107 EXTERN int TSPVodeSetType(TS,TSPVodeType);
108 EXTERN int TSPVodeGetPC(TS,PC*);
109 EXTERN int TSPVodeSetTolerance(TS,double,double);
110 EXTERN int TSPVodeGetIterations(TS,int *,int *);
111 EXTERN int TSPVodeSetGramSchmidtType(TS,TSPVodeGramSchmidtType);
112 EXTERN int TSPVodeSetGMRESRestart(TS,int);
113 EXTERN int TSPVodeSetLinearTolerance(TS,double);
114 EXTERN int TSPVodeSetExactFinalTime(TS,PetscTruth);
115 
116 #endif
117 
118 
119 
120 
121 
122