xref: /petsc/include/petscts.h (revision 3cea93cac9ae2afbf7f7a0b05f63af60a96dad9e)
1 /* $Id: petscts.h,v 1.47 2001/08/06 15:42:42 bsmith Exp $ */
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 /*S
11      TS - Abstract PETSc object that manages all time-steppers (ODE integrators)
12 
13    Level: beginner
14 
15   Concepts: ODE solvers
16 
17 .seealso:  TSCreate(), TSSetType(), TSType, SNES, SLES, KSP, PC
18 S*/
19 typedef struct _p_TS* TS;
20 
21 /*E
22     TSType - String with the name of a PETSc TS method or the creation function
23        with an optional dynamic library name, for example
24        http://www.mcs.anl.gov/petsc/lib.a:mytscreate()
25 
26    Level: beginner
27 
28 .seealso: TSSetType(), TS
29 E*/
30 #define TS_EULER           "euler"
31 #define TS_BEULER          "beuler"
32 #define TS_PSEUDO          "pseudo"
33 #define TS_CRANK_NICHOLSON "crank-nicholson"
34 #define TS_PVODE           "pvode"
35 typedef char *TSType;
36 
37 typedef char *TSSerializeType;
38 
39 /*E
40     TSProblemType - Determines the type of problem this TS object is to be used to solve
41 
42    Level: beginner
43 
44 .seealso: TSCreate()
45 E*/
46 typedef enum {TS_LINEAR,TS_NONLINEAR} TSProblemType;
47 
48 /* Logging support */
49 extern int TS_COOKIE;
50 extern int TS_Step, TS_PseudoComputeTimeStep, TS_FunctionEval, TS_JacobianEval;
51 
52 EXTERN int TSInitializePackage(char *);
53 
54 EXTERN int TSCreate(MPI_Comm,TS*);
55 EXTERN int TSSerialize(MPI_Comm, TS *, PetscViewer, PetscTruth);
56 EXTERN int TSDestroy(TS);
57 
58 EXTERN int TSSetProblemType(TS,TSProblemType);
59 EXTERN int TSGetProblemType(TS,TSProblemType*);
60 EXTERN int TSSetMonitor(TS,int(*)(TS,int,PetscReal,Vec,void*),void *,int (*)(void*));
61 EXTERN int TSClearMonitor(TS);
62 
63 EXTERN int TSSetOptionsPrefix(TS,char *);
64 EXTERN int TSAppendOptionsPrefix(TS,char *);
65 EXTERN int TSGetOptionsPrefix(TS,char **);
66 EXTERN int TSSetFromOptions(TS);
67 EXTERN int TSSetUp(TS);
68 
69 EXTERN int TSSetSolution(TS,Vec);
70 EXTERN int TSGetSolution(TS,Vec*);
71 
72 EXTERN int TSSetDuration(TS,int,PetscReal);
73 EXTERN int TSGetDuration(TS,int*,PetscReal*);
74 
75 EXTERN int TSDefaultMonitor(TS,int,PetscReal,Vec,void*);
76 EXTERN int TSVecViewMonitor(TS,int,PetscReal,Vec,void*);
77 EXTERN int TSStep(TS,int *,PetscReal*);
78 
79 EXTERN int TSSetInitialTimeStep(TS,PetscReal,PetscReal);
80 EXTERN int TSGetTimeStep(TS,PetscReal*);
81 EXTERN int TSGetTime(TS,PetscReal*);
82 EXTERN int TSGetTimeStepNumber(TS,int*);
83 EXTERN int TSSetTimeStep(TS,PetscReal);
84 
85 EXTERN int TSSetRHSFunction(TS,int (*)(TS,PetscReal,Vec,Vec,void*),void*);
86 EXTERN int TSSetRHSMatrix(TS,Mat,Mat,int (*)(TS,PetscReal,Mat*,Mat*,MatStructure*,void*),void*);
87 EXTERN int TSSetRHSJacobian(TS,Mat,Mat,int(*)(TS,PetscReal,Vec,Mat*,Mat*,MatStructure*,void*),void*);
88 EXTERN int TSSetRHSBoundaryConditions(TS,int (*)(TS,PetscReal,Vec,void*),void*);
89 
90 EXTERN int TSDefaultComputeJacobianColor(TS,PetscReal,Vec,Mat*,Mat*,MatStructure*,void*);
91 EXTERN int TSDefaultComputeJacobian(TS,PetscReal,Vec,Mat*,Mat*,MatStructure*,void*);
92 
93 EXTERN int TSGetRHSMatrix(TS,Mat*,Mat*,void**);
94 EXTERN int TSGetRHSJacobian(TS,Mat*,Mat*,void**);
95 
96 extern int TSSetRhsBC(TS, int (*)(TS, Vec, void *));
97 extern int TSSetSystemMatrixBC(TS, int (*)(TS, Mat, Mat, void *));
98 extern int TSSetSolutionBC(TS, int (*)(TS, Vec, void *));
99 extern int TSSetPreStep(TS, int (*)(TS));
100 extern int TSSetUpdate(TS, int (*)(TS, PetscReal, PetscReal *));
101 extern int TSSetPostStep(TS, int (*)(TS));
102 extern int TSDefaultRhsBC(TS, Vec, void *);
103 extern int TSDefaultSystemMatrixBC(TS, Mat, Mat, void *);
104 extern int TSDefaultSolutionBC(TS, Vec, void *);
105 extern int TSDefaultPreStep(TS);
106 extern int TSDefaultUpdate(TS, PetscReal, PetscReal *);
107 extern int TSDefaultPostStep(TS);
108 extern int TSSetIdentity(TS, int (*)(TS, double, Mat *, void *));
109 
110 EXTERN int TSPseudoSetTimeStep(TS,int(*)(TS,PetscReal*,void*),void*);
111 EXTERN int TSPseudoDefaultTimeStep(TS,PetscReal*,void*);
112 EXTERN int TSPseudoComputeTimeStep(TS,PetscReal *);
113 
114 EXTERN int TSPseudoSetVerifyTimeStep(TS,int(*)(TS,Vec,void*,PetscReal*,int*),void*);
115 EXTERN int TSPseudoDefaultVerifyTimeStep(TS,Vec,void*,PetscReal*,int*);
116 EXTERN int TSPseudoVerifyTimeStep(TS,Vec,PetscReal*,int*);
117 EXTERN int TSPseudoSetTimeStepIncrement(TS,PetscReal);
118 EXTERN int TSPseudoIncrementDtFromInitialDt(TS);
119 
120 EXTERN int TSComputeRHSFunction(TS,PetscReal,Vec,Vec);
121 EXTERN int TSComputeRHSBoundaryConditions(TS,PetscReal,Vec);
122 EXTERN int TSComputeRHSJacobian(TS,PetscReal,Vec,Mat*,Mat*,MatStructure*);
123 
124 /* Dynamic creation and loading functions */
125 extern PetscFList TSList;
126 extern PetscTruth TSRegisterAllCalled;
127 EXTERN int TSGetType(TS,TSType*);
128 EXTERN int TSSetType(TS,TSType);
129 EXTERN int TSRegister(const char[], const char[], const char[], int (*)(TS));
130 EXTERN int TSRegisterAll(const char[]);
131 EXTERN int TSRegisterDestroy(void);
132 #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
133 #define TSRegisterDynamic(a,b,c,d) TSRegister(a,b,c,0)
134 #else
135 #define TSRegisterDynamic(a,b,c,d) TSRegister(a,b,c,d)
136 #endif
137 
138 extern PetscFList TSSerializeList;
139 extern PetscTruth TSSerializeRegisterAllCalled;
140 EXTERN int TSSetSerializeType(TS, TSSerializeType);
141 EXTERN int TSGetSerializeType(TS, TSSerializeType *);
142 EXTERN int TSSerializeRegister(const char [], const char [], const char [], int (*)(MPI_Comm, TS *, PetscViewer, PetscTruth));
143 EXTERN int TSSerializeRegisterAll(const char []);
144 EXTERN int TSSerializeRegisterDestroy(void);
145 #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
146 #define TSSerializeRegisterDynamic(a,b,c,d) TSSerializeRegister(a,b,c,0)
147 #else
148 #define TSSerializeRegisterDynamic(a,b,c,d) TSSerializeRegister(a,b,c,d)
149 #endif
150 
151 EXTERN int TSGetSNES(TS,SNES*);
152 EXTERN int TSGetSLES(TS,SLES*);
153 
154 EXTERN int TSView(TS,PetscViewer);
155 EXTERN int TSViewFromOptions(TS,char *);
156 
157 EXTERN int TSSetApplicationContext(TS,void *);
158 EXTERN int TSGetApplicationContext(TS,void **);
159 
160 EXTERN int TSLGMonitorCreate(char *,char *,int,int,int,int,PetscDrawLG *);
161 EXTERN int TSLGMonitor(TS,int,PetscReal,Vec,void *);
162 EXTERN int TSLGMonitorDestroy(PetscDrawLG);
163 
164 /*
165        PETSc interface to PVode
166 */
167 #define PVODE_UNMODIFIED_GS PVODE_CLASSICAL_GS
168 typedef enum { PVODE_ADAMS,PVODE_BDF } TSPVodeType;
169 typedef enum { PVODE_MODIFIED_GS = 0,PVODE_CLASSICAL_GS = 1 } TSPVodeGramSchmidtType;
170 EXTERN int TSPVodeSetType(TS,TSPVodeType);
171 EXTERN int TSPVodeGetPC(TS,PC*);
172 EXTERN int TSPVodeSetTolerance(TS,PetscReal,PetscReal);
173 EXTERN int TSPVodeGetIterations(TS,int *,int *);
174 EXTERN int TSPVodeSetGramSchmidtType(TS,TSPVodeGramSchmidtType);
175 EXTERN int TSPVodeSetGMRESRestart(TS,int);
176 EXTERN int TSPVodeSetLinearTolerance(TS,PetscReal);
177 EXTERN int TSPVodeSetExactFinalTime(TS,PetscTruth);
178 
179 #endif
180 
181 
182 
183 
184 
185