xref: /petsc/include/petscts.h (revision ca44d042d6f86ecc01fa7a52a5213a5161f95f53)
1 /* $Id: petscts.h,v 1.41 2000/05/08 15:09:50 balay 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 TSSetTypeFromOptions(TS);
37 EXTERN int TSSetUp(TS);
38 
39 EXTERN int TSSetSolution(TS,Vec);
40 EXTERN int TSGetSolution(TS,Vec*);
41 
42 EXTERN int TSSetDuration(TS,int,double);
43 EXTERN int TSPrintHelp(TS);
44 
45 EXTERN int TSDefaultMonitor(TS,int,double,Vec,void*);
46 EXTERN int TSStep(TS,int *,double*);
47 
48 EXTERN int TSSetInitialTimeStep(TS,double,double);
49 EXTERN int TSGetTimeStep(TS,double*);
50 EXTERN int TSGetTime(TS,double*);
51 EXTERN int TSGetTimeStepNumber(TS,int*);
52 EXTERN int TSSetTimeStep(TS,double);
53 
54 EXTERN int TSSetRHSFunction(TS,int (*)(TS,double,Vec,Vec,void*),void*);
55 EXTERN int TSSetRHSMatrix(TS,Mat,Mat,int (*)(TS,double,Mat*,Mat*,MatStructure*,void*),void*);
56 EXTERN int TSSetRHSJacobian(TS,Mat,Mat,int(*)(TS,double,Vec,Mat*,Mat*,MatStructure*,void*),void*);
57 EXTERN int TSSetRHSBoundaryConditions(TS,int (*)(TS,double,Vec,void*),void*);
58 
59 EXTERN int TSDefaultComputeJacobianColor(TS,double,Vec,Mat*,Mat*,MatStructure*,void*);
60 EXTERN int TSDefaultComputeJacobian(TS,double,Vec,Mat*,Mat*,MatStructure*,void*);
61 
62 EXTERN int TSGetRHSMatrix(TS,Mat*,Mat*,void**);
63 EXTERN int TSGetRHSJacobian(TS,Mat*,Mat*,void**);
64 
65 EXTERN int TSPseudoSetTimeStep(TS,int(*)(TS,double*,void*),void*);
66 EXTERN int TSPseudoDefaultTimeStep(TS,double*,void*);
67 EXTERN int TSPseudoComputeTimeStep(TS,double *);
68 
69 EXTERN int TSPseudoSetVerifyTimeStep(TS,int(*)(TS,Vec,void*,double*,int*),void*);
70 EXTERN int TSPseudoDefaultVerifyTimeStep(TS,Vec,void*,double*,int*);
71 EXTERN int TSPseudoVerifyTimeStep(TS,Vec,double*,int*);
72 EXTERN int TSPseudoSetTimeStepIncrement(TS,double);
73 EXTERN int TSPseudoIncrementDtFromInitialDt(TS);
74 
75 EXTERN int TSComputeRHSFunction(TS,double,Vec,Vec);
76 EXTERN int TSComputeRHSBoundaryConditions(TS,double,Vec);
77 EXTERN int TSComputeRHSJacobian(TS,double,Vec,Mat*,Mat*,MatStructure*);
78 
79 extern FList      TSList;
80 EXTERN int        TSRegisterAll(char*);
81 EXTERN int        TSRegisterDestroy(void);
82 extern PetscTruth TSRegisterAllCalled;
83 
84 EXTERN int TSRegister(char*,char*,char*,int(*)(TS));
85 #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
86 #define TSRegisterDynamic(a,b,c,d) TSRegister(a,b,c,0)
87 #else
88 #define TSRegisterDynamic(a,b,c,d) TSRegister(a,b,c,d)
89 #endif
90 
91 EXTERN int TSGetSNES(TS,SNES*);
92 EXTERN int TSGetSLES(TS,SLES*);
93 
94 EXTERN int TSView(TS,Viewer);
95 
96 EXTERN int TSSetApplicationContext(TS,void *);
97 EXTERN int TSGetApplicationContext(TS,void **);
98 
99 EXTERN int TSLGMonitorCreate(char *,char *,int,int,int,int,DrawLG *);
100 EXTERN int TSLGMonitor(TS,int,double,Vec,void *);
101 EXTERN int TSLGMonitorDestroy(DrawLG);
102 
103 /*
104        PETSc interface to PVode
105 */
106 #define PVODE_UNMODIFIED_GS PVODE_CLASSICAL_GS
107 typedef enum { PVODE_ADAMS,PVODE_BDF } TSPVodeType;
108 typedef enum { PVODE_MODIFIED_GS = 0,PVODE_CLASSICAL_GS = 1 } TSPVodeGramSchmidtType;
109 EXTERN int TSPVodeSetType(TS,TSPVodeType);
110 EXTERN int TSPVodeGetPC(TS,PC*);
111 EXTERN int TSPVodeSetTolerance(TS,double,double);
112 EXTERN int TSPVodeGetIterations(TS,int *,int *);
113 EXTERN int TSPVodeSetGramSchmidtType(TS,TSPVodeGramSchmidtType);
114 EXTERN int TSPVodeSetGMRESRestart(TS,int);
115 EXTERN int TSPVodeSetLinearTolerance(TS,double);
116 EXTERN int TSPVodeSetExactFinalTime(TS,PetscTruth);
117 
118 #endif
119 
120 
121 
122 
123 
124