1818ad0c1SBarry Smith /* 2316643e7SJed Brown User interface for the timestepping package. This package 3f64a0f93SLois Curfman McInnes is for use in solving time-dependent PDEs. 4818ad0c1SBarry Smith */ 50a835dfdSSatish Balay #if !defined(__PETSCTS_H) 60a835dfdSSatish Balay #define __PETSCTS_H 70a835dfdSSatish Balay #include "petscsnes.h" 8e9fa29b7SSatish Balay PETSC_EXTERN_CXX_BEGIN 9818ad0c1SBarry Smith 10435da068SBarry Smith /*S 11435da068SBarry Smith TS - Abstract PETSc object that manages all time-steppers (ODE integrators) 12435da068SBarry Smith 13435da068SBarry Smith Level: beginner 14435da068SBarry Smith 15435da068SBarry Smith Concepts: ODE solvers 16435da068SBarry Smith 1794b7f48cSBarry Smith .seealso: TSCreate(), TSSetType(), TSType, SNES, KSP, PC 18435da068SBarry Smith S*/ 19f09e8eb9SSatish Balay typedef struct _p_TS* TS; 20435da068SBarry Smith 2176bdecfbSBarry Smith /*J 22435da068SBarry Smith TSType - String with the name of a PETSc TS method or the creation function 23435da068SBarry Smith with an optional dynamic library name, for example 24435da068SBarry Smith http://www.mcs.anl.gov/petsc/lib.a:mytscreate() 25435da068SBarry Smith 26435da068SBarry Smith Level: beginner 27435da068SBarry Smith 28435da068SBarry Smith .seealso: TSSetType(), TS 2976bdecfbSBarry Smith J*/ 30a313700dSBarry Smith #define TSType char* 319596e0b4SJed Brown #define TSEULER "euler" 329596e0b4SJed Brown #define TSBEULER "beuler" 339596e0b4SJed Brown #define TSPSEUDO "pseudo" 344d91e141SJed Brown #define TSCN "cn" 359596e0b4SJed Brown #define TSSUNDIALS "sundials" 364d91e141SJed Brown #define TSRK "rk" 379596e0b4SJed Brown #define TSPYTHON "python" 389596e0b4SJed Brown #define TSTHETA "theta" 3988df8a41SLisandro Dalcin #define TSALPHA "alpha" 409596e0b4SJed Brown #define TSGL "gl" 41ef7bb5aaSJed Brown #define TSSSP "ssp" 428a381b04SJed Brown #define TSARKIMEX "arkimex" 43e27a552bSJed Brown #define TSROSW "rosw" 4482bf6240SBarry Smith 45435da068SBarry Smith /*E 46435da068SBarry Smith TSProblemType - Determines the type of problem this TS object is to be used to solve 47435da068SBarry Smith 48435da068SBarry Smith Level: beginner 49435da068SBarry Smith 50435da068SBarry Smith .seealso: TSCreate() 51435da068SBarry Smith E*/ 5219bcc07fSBarry Smith typedef enum {TS_LINEAR,TS_NONLINEAR} TSProblemType; 53818ad0c1SBarry Smith 54b93fea0eSJed Brown /*E 55b93fea0eSJed Brown TSConvergedReason - reason a TS method has converged or not 56b93fea0eSJed Brown 57b93fea0eSJed Brown Level: beginner 58b93fea0eSJed Brown 59b93fea0eSJed Brown Developer Notes: this must match finclude/petscts.h 60b93fea0eSJed Brown 61b93fea0eSJed Brown Each reason has its own manual page. 62b93fea0eSJed Brown 63b93fea0eSJed Brown .seealso: TSGetConvergedReason() 64b93fea0eSJed Brown E*/ 65193ac0bcSJed Brown typedef enum { 66193ac0bcSJed Brown TS_CONVERGED_ITERATING = 0, 67193ac0bcSJed Brown TS_CONVERGED_TIME = 1, 68193ac0bcSJed Brown TS_CONVERGED_ITS = 2, 69193ac0bcSJed Brown TS_DIVERGED_NONLINEAR_SOLVE = -1, 70193ac0bcSJed Brown TS_DIVERGED_STEP_REJECTED = -2 71193ac0bcSJed Brown } TSConvergedReason; 72193ac0bcSJed Brown extern const char *const*TSConvergedReasons; 73193ac0bcSJed Brown 74b93fea0eSJed Brown /*MC 75b93fea0eSJed Brown TS_CONVERGED_ITERATING - this only occurs if TSGetConvergedReason() is called during the TSSolve() 76b93fea0eSJed Brown 77b93fea0eSJed Brown Level: beginner 78b93fea0eSJed Brown 79b93fea0eSJed Brown .seealso: TSSolve(), TSConvergedReason(), TSGetAdapt() 80b93fea0eSJed Brown M*/ 81b93fea0eSJed Brown 82b93fea0eSJed Brown /*MC 83b93fea0eSJed Brown TS_CONVERGED_TIME - the final time was reached 84b93fea0eSJed Brown 85b93fea0eSJed Brown Level: beginner 86b93fea0eSJed Brown 87b93fea0eSJed Brown .seealso: TSSolve(), TSConvergedReason(), TSGetAdapt(), TSSetDuration() 88b93fea0eSJed Brown M*/ 89b93fea0eSJed Brown 90b93fea0eSJed Brown /*MC 91b93fea0eSJed Brown TS_CONVERGED_ITS - the maximum number of iterations was reached prior to the final time 92b93fea0eSJed Brown 93b93fea0eSJed Brown Level: beginner 94b93fea0eSJed Brown 95b93fea0eSJed Brown .seealso: TSSolve(), TSConvergedReason(), TSGetAdapt(), TSSetDuration() 96b93fea0eSJed Brown M*/ 97b93fea0eSJed Brown 98b93fea0eSJed Brown /*MC 99b93fea0eSJed Brown TS_DIVERGED_NONLINEAR_SOLVE - too many nonlinear solves failed 100b93fea0eSJed Brown 101b93fea0eSJed Brown Level: beginner 102b93fea0eSJed Brown 103b93fea0eSJed Brown .seealso: TSSolve(), TSConvergedReason(), TSGetAdapt(), TSGetSNES(), SNESGetConvergedReason() 104b93fea0eSJed Brown M*/ 105b93fea0eSJed Brown 106b93fea0eSJed Brown /*MC 107b93fea0eSJed Brown TS_DIVERGED_STEP_REJECTED - too many steps were rejected 108b93fea0eSJed Brown 109b93fea0eSJed Brown Level: beginner 110b93fea0eSJed Brown 111b93fea0eSJed Brown .seealso: TSSolve(), TSConvergedReason(), TSGetAdapt() 112b93fea0eSJed Brown M*/ 113b93fea0eSJed Brown 114000e7ae3SMatthew Knepley /* Logging support */ 1157087cfbeSBarry Smith extern PetscClassId TS_CLASSID; 116000e7ae3SMatthew Knepley 1177087cfbeSBarry Smith extern PetscErrorCode TSInitializePackage(const char[]); 1188ba1e511SMatthew Knepley 1197087cfbeSBarry Smith extern PetscErrorCode TSCreate(MPI_Comm,TS*); 120fcfd50ebSBarry Smith extern PetscErrorCode TSDestroy(TS*); 121818ad0c1SBarry Smith 1227087cfbeSBarry Smith extern PetscErrorCode TSSetProblemType(TS,TSProblemType); 1237087cfbeSBarry Smith extern PetscErrorCode TSGetProblemType(TS,TSProblemType*); 124228d79bcSJed Brown extern PetscErrorCode TSMonitor(TS,PetscInt,PetscReal,Vec); 125c2efdce3SBarry Smith extern PetscErrorCode TSMonitorSet(TS,PetscErrorCode(*)(TS,PetscInt,PetscReal,Vec,void*),void *,PetscErrorCode (*)(void**)); 1267087cfbeSBarry Smith extern PetscErrorCode TSMonitorCancel(TS); 127818ad0c1SBarry Smith 1287087cfbeSBarry Smith extern PetscErrorCode TSSetOptionsPrefix(TS,const char[]); 1297087cfbeSBarry Smith extern PetscErrorCode TSAppendOptionsPrefix(TS,const char[]); 1307087cfbeSBarry Smith extern PetscErrorCode TSGetOptionsPrefix(TS,const char *[]); 1317087cfbeSBarry Smith extern PetscErrorCode TSSetFromOptions(TS); 1327087cfbeSBarry Smith extern PetscErrorCode TSSetUp(TS); 133277b19d0SLisandro Dalcin extern PetscErrorCode TSReset(TS); 134818ad0c1SBarry Smith 1357087cfbeSBarry Smith extern PetscErrorCode TSSetSolution(TS,Vec); 1367087cfbeSBarry Smith extern PetscErrorCode TSGetSolution(TS,Vec*); 137818ad0c1SBarry Smith 1387087cfbeSBarry Smith extern PetscErrorCode TSSetDuration(TS,PetscInt,PetscReal); 1397087cfbeSBarry Smith extern PetscErrorCode TSGetDuration(TS,PetscInt*,PetscReal*); 140a43b19c4SJed Brown extern PetscErrorCode TSSetExactFinalTime(TS,PetscBool); 141818ad0c1SBarry Smith 1427087cfbeSBarry Smith extern PetscErrorCode TSMonitorDefault(TS,PetscInt,PetscReal,Vec,void*); 1437087cfbeSBarry Smith extern PetscErrorCode TSMonitorSolution(TS,PetscInt,PetscReal,Vec,void*); 1446083293cSBarry Smith extern PetscErrorCode TSMonitorSolutionCreate(TS,PetscViewer,void**); 1456083293cSBarry Smith extern PetscErrorCode TSMonitorSolutionDestroy(void**); 146fb1732b5SBarry Smith extern PetscErrorCode TSMonitorSolutionBinary(TS,PetscInt,PetscReal,Vec,void*); 147ed81e22dSJed Brown extern PetscErrorCode TSMonitorSolutionVTK(TS,PetscInt,PetscReal,Vec,void*); 148ed81e22dSJed Brown extern PetscErrorCode TSMonitorSolutionVTKDestroy(void*); 149fb1732b5SBarry Smith 150193ac0bcSJed Brown extern PetscErrorCode TSStep(TS); 1511c3436cfSJed Brown extern PetscErrorCode TSEvaluateStep(TS,PetscInt,Vec,PetscBool*); 1525a3a76d0SJed Brown extern PetscErrorCode TSSolve(TS,Vec,PetscReal*); 153193ac0bcSJed Brown extern PetscErrorCode TSGetConvergedReason(TS,TSConvergedReason*); 1549f67acb7SJed Brown extern PetscErrorCode TSGetNonlinearSolveIterations(TS,PetscInt*); 1559f67acb7SJed Brown extern PetscErrorCode TSGetLinearSolveIterations(TS,PetscInt*); 156818ad0c1SBarry Smith 1577087cfbeSBarry Smith extern PetscErrorCode TSSetInitialTimeStep(TS,PetscReal,PetscReal); 1587087cfbeSBarry Smith extern PetscErrorCode TSGetTimeStep(TS,PetscReal*); 1597087cfbeSBarry Smith extern PetscErrorCode TSGetTime(TS,PetscReal*); 1607087cfbeSBarry Smith extern PetscErrorCode TSSetTime(TS,PetscReal); 1617087cfbeSBarry Smith extern PetscErrorCode TSGetTimeStepNumber(TS,PetscInt*); 1627087cfbeSBarry Smith extern PetscErrorCode TSSetTimeStep(TS,PetscReal); 163818ad0c1SBarry Smith 1642d4b5aceSLisandro Dalcin typedef PetscErrorCode (*TSRHSFunction)(TS,PetscReal,Vec,Vec,void*); 1652d4b5aceSLisandro Dalcin typedef PetscErrorCode (*TSRHSJacobian)(TS,PetscReal,Vec,Mat*,Mat*,MatStructure*,void*); 166089b2837SJed Brown extern PetscErrorCode TSSetRHSFunction(TS,Vec,TSRHSFunction,void*); 167089b2837SJed Brown extern PetscErrorCode TSGetRHSFunction(TS,Vec*,TSRHSFunction*,void**); 1682d4b5aceSLisandro Dalcin extern PetscErrorCode TSSetRHSJacobian(TS,Mat,Mat,TSRHSJacobian,void*); 169089b2837SJed Brown extern PetscErrorCode TSGetRHSJacobian(TS,Mat*,Mat*,TSRHSJacobian*,void**); 170818ad0c1SBarry Smith 171316643e7SJed Brown typedef PetscErrorCode (*TSIFunction)(TS,PetscReal,Vec,Vec,Vec,void*); 172316643e7SJed Brown typedef PetscErrorCode (*TSIJacobian)(TS,PetscReal,Vec,Vec,PetscReal,Mat*,Mat*,MatStructure*,void*); 173089b2837SJed Brown extern PetscErrorCode TSSetIFunction(TS,Vec,TSIFunction,void*); 174089b2837SJed Brown extern PetscErrorCode TSGetIFunction(TS,Vec*,TSIFunction*,void**); 1757087cfbeSBarry Smith extern PetscErrorCode TSSetIJacobian(TS,Mat,Mat,TSIJacobian,void*); 1767087cfbeSBarry Smith extern PetscErrorCode TSGetIJacobian(TS,Mat*,Mat*,TSIJacobian*,void**); 177316643e7SJed Brown 1780e4ef248SJed Brown extern PetscErrorCode TSComputeRHSFunctionLinear(TS,PetscReal,Vec,Vec,void*); 1790e4ef248SJed Brown extern PetscErrorCode TSComputeRHSJacobianConstant(TS,PetscReal,Vec,Mat*,Mat*,MatStructure*,void*); 1800026cea9SSean Farley extern PetscErrorCode TSComputeIFunctionLinear(TS,PetscReal,Vec,Vec,Vec,void*); 1810026cea9SSean Farley extern PetscErrorCode TSComputeIJacobianConstant(TS,PetscReal,Vec,Vec,PetscReal,Mat*,Mat*,MatStructure*,void*); 182e34be4c2SBarry Smith 1837087cfbeSBarry Smith extern PetscErrorCode TSSetPreStep(TS, PetscErrorCode (*)(TS)); 1847087cfbeSBarry Smith extern PetscErrorCode TSSetPostStep(TS, PetscErrorCode (*)(TS)); 1857087cfbeSBarry Smith extern PetscErrorCode TSPreStep(TS); 1867087cfbeSBarry Smith extern PetscErrorCode TSPostStep(TS); 187cd652676SJed Brown extern PetscErrorCode TSSetRetainStages(TS,PetscBool); 188cd652676SJed Brown extern PetscErrorCode TSInterpolate(TS,PetscReal,Vec); 1891c3436cfSJed Brown extern PetscErrorCode TSSetTolerances(TS,PetscReal,Vec,PetscReal,Vec); 1901c3436cfSJed Brown extern PetscErrorCode TSErrorNormWRMS(TS,Vec,PetscReal*); 1918d59e960SJed Brown extern PetscErrorCode TSSetCFLTimeLocal(TS,PetscReal); 1928d59e960SJed Brown extern PetscErrorCode TSGetCFLTime(TS,PetscReal*); 193000e7ae3SMatthew Knepley 1947087cfbeSBarry Smith extern PetscErrorCode TSPseudoSetTimeStep(TS,PetscErrorCode(*)(TS,PetscReal*,void*),void*); 1957087cfbeSBarry Smith extern PetscErrorCode TSPseudoDefaultTimeStep(TS,PetscReal*,void*); 1967087cfbeSBarry Smith extern PetscErrorCode TSPseudoComputeTimeStep(TS,PetscReal *); 197ad24ef9bSSatish Balay extern PetscErrorCode TSPseudoSetMaxTimeStep(TS,PetscReal); 198d8345c25SBarry Smith 1997087cfbeSBarry Smith extern PetscErrorCode TSPseudoSetVerifyTimeStep(TS,PetscErrorCode(*)(TS,Vec,void*,PetscReal*,PetscBool *),void*); 2007087cfbeSBarry Smith extern PetscErrorCode TSPseudoDefaultVerifyTimeStep(TS,Vec,void*,PetscReal*,PetscBool *); 2017087cfbeSBarry Smith extern PetscErrorCode TSPseudoVerifyTimeStep(TS,Vec,PetscReal*,PetscBool *); 2027087cfbeSBarry Smith extern PetscErrorCode TSPseudoSetTimeStepIncrement(TS,PetscReal); 2037087cfbeSBarry Smith extern PetscErrorCode TSPseudoIncrementDtFromInitialDt(TS); 20421c89e3eSBarry Smith 2057087cfbeSBarry Smith extern PetscErrorCode TSPythonSetType(TS,const char[]); 2061d6018f0SLisandro Dalcin 2077087cfbeSBarry Smith extern PetscErrorCode TSComputeRHSFunction(TS,PetscReal,Vec,Vec); 2087087cfbeSBarry Smith extern PetscErrorCode TSComputeRHSJacobian(TS,PetscReal,Vec,Mat*,Mat*,MatStructure*); 209214bc6a2SJed Brown extern PetscErrorCode TSComputeIFunction(TS,PetscReal,Vec,Vec,Vec,PetscBool); 210214bc6a2SJed Brown extern PetscErrorCode TSComputeIJacobian(TS,PetscReal,Vec,Vec,PetscReal,Mat*,Mat*,MatStructure*,PetscBool); 211818ad0c1SBarry Smith 212d6ebe24aSShri Abhyankar extern PetscErrorCode TSVISetVariableBounds(TS,Vec,Vec); 213d6ebe24aSShri Abhyankar 214bdad233fSMatthew Knepley /* Dynamic creation and loading functions */ 215b0a32e0cSBarry Smith extern PetscFList TSList; 216ace3abfcSBarry Smith extern PetscBool TSRegisterAllCalled; 2177087cfbeSBarry Smith extern PetscErrorCode TSGetType(TS,const TSType*); 2187087cfbeSBarry Smith extern PetscErrorCode TSSetType(TS,const TSType); 2197087cfbeSBarry Smith extern PetscErrorCode TSRegister(const char[], const char[], const char[], PetscErrorCode (*)(TS)); 2207087cfbeSBarry Smith extern PetscErrorCode TSRegisterAll(const char[]); 2217087cfbeSBarry Smith extern PetscErrorCode TSRegisterDestroy(void); 22230de9b25SBarry Smith 22330de9b25SBarry Smith /*MC 22430de9b25SBarry Smith TSRegisterDynamic - Adds a creation method to the TS package. 22530de9b25SBarry Smith 22630de9b25SBarry Smith Synopsis: 2271890ba74SBarry Smith PetscErrorCode TSRegisterDynamic(const char *name, const char *path, const char *func_name, PetscErrorCode (*create_func)(TS)) 22830de9b25SBarry Smith 22930de9b25SBarry Smith Not Collective 23030de9b25SBarry Smith 23130de9b25SBarry Smith Input Parameters: 23230de9b25SBarry Smith + name - The name of a new user-defined creation routine 23330de9b25SBarry Smith . path - The path (either absolute or relative) of the library containing this routine 23430de9b25SBarry Smith . func_name - The name of the creation routine 23530de9b25SBarry Smith - create_func - The creation routine itself 23630de9b25SBarry Smith 23730de9b25SBarry Smith Notes: 23830de9b25SBarry Smith TSRegisterDynamic() may be called multiple times to add several user-defined tses. 23930de9b25SBarry Smith 24030de9b25SBarry Smith If dynamic libraries are used, then the fourth input argument (create_func) is ignored. 24130de9b25SBarry Smith 24230de9b25SBarry Smith Sample usage: 24330de9b25SBarry Smith .vb 24430de9b25SBarry Smith TSRegisterDynamic("my_ts", "/home/username/my_lib/lib/libO/solaris/libmy.a", "MyTSCreate", MyTSCreate); 24530de9b25SBarry Smith .ve 24630de9b25SBarry Smith 24730de9b25SBarry Smith Then, your ts type can be chosen with the procedural interface via 24830de9b25SBarry Smith .vb 24965f2c13aSKai Germaschewski TS ts; 25065f2c13aSKai Germaschewski TSCreate(MPI_Comm, &ts); 25165f2c13aSKai Germaschewski TSSetType(ts, "my_ts") 25230de9b25SBarry Smith .ve 25330de9b25SBarry Smith or at runtime via the option 25430de9b25SBarry Smith .vb 25530de9b25SBarry Smith -ts_type my_ts 25630de9b25SBarry Smith .ve 25730de9b25SBarry Smith 258ab901514SBarry Smith Notes: $PETSC_ARCH occuring in pathname will be replaced with appropriate values. 25930de9b25SBarry Smith If your function is not being put into a shared library then use TSRegister() instead 26030de9b25SBarry Smith 26130de9b25SBarry Smith Level: advanced 26230de9b25SBarry Smith 26330de9b25SBarry Smith .keywords: TS, register 26430de9b25SBarry Smith .seealso: TSRegisterAll(), TSRegisterDestroy() 26530de9b25SBarry Smith M*/ 266aa482453SBarry Smith #if defined(PETSC_USE_DYNAMIC_LIBRARIES) 267f1af5d2fSBarry Smith #define TSRegisterDynamic(a,b,c,d) TSRegister(a,b,c,0) 2686df38c32SLois Curfman McInnes #else 269f1af5d2fSBarry Smith #define TSRegisterDynamic(a,b,c,d) TSRegister(a,b,c,d) 2706df38c32SLois Curfman McInnes #endif 2716df38c32SLois Curfman McInnes 2727087cfbeSBarry Smith extern PetscErrorCode TSGetSNES(TS,SNES*); 2737087cfbeSBarry Smith extern PetscErrorCode TSGetKSP(TS,KSP*); 274818ad0c1SBarry Smith 2757087cfbeSBarry Smith extern PetscErrorCode TSView(TS,PetscViewer); 27621c89e3eSBarry Smith 2777087cfbeSBarry Smith extern PetscErrorCode TSSetApplicationContext(TS,void *); 278e71120c6SJed Brown extern PetscErrorCode TSGetApplicationContext(TS,void *); 27921c89e3eSBarry Smith 2807087cfbeSBarry Smith extern PetscErrorCode TSMonitorLGCreate(const char[],const char[],int,int,int,int,PetscDrawLG *); 2817087cfbeSBarry Smith extern PetscErrorCode TSMonitorLG(TS,PetscInt,PetscReal,Vec,void *); 282fcfd50ebSBarry Smith extern PetscErrorCode TSMonitorLGDestroy(PetscDrawLG*); 2833914022bSBarry Smith 28476bdecfbSBarry Smith /*J 285815f1ad5SJed Brown TSSSPType - string with the name of TSSSP scheme. 286815f1ad5SJed Brown 287815f1ad5SJed Brown Level: beginner 288815f1ad5SJed Brown 289815f1ad5SJed Brown .seealso: TSSSPSetType(), TS 29076bdecfbSBarry Smith J*/ 291815f1ad5SJed Brown #define TSSSPType char* 292815f1ad5SJed Brown #define TSSSPRKS2 "rks2" 293815f1ad5SJed Brown #define TSSSPRKS3 "rks3" 294815f1ad5SJed Brown #define TSSSPRK104 "rk104" 295815f1ad5SJed Brown 296815f1ad5SJed Brown extern PetscErrorCode TSSSPSetType(TS,const TSSSPType); 297815f1ad5SJed Brown extern PetscErrorCode TSSSPGetType(TS,const TSSSPType*); 298815f1ad5SJed Brown extern PetscErrorCode TSSSPSetNumStages(TS,PetscInt); 299815f1ad5SJed Brown extern PetscErrorCode TSSSPGetNumStages(TS,PetscInt*); 300815f1ad5SJed Brown 301ed657a08SJed Brown /*S 30284df9cb4SJed Brown TSAdapt - Abstract object that manages time-step adaptivity 30384df9cb4SJed Brown 30484df9cb4SJed Brown Level: beginner 30584df9cb4SJed Brown 30684df9cb4SJed Brown .seealso: TS, TSAdaptCreate(), TSAdaptType 30784df9cb4SJed Brown S*/ 30884df9cb4SJed Brown typedef struct _p_TSAdapt *TSAdapt; 30984df9cb4SJed Brown 31084df9cb4SJed Brown /*E 31184df9cb4SJed Brown TSAdaptType - String with the name of TSAdapt scheme or the creation function 31284df9cb4SJed Brown with an optional dynamic library name, for example 31384df9cb4SJed Brown http://www.mcs.anl.gov/petsc/lib.a:mytsgladaptcreate() 31484df9cb4SJed Brown 31584df9cb4SJed Brown Level: beginner 31684df9cb4SJed Brown 31784df9cb4SJed Brown .seealso: TSAdaptSetType(), TS 31884df9cb4SJed Brown E*/ 31984df9cb4SJed Brown #define TSAdaptType char* 32084df9cb4SJed Brown #define TSADAPTBASIC "basic" 321b0f836d7SJed Brown #define TSADAPTNONE "none" 3228d59e960SJed Brown #define TSADAPTCFL "cfl" 32384df9cb4SJed Brown 32484df9cb4SJed Brown /*MC 32584df9cb4SJed Brown TSAdaptRegisterDynamic - adds a TSAdapt implementation 32684df9cb4SJed Brown 32784df9cb4SJed Brown Synopsis: 32884df9cb4SJed Brown PetscErrorCode TSAdaptRegisterDynamic(const char *name_scheme,const char *path,const char *name_create,PetscErrorCode (*routine_create)(TS)) 32984df9cb4SJed Brown 33084df9cb4SJed Brown Not Collective 33184df9cb4SJed Brown 33284df9cb4SJed Brown Input Parameters: 33384df9cb4SJed Brown + name_scheme - name of user-defined adaptivity scheme 33484df9cb4SJed Brown . path - path (either absolute or relative) the library containing this scheme 33584df9cb4SJed Brown . name_create - name of routine to create method context 33684df9cb4SJed Brown - routine_create - routine to create method context 33784df9cb4SJed Brown 33884df9cb4SJed Brown Notes: 33984df9cb4SJed Brown TSAdaptRegisterDynamic() may be called multiple times to add several user-defined families. 34084df9cb4SJed Brown 34184df9cb4SJed Brown If dynamic libraries are used, then the fourth input argument (routine_create) 34284df9cb4SJed Brown is ignored. 34384df9cb4SJed Brown 34484df9cb4SJed Brown Sample usage: 34584df9cb4SJed Brown .vb 34684df9cb4SJed Brown TSAdaptRegisterDynamic("my_scheme",/home/username/my_lib/lib/libO/solaris/mylib.a, 34784df9cb4SJed Brown "MySchemeCreate",MySchemeCreate); 34884df9cb4SJed Brown .ve 34984df9cb4SJed Brown 35084df9cb4SJed Brown Then, your scheme can be chosen with the procedural interface via 35184df9cb4SJed Brown $ TSAdaptSetType(ts,"my_scheme") 35284df9cb4SJed Brown or at runtime via the option 35384df9cb4SJed Brown $ -ts_adapt_type my_scheme 35484df9cb4SJed Brown 35584df9cb4SJed Brown Level: advanced 35684df9cb4SJed Brown 35784df9cb4SJed Brown Notes: Environmental variables such as ${PETSC_ARCH}, ${PETSC_DIR}, ${PETSC_LIB_DIR}, 35884df9cb4SJed Brown and others of the form ${any_environmental_variable} occuring in pathname will be 35984df9cb4SJed Brown replaced with appropriate values. 36084df9cb4SJed Brown 36184df9cb4SJed Brown .keywords: TSAdapt, register 36284df9cb4SJed Brown 36384df9cb4SJed Brown .seealso: TSAdaptRegisterAll() 36484df9cb4SJed Brown M*/ 36584df9cb4SJed Brown #if defined(PETSC_USE_DYNAMIC_LIBRARIES) 36684df9cb4SJed Brown # define TSAdaptRegisterDynamic(a,b,c,d) TSAdaptRegister(a,b,c,0) 36784df9cb4SJed Brown #else 36884df9cb4SJed Brown # define TSAdaptRegisterDynamic(a,b,c,d) TSAdaptRegister(a,b,c,d) 36984df9cb4SJed Brown #endif 37084df9cb4SJed Brown 37184df9cb4SJed Brown extern PetscErrorCode TSGetAdapt(TS,TSAdapt*); 37284df9cb4SJed Brown extern PetscErrorCode TSAdaptRegister(const char[],const char[],const char[],PetscErrorCode (*)(TSAdapt)); 37384df9cb4SJed Brown extern PetscErrorCode TSAdaptRegisterAll(const char[]); 37484df9cb4SJed Brown extern PetscErrorCode TSAdaptRegisterDestroy(void); 37584df9cb4SJed Brown extern PetscErrorCode TSAdaptInitializePackage(const char[]); 37684df9cb4SJed Brown extern PetscErrorCode TSAdaptFinalizePackage(void); 37784df9cb4SJed Brown extern PetscErrorCode TSAdaptCreate(MPI_Comm,TSAdapt*); 37884df9cb4SJed Brown extern PetscErrorCode TSAdaptSetType(TSAdapt,const TSAdaptType); 37984df9cb4SJed Brown extern PetscErrorCode TSAdaptSetOptionsPrefix(TSAdapt,const char[]); 38084df9cb4SJed Brown extern PetscErrorCode TSAdaptCandidatesClear(TSAdapt); 38184df9cb4SJed Brown extern PetscErrorCode TSAdaptCandidateAdd(TSAdapt,const char[],PetscInt,PetscInt,PetscReal,PetscReal,PetscBool); 38284df9cb4SJed Brown extern PetscErrorCode TSAdaptCandidatesGet(TSAdapt,PetscInt*,const PetscInt**,const PetscInt**,const PetscReal**,const PetscReal**); 38384df9cb4SJed Brown extern PetscErrorCode TSAdaptChoose(TSAdapt,TS,PetscReal,PetscInt*,PetscReal*,PetscBool*); 38484df9cb4SJed Brown extern PetscErrorCode TSAdaptView(TSAdapt,PetscViewer); 38584df9cb4SJed Brown extern PetscErrorCode TSAdaptSetFromOptions(TSAdapt); 38684df9cb4SJed Brown extern PetscErrorCode TSAdaptDestroy(TSAdapt*); 3871c3436cfSJed Brown extern PetscErrorCode TSAdaptSetMonitor(TSAdapt,PetscBool); 3881c3436cfSJed Brown extern PetscErrorCode TSAdaptSetStepLimits(TSAdapt,PetscReal,PetscReal); 38984df9cb4SJed Brown 39084df9cb4SJed Brown /*S 391ed657a08SJed Brown TSGLAdapt - Abstract object that manages time-step adaptivity 392ed657a08SJed Brown 393ed657a08SJed Brown Level: beginner 394ed657a08SJed Brown 39584df9cb4SJed Brown Developer Notes: 39684df9cb4SJed Brown This functionality should be replaced by the TSAdapt. 39784df9cb4SJed Brown 398ed657a08SJed Brown .seealso: TSGL, TSGLAdaptCreate(), TSGLAdaptType 399ed657a08SJed Brown S*/ 400ed657a08SJed Brown typedef struct _p_TSGLAdapt *TSGLAdapt; 401ed657a08SJed Brown 40276bdecfbSBarry Smith /*J 403ed657a08SJed Brown TSGLAdaptType - String with the name of TSGLAdapt scheme or the creation function 404ed657a08SJed Brown with an optional dynamic library name, for example 405ed657a08SJed Brown http://www.mcs.anl.gov/petsc/lib.a:mytsgladaptcreate() 406ed657a08SJed Brown 407ed657a08SJed Brown Level: beginner 408ed657a08SJed Brown 409ed657a08SJed Brown .seealso: TSGLAdaptSetType(), TS 41076bdecfbSBarry Smith J*/ 411ed657a08SJed Brown #define TSGLAdaptType char* 412ed657a08SJed Brown #define TSGLADAPT_NONE "none" 413ed657a08SJed Brown #define TSGLADAPT_SIZE "size" 414ed657a08SJed Brown #define TSGLADAPT_BOTH "both" 415ed657a08SJed Brown 416ed657a08SJed Brown /*MC 417ed657a08SJed Brown TSGLAdaptRegisterDynamic - adds a TSGLAdapt implementation 418ed657a08SJed Brown 419ed657a08SJed Brown Synopsis: 4201890ba74SBarry Smith PetscErrorCode TSGLAdaptRegisterDynamic(const char *name_scheme,const char *path,const char *name_create,PetscErrorCode (*routine_create)(TS)) 421ed657a08SJed Brown 422ed657a08SJed Brown Not Collective 423ed657a08SJed Brown 424ed657a08SJed Brown Input Parameters: 425ed657a08SJed Brown + name_scheme - name of user-defined adaptivity scheme 426ed657a08SJed Brown . path - path (either absolute or relative) the library containing this scheme 427ed657a08SJed Brown . name_create - name of routine to create method context 428ed657a08SJed Brown - routine_create - routine to create method context 429ed657a08SJed Brown 430ed657a08SJed Brown Notes: 431ed657a08SJed Brown TSGLAdaptRegisterDynamic() may be called multiple times to add several user-defined families. 432ed657a08SJed Brown 433ed657a08SJed Brown If dynamic libraries are used, then the fourth input argument (routine_create) 434ed657a08SJed Brown is ignored. 435ed657a08SJed Brown 436ed657a08SJed Brown Sample usage: 437ed657a08SJed Brown .vb 438ed657a08SJed Brown TSGLAdaptRegisterDynamic("my_scheme",/home/username/my_lib/lib/libO/solaris/mylib.a, 439ed657a08SJed Brown "MySchemeCreate",MySchemeCreate); 440ed657a08SJed Brown .ve 441ed657a08SJed Brown 442ed657a08SJed Brown Then, your scheme can be chosen with the procedural interface via 443ed657a08SJed Brown $ TSGLAdaptSetType(ts,"my_scheme") 444ed657a08SJed Brown or at runtime via the option 445ed657a08SJed Brown $ -ts_adapt_type my_scheme 446ed657a08SJed Brown 447ed657a08SJed Brown Level: advanced 448ed657a08SJed Brown 449ed657a08SJed Brown Notes: Environmental variables such as ${PETSC_ARCH}, ${PETSC_DIR}, ${PETSC_LIB_DIR}, 450ed657a08SJed Brown and others of the form ${any_environmental_variable} occuring in pathname will be 451ed657a08SJed Brown replaced with appropriate values. 452ed657a08SJed Brown 453ed657a08SJed Brown .keywords: TSGLAdapt, register 454ed657a08SJed Brown 455ed657a08SJed Brown .seealso: TSGLAdaptRegisterAll() 456ed657a08SJed Brown M*/ 457ed657a08SJed Brown #if defined(PETSC_USE_DYNAMIC_LIBRARIES) 458ed657a08SJed Brown # define TSGLAdaptRegisterDynamic(a,b,c,d) TSGLAdaptRegister(a,b,c,0) 459ed657a08SJed Brown #else 460ed657a08SJed Brown # define TSGLAdaptRegisterDynamic(a,b,c,d) TSGLAdaptRegister(a,b,c,d) 461ed657a08SJed Brown #endif 462ed657a08SJed Brown 4637087cfbeSBarry Smith extern PetscErrorCode TSGLAdaptRegister(const char[],const char[],const char[],PetscErrorCode (*)(TSGLAdapt)); 4647087cfbeSBarry Smith extern PetscErrorCode TSGLAdaptRegisterAll(const char[]); 4657087cfbeSBarry Smith extern PetscErrorCode TSGLAdaptRegisterDestroy(void); 4667087cfbeSBarry Smith extern PetscErrorCode TSGLAdaptInitializePackage(const char[]); 4677087cfbeSBarry Smith extern PetscErrorCode TSGLAdaptFinalizePackage(void); 4687087cfbeSBarry Smith extern PetscErrorCode TSGLAdaptCreate(MPI_Comm,TSGLAdapt*); 4697087cfbeSBarry Smith extern PetscErrorCode TSGLAdaptSetType(TSGLAdapt,const TSGLAdaptType); 4707087cfbeSBarry Smith extern PetscErrorCode TSGLAdaptSetOptionsPrefix(TSGLAdapt,const char[]); 4717087cfbeSBarry Smith extern PetscErrorCode TSGLAdaptChoose(TSGLAdapt,PetscInt,const PetscInt[],const PetscReal[],const PetscReal[],PetscInt,PetscReal,PetscReal,PetscInt*,PetscReal*,PetscBool *); 4727087cfbeSBarry Smith extern PetscErrorCode TSGLAdaptView(TSGLAdapt,PetscViewer); 4737087cfbeSBarry Smith extern PetscErrorCode TSGLAdaptSetFromOptions(TSGLAdapt); 474fcfd50ebSBarry Smith extern PetscErrorCode TSGLAdaptDestroy(TSGLAdapt*); 475ed657a08SJed Brown 47676bdecfbSBarry Smith /*J 477ed657a08SJed Brown TSGLAcceptType - String with the name of TSGLAccept scheme or the function 478ed657a08SJed Brown with an optional dynamic library name, for example 479ed657a08SJed Brown http://www.mcs.anl.gov/petsc/lib.a:mytsglaccept() 480ed657a08SJed Brown 481ed657a08SJed Brown Level: beginner 482ed657a08SJed Brown 483ed657a08SJed Brown .seealso: TSGLSetAcceptType(), TS 48476bdecfbSBarry Smith J*/ 485ed657a08SJed Brown #define TSGLAcceptType char* 486ed657a08SJed Brown #define TSGLACCEPT_ALWAYS "always" 487ed657a08SJed Brown 488ace3abfcSBarry Smith typedef PetscErrorCode (*TSGLAcceptFunction)(TS,PetscReal,PetscReal,const PetscReal[],PetscBool *); 4897087cfbeSBarry Smith extern PetscErrorCode TSGLAcceptRegister(const char[],const char[],const char[],TSGLAcceptFunction); 490ed657a08SJed Brown 491ed657a08SJed Brown /*MC 492ed657a08SJed Brown TSGLAcceptRegisterDynamic - adds a TSGL acceptance scheme 493ed657a08SJed Brown 494ed657a08SJed Brown Synopsis: 4951890ba74SBarry Smith PetscErrorCode TSGLAcceptRegisterDynamic(const char *name_scheme,const char *path,const char *name_create,PetscErrorCode (*routine_create)(TS)) 496ed657a08SJed Brown 497ed657a08SJed Brown Not Collective 498ed657a08SJed Brown 499ed657a08SJed Brown Input Parameters: 500ed657a08SJed Brown + name_scheme - name of user-defined acceptance scheme 501ed657a08SJed Brown . path - path (either absolute or relative) the library containing this scheme 502ed657a08SJed Brown . name_create - name of routine to create method context 503ed657a08SJed Brown - routine_create - routine to create method context 504ed657a08SJed Brown 505ed657a08SJed Brown Notes: 506ed657a08SJed Brown TSGLAcceptRegisterDynamic() may be called multiple times to add several user-defined families. 507ed657a08SJed Brown 508ed657a08SJed Brown If dynamic libraries are used, then the fourth input argument (routine_create) 509ed657a08SJed Brown is ignored. 510ed657a08SJed Brown 511ed657a08SJed Brown Sample usage: 512ed657a08SJed Brown .vb 513ed657a08SJed Brown TSGLAcceptRegisterDynamic("my_scheme",/home/username/my_lib/lib/libO/solaris/mylib.a, 514ed657a08SJed Brown "MySchemeCreate",MySchemeCreate); 515ed657a08SJed Brown .ve 516ed657a08SJed Brown 517ed657a08SJed Brown Then, your scheme can be chosen with the procedural interface via 518ed657a08SJed Brown $ TSGLSetAcceptType(ts,"my_scheme") 519ed657a08SJed Brown or at runtime via the option 520ed657a08SJed Brown $ -ts_gl_accept_type my_scheme 521ed657a08SJed Brown 522ed657a08SJed Brown Level: advanced 523ed657a08SJed Brown 524ed657a08SJed Brown Notes: Environmental variables such as ${PETSC_ARCH}, ${PETSC_DIR}, ${PETSC_LIB_DIR}, 525ed657a08SJed Brown and others of the form ${any_environmental_variable} occuring in pathname will be 526ed657a08SJed Brown replaced with appropriate values. 527ed657a08SJed Brown 528ed657a08SJed Brown .keywords: TSGL, TSGLAcceptType, register 529ed657a08SJed Brown 530ed657a08SJed Brown .seealso: TSGLRegisterAll() 531ed657a08SJed Brown M*/ 532ed657a08SJed Brown #if defined(PETSC_USE_DYNAMIC_LIBRARIES) 533ed657a08SJed Brown # define TSGLAcceptRegisterDynamic(a,b,c,d) TSGLAcceptRegister(a,b,c,0) 534ed657a08SJed Brown #else 535ed657a08SJed Brown # define TSGLAcceptRegisterDynamic(a,b,c,d) TSGLAcceptRegister(a,b,c,d) 536ed657a08SJed Brown #endif 537ed657a08SJed Brown 53876bdecfbSBarry Smith /*J 53918b56cb9SJed Brown TSGLType - family of time integration method within the General Linear class 54018b56cb9SJed Brown 54118b56cb9SJed Brown Level: beginner 54218b56cb9SJed Brown 54318b56cb9SJed Brown .seealso: TSGLSetType(), TSGLRegister() 54476bdecfbSBarry Smith J*/ 54518b56cb9SJed Brown #define TSGLType char* 546ed657a08SJed Brown #define TSGL_IRKS "irks" 54718b56cb9SJed Brown 548ed657a08SJed Brown /*MC 549ed657a08SJed Brown TSGLRegisterDynamic - adds a TSGL implementation 55018b56cb9SJed Brown 551ed657a08SJed Brown Synopsis: 5521890ba74SBarry Smith PetscErrorCode TSGLRegisterDynamic(const char *name_scheme,const char *path,const char *name_create,PetscErrorCode (*routine_create)(TS)) 553ed657a08SJed Brown 554ed657a08SJed Brown Not Collective 555ed657a08SJed Brown 556ed657a08SJed Brown Input Parameters: 557ed657a08SJed Brown + name_scheme - name of user-defined general linear scheme 558ed657a08SJed Brown . path - path (either absolute or relative) the library containing this scheme 559ed657a08SJed Brown . name_create - name of routine to create method context 560ed657a08SJed Brown - routine_create - routine to create method context 561ed657a08SJed Brown 562ed657a08SJed Brown Notes: 563ed657a08SJed Brown TSGLRegisterDynamic() may be called multiple times to add several user-defined families. 564ed657a08SJed Brown 565ed657a08SJed Brown If dynamic libraries are used, then the fourth input argument (routine_create) 566ed657a08SJed Brown is ignored. 567ed657a08SJed Brown 568ed657a08SJed Brown Sample usage: 569ed657a08SJed Brown .vb 570ed657a08SJed Brown TSGLRegisterDynamic("my_scheme",/home/username/my_lib/lib/libO/solaris/mylib.a, 571ed657a08SJed Brown "MySchemeCreate",MySchemeCreate); 572ed657a08SJed Brown .ve 573ed657a08SJed Brown 574ed657a08SJed Brown Then, your scheme can be chosen with the procedural interface via 575ed657a08SJed Brown $ TSGLSetType(ts,"my_scheme") 576ed657a08SJed Brown or at runtime via the option 577ed657a08SJed Brown $ -ts_gl_type my_scheme 578ed657a08SJed Brown 579ed657a08SJed Brown Level: advanced 580ed657a08SJed Brown 581ed657a08SJed Brown Notes: Environmental variables such as ${PETSC_ARCH}, ${PETSC_DIR}, ${PETSC_LIB_DIR}, 582ed657a08SJed Brown and others of the form ${any_environmental_variable} occuring in pathname will be 583ed657a08SJed Brown replaced with appropriate values. 584ed657a08SJed Brown 585ed657a08SJed Brown .keywords: TSGL, register 586ed657a08SJed Brown 587ed657a08SJed Brown .seealso: TSGLRegisterAll() 588ed657a08SJed Brown M*/ 589ed657a08SJed Brown #if defined(PETSC_USE_DYNAMIC_LIBRARIES) 590ed657a08SJed Brown # define TSGLRegisterDynamic(a,b,c,d) TSGLRegister(a,b,c,0) 591ed657a08SJed Brown #else 592ed657a08SJed Brown # define TSGLRegisterDynamic(a,b,c,d) TSGLRegister(a,b,c,d) 593ed657a08SJed Brown #endif 594ed657a08SJed Brown 5957087cfbeSBarry Smith extern PetscErrorCode TSGLRegister(const char[],const char[],const char[],PetscErrorCode(*)(TS)); 5967087cfbeSBarry Smith extern PetscErrorCode TSGLRegisterAll(const char[]); 5977087cfbeSBarry Smith extern PetscErrorCode TSGLRegisterDestroy(void); 5987087cfbeSBarry Smith extern PetscErrorCode TSGLInitializePackage(const char[]); 5997087cfbeSBarry Smith extern PetscErrorCode TSGLFinalizePackage(void); 6007087cfbeSBarry Smith extern PetscErrorCode TSGLSetType(TS,const TSGLType); 6017087cfbeSBarry Smith extern PetscErrorCode TSGLGetAdapt(TS,TSGLAdapt*); 6027087cfbeSBarry Smith extern PetscErrorCode TSGLSetAcceptType(TS,const TSGLAcceptType); 60318b56cb9SJed Brown 604020d8f30SJed Brown /*J 605020d8f30SJed Brown TSARKIMEXType - String with the name of an Additive Runge-Kutta IMEX method. 606020d8f30SJed Brown 607020d8f30SJed Brown Level: beginner 608020d8f30SJed Brown 609020d8f30SJed Brown .seealso: TSARKIMEXSetType(), TS, TSARKIMEX, TSARKIMEXRegister() 610020d8f30SJed Brown J*/ 6118a381b04SJed Brown #define TSARKIMEXType char* 6128a381b04SJed Brown #define TSARKIMEX2D "2d" 613a3a57f36SJed Brown #define TSARKIMEX2E "2e" 6146cf0794eSJed Brown #define TSARKIMEXPRSSP2 "prssp2" 6158a381b04SJed Brown #define TSARKIMEX3 "3" 6166cf0794eSJed Brown #define TSARKIMEXBPR3 "bpr3" 6176cf0794eSJed Brown #define TSARKIMEXARS443 "ars443" 6188a381b04SJed Brown #define TSARKIMEX4 "4" 6198a381b04SJed Brown #define TSARKIMEX5 "5" 6208a381b04SJed Brown extern PetscErrorCode TSARKIMEXGetType(TS ts,const TSARKIMEXType*); 6218a381b04SJed Brown extern PetscErrorCode TSARKIMEXSetType(TS ts,const TSARKIMEXType); 6224cc180ffSJed Brown extern PetscErrorCode TSARKIMEXSetFullyImplicit(TS,PetscBool); 623108c343cSJed Brown extern PetscErrorCode TSARKIMEXRegister(const TSARKIMEXType,PetscInt,PetscInt,const PetscReal[],const PetscReal[],const PetscReal[],const PetscReal[],const PetscReal[],const PetscReal[],const PetscReal[],const PetscReal[],PetscInt,const PetscReal[],const PetscReal[]); 6248a381b04SJed Brown extern PetscErrorCode TSARKIMEXFinalizePackage(void); 6258a381b04SJed Brown extern PetscErrorCode TSARKIMEXInitializePackage(const char path[]); 6268a381b04SJed Brown extern PetscErrorCode TSARKIMEXRegisterDestroy(void); 6278a381b04SJed Brown extern PetscErrorCode TSARKIMEXRegisterAll(void); 6288a381b04SJed Brown 629020d8f30SJed Brown /*J 630020d8f30SJed Brown TSRosWType - String with the name of a Rosenbrock-W method. 631020d8f30SJed Brown 632020d8f30SJed Brown Level: beginner 633020d8f30SJed Brown 634020d8f30SJed Brown .seealso: TSRosWSetType(), TS, TSROSW, TSRosWRegister() 635020d8f30SJed Brown J*/ 636e27a552bSJed Brown #define TSRosWType char* 63761692a83SJed Brown #define TSROSW2M "2m" 63861692a83SJed Brown #define TSROSW2P "2p" 639fe7e6d57SJed Brown #define TSROSWRA3PW "ra3pw" 640fe7e6d57SJed Brown #define TSROSWRA34PW2 "ra34pw2" 641ef3c5b88SJed Brown #define TSROSWRODAS3 "rodas3" 642ef3c5b88SJed Brown #define TSROSWSANDU3 "sandu3" 643961f28d0SJed Brown #define TSROSWASSP3P3S1C "assp3p3s1c" 644961f28d0SJed Brown #define TSROSWLASSP3P4S2C "lassp3p4s2c" 645*43b21953SEmil Constantinescu #define TSROSWLLSSP3P4S2C "llssp3p4s2c" 646753f8adbSEmil Constantinescu #define TSROSWARK3 "ark3" 647b1c69cc3SEmil Constantinescu 648e27a552bSJed Brown extern PetscErrorCode TSRosWGetType(TS ts,const TSRosWType*); 649e27a552bSJed Brown extern PetscErrorCode TSRosWSetType(TS ts,const TSRosWType); 65061692a83SJed Brown extern PetscErrorCode TSRosWSetRecomputeJacobian(TS,PetscBool); 651fe7e6d57SJed Brown extern PetscErrorCode TSRosWRegister(const TSRosWType,PetscInt,PetscInt,const PetscReal[],const PetscReal[],const PetscReal[],const PetscReal[]); 652e27a552bSJed Brown extern PetscErrorCode TSRosWFinalizePackage(void); 653e27a552bSJed Brown extern PetscErrorCode TSRosWInitializePackage(const char path[]); 654e27a552bSJed Brown extern PetscErrorCode TSRosWRegisterDestroy(void); 655e27a552bSJed Brown extern PetscErrorCode TSRosWRegisterAll(void); 656e27a552bSJed Brown 65783e2fdc7SBarry Smith /* 6580f3b3ca1SHong Zhang PETSc interface to Sundials 65983e2fdc7SBarry Smith */ 6606dc17ff5SMatthew Knepley #ifdef PETSC_HAVE_SUNDIALS 6616fadb2cdSHong Zhang typedef enum { SUNDIALS_ADAMS=1,SUNDIALS_BDF=2} TSSundialsLmmType; 6626fadb2cdSHong Zhang extern const char *TSSundialsLmmTypes[]; 6636fadb2cdSHong Zhang typedef enum { SUNDIALS_MODIFIED_GS = 1,SUNDIALS_CLASSICAL_GS = 2 } TSSundialsGramSchmidtType; 664a04cf4d8SBarry Smith extern const char *TSSundialsGramSchmidtTypes[]; 6657087cfbeSBarry Smith extern PetscErrorCode TSSundialsSetType(TS,TSSundialsLmmType); 6667087cfbeSBarry Smith extern PetscErrorCode TSSundialsGetPC(TS,PC*); 6677087cfbeSBarry Smith extern PetscErrorCode TSSundialsSetTolerance(TS,PetscReal,PetscReal); 6687087cfbeSBarry Smith extern PetscErrorCode TSSundialsSetMinTimeStep(TS,PetscReal); 6697087cfbeSBarry Smith extern PetscErrorCode TSSundialsSetMaxTimeStep(TS,PetscReal); 6707087cfbeSBarry Smith extern PetscErrorCode TSSundialsGetIterations(TS,PetscInt *,PetscInt *); 6717087cfbeSBarry Smith extern PetscErrorCode TSSundialsSetGramSchmidtType(TS,TSSundialsGramSchmidtType); 6727087cfbeSBarry Smith extern PetscErrorCode TSSundialsSetGMRESRestart(TS,PetscInt); 6737087cfbeSBarry Smith extern PetscErrorCode TSSundialsSetLinearTolerance(TS,PetscReal); 6747087cfbeSBarry Smith extern PetscErrorCode TSSundialsMonitorInternalSteps(TS,PetscBool ); 6757087cfbeSBarry Smith extern PetscErrorCode TSSundialsGetParameters(TS,PetscInt *,long*[],double*[]); 67654c84890SJed Brown extern PetscErrorCode TSSundialsSetMaxl(TS,PetscInt); 6776dc17ff5SMatthew Knepley #endif 67883e2fdc7SBarry Smith 6797087cfbeSBarry Smith extern PetscErrorCode TSRKSetTolerance(TS,PetscReal); 680262ff7bbSBarry Smith 6817087cfbeSBarry Smith extern PetscErrorCode TSThetaSetTheta(TS,PetscReal); 6827087cfbeSBarry Smith extern PetscErrorCode TSThetaGetTheta(TS,PetscReal*); 68326f2ff8fSLisandro Dalcin extern PetscErrorCode TSThetaGetEndpoint(TS,PetscBool*); 684eb284becSJed Brown extern PetscErrorCode TSThetaSetEndpoint(TS,PetscBool); 6850de4c49aSJed Brown 6867087cfbeSBarry Smith extern PetscErrorCode TSAlphaSetAdapt(TS,PetscErrorCode(*)(TS,PetscReal,Vec,Vec,PetscReal*,PetscBool*,void*),void*); 6877087cfbeSBarry Smith extern PetscErrorCode TSAlphaAdaptDefault(TS,PetscReal,Vec,Vec,PetscReal*,PetscBool*,void*); 6887087cfbeSBarry Smith extern PetscErrorCode TSAlphaSetRadius(TS,PetscReal); 6897087cfbeSBarry Smith extern PetscErrorCode TSAlphaSetParams(TS,PetscReal,PetscReal,PetscReal); 6907087cfbeSBarry Smith extern PetscErrorCode TSAlphaGetParams(TS,PetscReal*,PetscReal*,PetscReal*); 69188df8a41SLisandro Dalcin 6927087cfbeSBarry Smith extern PetscErrorCode TSSetDM(TS,DM); 6937087cfbeSBarry Smith extern PetscErrorCode TSGetDM(TS,DM*); 6946c699258SBarry Smith 6957087cfbeSBarry Smith extern PetscErrorCode SNESTSFormFunction(SNES,Vec,Vec,void*); 6967087cfbeSBarry Smith extern PetscErrorCode SNESTSFormJacobian(SNES,Vec,Mat*,Mat*,MatStructure*,void*); 6970f5c6efeSJed Brown 698e9fa29b7SSatish Balay PETSC_EXTERN_CXX_END 699818ad0c1SBarry Smith #endif 700