1*21c89e3eSBarry Smith /* $Id: ts.h,v 1.5 1996/03/23 18:35:47 bsmith Exp bsmith $ */ 2818ad0c1SBarry Smith /* 36d84be18SBarry Smith User interface for the time-stepping package. This is package 46d84be18SBarry Smith is for use in solving time dependent PDES. 5818ad0c1SBarry Smith */ 66d84be18SBarry Smith #if !defined(__TS_PACKAGE) 76d84be18SBarry Smith #define __TS_PACKAGE 86d84be18SBarry Smith #include "snes.h" 9818ad0c1SBarry Smith 106d84be18SBarry Smith typedef struct _TS* TS; 116d84be18SBarry Smith #define TS_COOKIE PETSC_COOKIE+18 12818ad0c1SBarry Smith 13*21c89e3eSBarry Smith typedef enum { TS_EULER, TS_BEULER, TS_PSEUDO_POSITION_INDEPENDENT_TIMESTEP, 14*21c89e3eSBarry Smith TS_PSEUDO_POSITION_DEPENDENT_TIMESTEP} TSType; 1519bcc07fSBarry Smith typedef enum { TS_LINEAR, TS_NONLINEAR} TSProblemType; 16818ad0c1SBarry Smith 176d84be18SBarry Smith extern int TSCreate(MPI_Comm,TSProblemType,TS*); 186d84be18SBarry Smith extern int TSSetType(TS,TSType); 196d84be18SBarry Smith extern int TSDestroy(TS); 20818ad0c1SBarry Smith 21*21c89e3eSBarry Smith extern int TSSetMonitor(TS,int(*)(TS,int,double,Vec,void*),void *); 226d84be18SBarry Smith extern int TSGetType(TS,TSType*,char**); 23818ad0c1SBarry Smith 246d84be18SBarry Smith extern int TSSetFromOptions(TS); 256d84be18SBarry Smith extern int TSSetUp(TS); 26818ad0c1SBarry Smith 276d84be18SBarry Smith extern int TSSetSolution(TS,Vec); 286d84be18SBarry Smith extern int TSGetSolution(TS,Vec*); 29818ad0c1SBarry Smith 30*21c89e3eSBarry Smith extern int TSSetDuration(TS,int,double); 316d84be18SBarry Smith extern int TSPrintHelp(TS); 32818ad0c1SBarry Smith 33*21c89e3eSBarry Smith extern int TSDefaultMonitor(TS,int,double,Vec,void*); 34*21c89e3eSBarry Smith extern int TSStep(TS,int *,double*); 35818ad0c1SBarry Smith 36c3e30b67SBarry Smith extern int TSSetInitialTimeStep(TS,double,double); 37c3e30b67SBarry Smith extern int TSGetTimeStep(TS,double*); 38*21c89e3eSBarry Smith extern int TSGetTimeStepNumber(TS,int*); 39c3e30b67SBarry Smith extern int TSSetTimeStep(TS,double); 40818ad0c1SBarry Smith 41*21c89e3eSBarry Smith extern int TSSetRHSFunction(TS,int (*)(TS,double,Vec,Vec,void*),void*); 42c3e30b67SBarry Smith extern int TSSetRHSMatrix(TS,Mat,Mat,int (*)(TS,double,Mat*,Mat*,MatStructure*,void*),void*); 43c3e30b67SBarry Smith extern int TSSetRHSJacobian(TS,Mat,Mat,int(*)(TS,double,Vec,Mat*,Mat*,MatStructure*,void*),void*); 44818ad0c1SBarry Smith 45*21c89e3eSBarry Smith extern int TSPseudoSetPositionIndependentTimeStep(TS,int(*)(TS,double*,void*),void*); 46*21c89e3eSBarry Smith extern int TSPseudoSetPositionDependentTimeStep(TS,int(*)(TS,Vec,void*),void*); 47*21c89e3eSBarry Smith extern int TSPseudoDefaultPositionIndependentTimeStep(TS,double*,void* ); 48*21c89e3eSBarry Smith 49c3e30b67SBarry Smith extern int TSComputeRHSFunction(TS,double,Vec,Vec); 50818ad0c1SBarry Smith 516d84be18SBarry Smith extern int TSRegisterAll(); 526d84be18SBarry Smith extern int TSRegister(int,char*,int (*)(TS)); 53818ad0c1SBarry Smith 546d84be18SBarry Smith extern int TSGetSNES(TS,SNES*); 556d84be18SBarry Smith extern int TSGetSLES(TS,SLES*); 56818ad0c1SBarry Smith 57c3e30b67SBarry Smith extern int TSView(TS,Viewer); 58*21c89e3eSBarry Smith 59*21c89e3eSBarry Smith extern int TSSetApplicationContext(TS,void *); 60*21c89e3eSBarry Smith extern int TSGetApplicationContext(TS,void **); 61*21c89e3eSBarry Smith 62818ad0c1SBarry Smith #endif 63818ad0c1SBarry Smith 64*21c89e3eSBarry Smith 65*21c89e3eSBarry Smith 66*21c89e3eSBarry Smith 67*21c89e3eSBarry Smith 68