Actual source code: petscts.h
1: /* $Id: petscts.h,v 1.46 2001/04/10 19:37:08 bsmith Exp $ */
2: /*
3: User interface for the timestepping package. This is package
4: is for use in solving time-dependent PDEs.
5: */
8: #include "petscsnes.h"
10: /*S
11: TS - Abstract PETSc object that manages all time-steppers (ODE integrators)
13: Level: beginner
15: Concepts: ODE solvers
17: .seealso: TSCreate(), TSSetType(), TSType, SNES, SLES, KSP, PC
18: S*/
19: typedef struct _p_TS* TS;
21: #define TS_COOKIE PETSC_COOKIE+18
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()
28: Level: beginner
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;
39: /*E
40: TSProblemType - Determines the type of problem this TS object is to be used to solve
42: Level: beginner
44: .seealso: TSCreate()
45: E*/
46: typedef enum {TS_LINEAR,TS_NONLINEAR} TSProblemType;
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);
53: EXTERN int TSSetMonitor(TS,int(*)(TS,int,double,Vec,void*),void *,int (*)(void*));
54: EXTERN int TSClearMonitor(TS);
55: EXTERN int TSGetType(TS,TSType*);
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);
63: EXTERN int TSSetSolution(TS,Vec);
64: EXTERN int TSGetSolution(TS,Vec*);
66: EXTERN int TSSetDuration(TS,int,double);
68: EXTERN int TSDefaultMonitor(TS,int,double,Vec,void*);
69: EXTERN int TSVecViewMonitor(TS,int,double,Vec,void*);
70: EXTERN int TSStep(TS,int *,double*);
72: EXTERN int TSSetInitialTimeStep(TS,double,double);
73: EXTERN int TSGetTimeStep(TS,double*);
74: EXTERN int TSGetTime(TS,double*);
75: EXTERN int TSGetTimeStepNumber(TS,int*);
76: EXTERN int TSSetTimeStep(TS,double);
78: EXTERN int TSSetRHSFunction(TS,int (*)(TS,double,Vec,Vec,void*),void*);
79: EXTERN int TSSetRHSMatrix(TS,Mat,Mat,int (*)(TS,double,Mat*,Mat*,MatStructure*,void*),void*);
80: EXTERN int TSSetRHSJacobian(TS,Mat,Mat,int(*)(TS,double,Vec,Mat*,Mat*,MatStructure*,void*),void*);
81: EXTERN int TSSetRHSBoundaryConditions(TS,int (*)(TS,double,Vec,void*),void*);
83: EXTERN int TSDefaultComputeJacobianColor(TS,double,Vec,Mat*,Mat*,MatStructure*,void*);
84: EXTERN int TSDefaultComputeJacobian(TS,double,Vec,Mat*,Mat*,MatStructure*,void*);
86: EXTERN int TSGetRHSMatrix(TS,Mat*,Mat*,void**);
87: EXTERN int TSGetRHSJacobian(TS,Mat*,Mat*,void**);
89: EXTERN int TSPseudoSetTimeStep(TS,int(*)(TS,double*,void*),void*);
90: EXTERN int TSPseudoDefaultTimeStep(TS,double*,void*);
91: EXTERN int TSPseudoComputeTimeStep(TS,double *);
93: EXTERN int TSPseudoSetVerifyTimeStep(TS,int(*)(TS,Vec,void*,double*,int*),void*);
94: EXTERN int TSPseudoDefaultVerifyTimeStep(TS,Vec,void*,double*,int*);
95: EXTERN int TSPseudoVerifyTimeStep(TS,Vec,double*,int*);
96: EXTERN int TSPseudoSetTimeStepIncrement(TS,double);
97: EXTERN int TSPseudoIncrementDtFromInitialDt(TS);
99: EXTERN int TSComputeRHSFunction(TS,double,Vec,Vec);
100: EXTERN int TSComputeRHSBoundaryConditions(TS,double,Vec);
101: EXTERN int TSComputeRHSJacobian(TS,double,Vec,Mat*,Mat*,MatStructure*);
103: extern PetscFList TSList;
104: EXTERN int TSRegisterAll(char*);
105: EXTERN int TSRegisterDestroy(void);
106: extern PetscTruth TSRegisterAllCalled;
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
115: EXTERN int TSGetSNES(TS,SNES*);
116: EXTERN int TSGetSLES(TS,SLES*);
118: EXTERN int TSView(TS,PetscViewer);
120: EXTERN int TSSetApplicationContext(TS,void *);
121: EXTERN int TSGetApplicationContext(TS,void **);
123: EXTERN int TSLGMonitorCreate(char *,char *,int,int,int,int,PetscDrawLG *);
124: EXTERN int TSLGMonitor(TS,int,double,Vec,void *);
125: EXTERN int TSLGMonitorDestroy(PetscDrawLG);
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,double,double);
136: EXTERN int TSPVodeGetIterations(TS,int *,int *);
137: EXTERN int TSPVodeSetGramSchmidtType(TS,TSPVodeGramSchmidtType);
138: EXTERN int TSPVodeSetGMRESRestart(TS,int);
139: EXTERN int TSPVodeSetLinearTolerance(TS,double);
140: EXTERN int TSPVodeSetExactFinalTime(TS,PetscTruth);
142: #endif