xref: /petsc/include/petscts.h (revision 73f4d3771d9e6ab3f04055eab794d7609818b9d3)
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 #define TS_COOKIE PETSC_COOKIE+18
22 
23 /*E
24     TSType - String with the name of a PETSc TS method or the creation function
25        with an optional dynamic library name, for example
26        http://www.mcs.anl.gov/petsc/lib.a:mytscreate()
27 
28    Level: beginner
29 
30 .seealso: TSSetType(), TS
31 E*/
32 #define TS_EULER           "euler"
33 #define TS_BEULER          "beuler"
34 #define TS_PSEUDO          "pseudo"
35 #define TS_CRANK_NICHOLSON "crank-nicholson"
36 #define TS_PVODE           "pvode"
37 typedef char *TSType;
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 EXTERN int TSCreate(MPI_Comm,TSProblemType,TS*);
49 EXTERN int TSSetType(TS,TSType);
50 EXTERN int TSGetProblemType(TS,TSProblemType*);
51 EXTERN int TSDestroy(TS);
52 
53 EXTERN int TSSetMonitor(TS,int(*)(TS,int,PetscReal,Vec,void*),void *,int (*)(void*));
54 EXTERN int TSClearMonitor(TS);
55 EXTERN int TSGetType(TS,TSType*);
56 
57 EXTERN int TSSetOptionsPrefix(TS,char *);
58 EXTERN int TSAppendOptionsPrefix(TS,char *);
59 EXTERN int TSGetOptionsPrefix(TS,char **);
60 EXTERN int TSSetFromOptions(TS);
61 EXTERN int TSSetUp(TS);
62 
63 EXTERN int TSSetSolution(TS,Vec);
64 EXTERN int TSGetSolution(TS,Vec*);
65 
66 EXTERN int TSSetDuration(TS,int,PetscReal);
67 
68 EXTERN int TSDefaultMonitor(TS,int,PetscReal,Vec,void*);
69 EXTERN int TSVecViewMonitor(TS,int,PetscReal,Vec,void*);
70 EXTERN int TSStep(TS,int *,PetscReal*);
71 
72 EXTERN int TSSetInitialTimeStep(TS,PetscReal,PetscReal);
73 EXTERN int TSGetTimeStep(TS,PetscReal*);
74 EXTERN int TSGetTime(TS,PetscReal*);
75 EXTERN int TSGetTimeStepNumber(TS,int*);
76 EXTERN int TSSetTimeStep(TS,PetscReal);
77 
78 EXTERN int TSSetRHSFunction(TS,int (*)(TS,PetscReal,Vec,Vec,void*),void*);
79 EXTERN int TSSetRHSMatrix(TS,Mat,Mat,int (*)(TS,PetscReal,Mat*,Mat*,MatStructure*,void*),void*);
80 EXTERN int TSSetRHSJacobian(TS,Mat,Mat,int(*)(TS,PetscReal,Vec,Mat*,Mat*,MatStructure*,void*),void*);
81 EXTERN int TSSetRHSBoundaryConditions(TS,int (*)(TS,PetscReal,Vec,void*),void*);
82 
83 EXTERN int TSDefaultComputeJacobianColor(TS,PetscReal,Vec,Mat*,Mat*,MatStructure*,void*);
84 EXTERN int TSDefaultComputeJacobian(TS,PetscReal,Vec,Mat*,Mat*,MatStructure*,void*);
85 
86 EXTERN int TSGetRHSMatrix(TS,Mat*,Mat*,void**);
87 EXTERN int TSGetRHSJacobian(TS,Mat*,Mat*,void**);
88 
89 EXTERN int TSPseudoSetTimeStep(TS,int(*)(TS,PetscReal*,void*),void*);
90 EXTERN int TSPseudoDefaultTimeStep(TS,PetscReal*,void*);
91 EXTERN int TSPseudoComputeTimeStep(TS,PetscReal *);
92 
93 EXTERN int TSPseudoSetVerifyTimeStep(TS,int(*)(TS,Vec,void*,PetscReal*,int*),void*);
94 EXTERN int TSPseudoDefaultVerifyTimeStep(TS,Vec,void*,PetscReal*,int*);
95 EXTERN int TSPseudoVerifyTimeStep(TS,Vec,PetscReal*,int*);
96 EXTERN int TSPseudoSetTimeStepIncrement(TS,PetscReal);
97 EXTERN int TSPseudoIncrementDtFromInitialDt(TS);
98 
99 EXTERN int TSComputeRHSFunction(TS,PetscReal,Vec,Vec);
100 EXTERN int TSComputeRHSBoundaryConditions(TS,PetscReal,Vec);
101 EXTERN int TSComputeRHSJacobian(TS,PetscReal,Vec,Mat*,Mat*,MatStructure*);
102 
103 extern PetscFList      TSList;
104 EXTERN int        TSRegisterAll(char*);
105 EXTERN int        TSRegisterDestroy(void);
106 extern PetscTruth TSRegisterAllCalled;
107 
108 EXTERN int TSRegister(char*,char*,char*,int(*)(TS));
109 #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
110 #define TSRegisterDynamic(a,b,c,d) TSRegister(a,b,c,0)
111 #else
112 #define TSRegisterDynamic(a,b,c,d) TSRegister(a,b,c,d)
113 #endif
114 
115 EXTERN int TSGetSNES(TS,SNES*);
116 EXTERN int TSGetSLES(TS,SLES*);
117 
118 EXTERN int TSView(TS,PetscViewer);
119 
120 EXTERN int TSSetApplicationContext(TS,void *);
121 EXTERN int TSGetApplicationContext(TS,void **);
122 
123 EXTERN int TSLGMonitorCreate(char *,char *,int,int,int,int,PetscDrawLG *);
124 EXTERN int TSLGMonitor(TS,int,PetscReal,Vec,void *);
125 EXTERN int TSLGMonitorDestroy(PetscDrawLG);
126 
127 /*
128        PETSc interface to PVode
129 */
130 #define PVODE_UNMODIFIED_GS PVODE_CLASSICAL_GS
131 typedef enum { PVODE_ADAMS,PVODE_BDF } TSPVodeType;
132 typedef enum { PVODE_MODIFIED_GS = 0,PVODE_CLASSICAL_GS = 1 } TSPVodeGramSchmidtType;
133 EXTERN int TSPVodeSetType(TS,TSPVodeType);
134 EXTERN int TSPVodeGetPC(TS,PC*);
135 EXTERN int TSPVodeSetTolerance(TS,PetscReal,PetscReal);
136 EXTERN int TSPVodeGetIterations(TS,int *,int *);
137 EXTERN int TSPVodeSetGramSchmidtType(TS,TSPVodeGramSchmidtType);
138 EXTERN int TSPVodeSetGMRESRestart(TS,int);
139 EXTERN int TSPVodeSetLinearTolerance(TS,PetscReal);
140 EXTERN int TSPVodeSetExactFinalTime(TS,PetscTruth);
141 
142 #endif
143 
144 
145 
146 
147 
148