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*); 38497335746SJed Brown extern PetscErrorCode TSAdaptCheckStage(TSAdapt,TS,PetscBool*); 38584df9cb4SJed Brown extern PetscErrorCode TSAdaptView(TSAdapt,PetscViewer); 38684df9cb4SJed Brown extern PetscErrorCode TSAdaptSetFromOptions(TSAdapt); 38784df9cb4SJed Brown extern PetscErrorCode TSAdaptDestroy(TSAdapt*); 3881c3436cfSJed Brown extern PetscErrorCode TSAdaptSetMonitor(TSAdapt,PetscBool); 3891c3436cfSJed Brown extern PetscErrorCode TSAdaptSetStepLimits(TSAdapt,PetscReal,PetscReal); 39084df9cb4SJed Brown 39184df9cb4SJed Brown /*S 392ed657a08SJed Brown TSGLAdapt - Abstract object that manages time-step adaptivity 393ed657a08SJed Brown 394ed657a08SJed Brown Level: beginner 395ed657a08SJed Brown 39684df9cb4SJed Brown Developer Notes: 39784df9cb4SJed Brown This functionality should be replaced by the TSAdapt. 39884df9cb4SJed Brown 399ed657a08SJed Brown .seealso: TSGL, TSGLAdaptCreate(), TSGLAdaptType 400ed657a08SJed Brown S*/ 401ed657a08SJed Brown typedef struct _p_TSGLAdapt *TSGLAdapt; 402ed657a08SJed Brown 40376bdecfbSBarry Smith /*J 404ed657a08SJed Brown TSGLAdaptType - String with the name of TSGLAdapt scheme or the creation function 405ed657a08SJed Brown with an optional dynamic library name, for example 406ed657a08SJed Brown http://www.mcs.anl.gov/petsc/lib.a:mytsgladaptcreate() 407ed657a08SJed Brown 408ed657a08SJed Brown Level: beginner 409ed657a08SJed Brown 410ed657a08SJed Brown .seealso: TSGLAdaptSetType(), TS 41176bdecfbSBarry Smith J*/ 412ed657a08SJed Brown #define TSGLAdaptType char* 413ed657a08SJed Brown #define TSGLADAPT_NONE "none" 414ed657a08SJed Brown #define TSGLADAPT_SIZE "size" 415ed657a08SJed Brown #define TSGLADAPT_BOTH "both" 416ed657a08SJed Brown 417ed657a08SJed Brown /*MC 418ed657a08SJed Brown TSGLAdaptRegisterDynamic - adds a TSGLAdapt implementation 419ed657a08SJed Brown 420ed657a08SJed Brown Synopsis: 4211890ba74SBarry Smith PetscErrorCode TSGLAdaptRegisterDynamic(const char *name_scheme,const char *path,const char *name_create,PetscErrorCode (*routine_create)(TS)) 422ed657a08SJed Brown 423ed657a08SJed Brown Not Collective 424ed657a08SJed Brown 425ed657a08SJed Brown Input Parameters: 426ed657a08SJed Brown + name_scheme - name of user-defined adaptivity scheme 427ed657a08SJed Brown . path - path (either absolute or relative) the library containing this scheme 428ed657a08SJed Brown . name_create - name of routine to create method context 429ed657a08SJed Brown - routine_create - routine to create method context 430ed657a08SJed Brown 431ed657a08SJed Brown Notes: 432ed657a08SJed Brown TSGLAdaptRegisterDynamic() may be called multiple times to add several user-defined families. 433ed657a08SJed Brown 434ed657a08SJed Brown If dynamic libraries are used, then the fourth input argument (routine_create) 435ed657a08SJed Brown is ignored. 436ed657a08SJed Brown 437ed657a08SJed Brown Sample usage: 438ed657a08SJed Brown .vb 439ed657a08SJed Brown TSGLAdaptRegisterDynamic("my_scheme",/home/username/my_lib/lib/libO/solaris/mylib.a, 440ed657a08SJed Brown "MySchemeCreate",MySchemeCreate); 441ed657a08SJed Brown .ve 442ed657a08SJed Brown 443ed657a08SJed Brown Then, your scheme can be chosen with the procedural interface via 444ed657a08SJed Brown $ TSGLAdaptSetType(ts,"my_scheme") 445ed657a08SJed Brown or at runtime via the option 446ed657a08SJed Brown $ -ts_adapt_type my_scheme 447ed657a08SJed Brown 448ed657a08SJed Brown Level: advanced 449ed657a08SJed Brown 450ed657a08SJed Brown Notes: Environmental variables such as ${PETSC_ARCH}, ${PETSC_DIR}, ${PETSC_LIB_DIR}, 451ed657a08SJed Brown and others of the form ${any_environmental_variable} occuring in pathname will be 452ed657a08SJed Brown replaced with appropriate values. 453ed657a08SJed Brown 454ed657a08SJed Brown .keywords: TSGLAdapt, register 455ed657a08SJed Brown 456ed657a08SJed Brown .seealso: TSGLAdaptRegisterAll() 457ed657a08SJed Brown M*/ 458ed657a08SJed Brown #if defined(PETSC_USE_DYNAMIC_LIBRARIES) 459ed657a08SJed Brown # define TSGLAdaptRegisterDynamic(a,b,c,d) TSGLAdaptRegister(a,b,c,0) 460ed657a08SJed Brown #else 461ed657a08SJed Brown # define TSGLAdaptRegisterDynamic(a,b,c,d) TSGLAdaptRegister(a,b,c,d) 462ed657a08SJed Brown #endif 463ed657a08SJed Brown 4647087cfbeSBarry Smith extern PetscErrorCode TSGLAdaptRegister(const char[],const char[],const char[],PetscErrorCode (*)(TSGLAdapt)); 4657087cfbeSBarry Smith extern PetscErrorCode TSGLAdaptRegisterAll(const char[]); 4667087cfbeSBarry Smith extern PetscErrorCode TSGLAdaptRegisterDestroy(void); 4677087cfbeSBarry Smith extern PetscErrorCode TSGLAdaptInitializePackage(const char[]); 4687087cfbeSBarry Smith extern PetscErrorCode TSGLAdaptFinalizePackage(void); 4697087cfbeSBarry Smith extern PetscErrorCode TSGLAdaptCreate(MPI_Comm,TSGLAdapt*); 4707087cfbeSBarry Smith extern PetscErrorCode TSGLAdaptSetType(TSGLAdapt,const TSGLAdaptType); 4717087cfbeSBarry Smith extern PetscErrorCode TSGLAdaptSetOptionsPrefix(TSGLAdapt,const char[]); 4727087cfbeSBarry Smith extern PetscErrorCode TSGLAdaptChoose(TSGLAdapt,PetscInt,const PetscInt[],const PetscReal[],const PetscReal[],PetscInt,PetscReal,PetscReal,PetscInt*,PetscReal*,PetscBool *); 4737087cfbeSBarry Smith extern PetscErrorCode TSGLAdaptView(TSGLAdapt,PetscViewer); 4747087cfbeSBarry Smith extern PetscErrorCode TSGLAdaptSetFromOptions(TSGLAdapt); 475fcfd50ebSBarry Smith extern PetscErrorCode TSGLAdaptDestroy(TSGLAdapt*); 476ed657a08SJed Brown 47776bdecfbSBarry Smith /*J 478ed657a08SJed Brown TSGLAcceptType - String with the name of TSGLAccept scheme or the function 479ed657a08SJed Brown with an optional dynamic library name, for example 480ed657a08SJed Brown http://www.mcs.anl.gov/petsc/lib.a:mytsglaccept() 481ed657a08SJed Brown 482ed657a08SJed Brown Level: beginner 483ed657a08SJed Brown 484ed657a08SJed Brown .seealso: TSGLSetAcceptType(), TS 48576bdecfbSBarry Smith J*/ 486ed657a08SJed Brown #define TSGLAcceptType char* 487ed657a08SJed Brown #define TSGLACCEPT_ALWAYS "always" 488ed657a08SJed Brown 489ace3abfcSBarry Smith typedef PetscErrorCode (*TSGLAcceptFunction)(TS,PetscReal,PetscReal,const PetscReal[],PetscBool *); 4907087cfbeSBarry Smith extern PetscErrorCode TSGLAcceptRegister(const char[],const char[],const char[],TSGLAcceptFunction); 491ed657a08SJed Brown 492ed657a08SJed Brown /*MC 493ed657a08SJed Brown TSGLAcceptRegisterDynamic - adds a TSGL acceptance scheme 494ed657a08SJed Brown 495ed657a08SJed Brown Synopsis: 4961890ba74SBarry Smith PetscErrorCode TSGLAcceptRegisterDynamic(const char *name_scheme,const char *path,const char *name_create,PetscErrorCode (*routine_create)(TS)) 497ed657a08SJed Brown 498ed657a08SJed Brown Not Collective 499ed657a08SJed Brown 500ed657a08SJed Brown Input Parameters: 501ed657a08SJed Brown + name_scheme - name of user-defined acceptance scheme 502ed657a08SJed Brown . path - path (either absolute or relative) the library containing this scheme 503ed657a08SJed Brown . name_create - name of routine to create method context 504ed657a08SJed Brown - routine_create - routine to create method context 505ed657a08SJed Brown 506ed657a08SJed Brown Notes: 507ed657a08SJed Brown TSGLAcceptRegisterDynamic() may be called multiple times to add several user-defined families. 508ed657a08SJed Brown 509ed657a08SJed Brown If dynamic libraries are used, then the fourth input argument (routine_create) 510ed657a08SJed Brown is ignored. 511ed657a08SJed Brown 512ed657a08SJed Brown Sample usage: 513ed657a08SJed Brown .vb 514ed657a08SJed Brown TSGLAcceptRegisterDynamic("my_scheme",/home/username/my_lib/lib/libO/solaris/mylib.a, 515ed657a08SJed Brown "MySchemeCreate",MySchemeCreate); 516ed657a08SJed Brown .ve 517ed657a08SJed Brown 518ed657a08SJed Brown Then, your scheme can be chosen with the procedural interface via 519ed657a08SJed Brown $ TSGLSetAcceptType(ts,"my_scheme") 520ed657a08SJed Brown or at runtime via the option 521ed657a08SJed Brown $ -ts_gl_accept_type my_scheme 522ed657a08SJed Brown 523ed657a08SJed Brown Level: advanced 524ed657a08SJed Brown 525ed657a08SJed Brown Notes: Environmental variables such as ${PETSC_ARCH}, ${PETSC_DIR}, ${PETSC_LIB_DIR}, 526ed657a08SJed Brown and others of the form ${any_environmental_variable} occuring in pathname will be 527ed657a08SJed Brown replaced with appropriate values. 528ed657a08SJed Brown 529ed657a08SJed Brown .keywords: TSGL, TSGLAcceptType, register 530ed657a08SJed Brown 531ed657a08SJed Brown .seealso: TSGLRegisterAll() 532ed657a08SJed Brown M*/ 533ed657a08SJed Brown #if defined(PETSC_USE_DYNAMIC_LIBRARIES) 534ed657a08SJed Brown # define TSGLAcceptRegisterDynamic(a,b,c,d) TSGLAcceptRegister(a,b,c,0) 535ed657a08SJed Brown #else 536ed657a08SJed Brown # define TSGLAcceptRegisterDynamic(a,b,c,d) TSGLAcceptRegister(a,b,c,d) 537ed657a08SJed Brown #endif 538ed657a08SJed Brown 53976bdecfbSBarry Smith /*J 54018b56cb9SJed Brown TSGLType - family of time integration method within the General Linear class 54118b56cb9SJed Brown 54218b56cb9SJed Brown Level: beginner 54318b56cb9SJed Brown 54418b56cb9SJed Brown .seealso: TSGLSetType(), TSGLRegister() 54576bdecfbSBarry Smith J*/ 54618b56cb9SJed Brown #define TSGLType char* 547ed657a08SJed Brown #define TSGL_IRKS "irks" 54818b56cb9SJed Brown 549ed657a08SJed Brown /*MC 550ed657a08SJed Brown TSGLRegisterDynamic - adds a TSGL implementation 55118b56cb9SJed Brown 552ed657a08SJed Brown Synopsis: 5531890ba74SBarry Smith PetscErrorCode TSGLRegisterDynamic(const char *name_scheme,const char *path,const char *name_create,PetscErrorCode (*routine_create)(TS)) 554ed657a08SJed Brown 555ed657a08SJed Brown Not Collective 556ed657a08SJed Brown 557ed657a08SJed Brown Input Parameters: 558ed657a08SJed Brown + name_scheme - name of user-defined general linear scheme 559ed657a08SJed Brown . path - path (either absolute or relative) the library containing this scheme 560ed657a08SJed Brown . name_create - name of routine to create method context 561ed657a08SJed Brown - routine_create - routine to create method context 562ed657a08SJed Brown 563ed657a08SJed Brown Notes: 564ed657a08SJed Brown TSGLRegisterDynamic() may be called multiple times to add several user-defined families. 565ed657a08SJed Brown 566ed657a08SJed Brown If dynamic libraries are used, then the fourth input argument (routine_create) 567ed657a08SJed Brown is ignored. 568ed657a08SJed Brown 569ed657a08SJed Brown Sample usage: 570ed657a08SJed Brown .vb 571ed657a08SJed Brown TSGLRegisterDynamic("my_scheme",/home/username/my_lib/lib/libO/solaris/mylib.a, 572ed657a08SJed Brown "MySchemeCreate",MySchemeCreate); 573ed657a08SJed Brown .ve 574ed657a08SJed Brown 575ed657a08SJed Brown Then, your scheme can be chosen with the procedural interface via 576ed657a08SJed Brown $ TSGLSetType(ts,"my_scheme") 577ed657a08SJed Brown or at runtime via the option 578ed657a08SJed Brown $ -ts_gl_type my_scheme 579ed657a08SJed Brown 580ed657a08SJed Brown Level: advanced 581ed657a08SJed Brown 582ed657a08SJed Brown Notes: Environmental variables such as ${PETSC_ARCH}, ${PETSC_DIR}, ${PETSC_LIB_DIR}, 583ed657a08SJed Brown and others of the form ${any_environmental_variable} occuring in pathname will be 584ed657a08SJed Brown replaced with appropriate values. 585ed657a08SJed Brown 586ed657a08SJed Brown .keywords: TSGL, register 587ed657a08SJed Brown 588ed657a08SJed Brown .seealso: TSGLRegisterAll() 589ed657a08SJed Brown M*/ 590ed657a08SJed Brown #if defined(PETSC_USE_DYNAMIC_LIBRARIES) 591ed657a08SJed Brown # define TSGLRegisterDynamic(a,b,c,d) TSGLRegister(a,b,c,0) 592ed657a08SJed Brown #else 593ed657a08SJed Brown # define TSGLRegisterDynamic(a,b,c,d) TSGLRegister(a,b,c,d) 594ed657a08SJed Brown #endif 595ed657a08SJed Brown 5967087cfbeSBarry Smith extern PetscErrorCode TSGLRegister(const char[],const char[],const char[],PetscErrorCode(*)(TS)); 5977087cfbeSBarry Smith extern PetscErrorCode TSGLRegisterAll(const char[]); 5987087cfbeSBarry Smith extern PetscErrorCode TSGLRegisterDestroy(void); 5997087cfbeSBarry Smith extern PetscErrorCode TSGLInitializePackage(const char[]); 6007087cfbeSBarry Smith extern PetscErrorCode TSGLFinalizePackage(void); 6017087cfbeSBarry Smith extern PetscErrorCode TSGLSetType(TS,const TSGLType); 6027087cfbeSBarry Smith extern PetscErrorCode TSGLGetAdapt(TS,TSGLAdapt*); 6037087cfbeSBarry Smith extern PetscErrorCode TSGLSetAcceptType(TS,const TSGLAcceptType); 60418b56cb9SJed Brown 605020d8f30SJed Brown /*J 606020d8f30SJed Brown TSARKIMEXType - String with the name of an Additive Runge-Kutta IMEX method. 607020d8f30SJed Brown 608020d8f30SJed Brown Level: beginner 609020d8f30SJed Brown 610020d8f30SJed Brown .seealso: TSARKIMEXSetType(), TS, TSARKIMEX, TSARKIMEXRegister() 611020d8f30SJed Brown J*/ 6128a381b04SJed Brown #define TSARKIMEXType char* 613*1f80e275SEmil Constantinescu #define TSARKIMEXA2 "a2" 614*1f80e275SEmil Constantinescu #define TSARKIMEXL2 "l2" 615*1f80e275SEmil Constantinescu #define TSARKIMEXARS122 "ars122" 616*1f80e275SEmil Constantinescu #define TSARKIMEX2C "2c" 6178a381b04SJed Brown #define TSARKIMEX2D "2d" 618a3a57f36SJed Brown #define TSARKIMEX2E "2e" 6196cf0794eSJed Brown #define TSARKIMEXPRSSP2 "prssp2" 6208a381b04SJed Brown #define TSARKIMEX3 "3" 6216cf0794eSJed Brown #define TSARKIMEXBPR3 "bpr3" 6226cf0794eSJed Brown #define TSARKIMEXARS443 "ars443" 6238a381b04SJed Brown #define TSARKIMEX4 "4" 6248a381b04SJed Brown #define TSARKIMEX5 "5" 6258a381b04SJed Brown extern PetscErrorCode TSARKIMEXGetType(TS ts,const TSARKIMEXType*); 6268a381b04SJed Brown extern PetscErrorCode TSARKIMEXSetType(TS ts,const TSARKIMEXType); 6274cc180ffSJed Brown extern PetscErrorCode TSARKIMEXSetFullyImplicit(TS,PetscBool); 628108c343cSJed 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[]); 6298a381b04SJed Brown extern PetscErrorCode TSARKIMEXFinalizePackage(void); 6308a381b04SJed Brown extern PetscErrorCode TSARKIMEXInitializePackage(const char path[]); 6318a381b04SJed Brown extern PetscErrorCode TSARKIMEXRegisterDestroy(void); 6328a381b04SJed Brown extern PetscErrorCode TSARKIMEXRegisterAll(void); 6338a381b04SJed Brown 634020d8f30SJed Brown /*J 635020d8f30SJed Brown TSRosWType - String with the name of a Rosenbrock-W method. 636020d8f30SJed Brown 637020d8f30SJed Brown Level: beginner 638020d8f30SJed Brown 639020d8f30SJed Brown .seealso: TSRosWSetType(), TS, TSROSW, TSRosWRegister() 640020d8f30SJed Brown J*/ 641e27a552bSJed Brown #define TSRosWType char* 64261692a83SJed Brown #define TSROSW2M "2m" 64361692a83SJed Brown #define TSROSW2P "2p" 644fe7e6d57SJed Brown #define TSROSWRA3PW "ra3pw" 645fe7e6d57SJed Brown #define TSROSWRA34PW2 "ra34pw2" 646ef3c5b88SJed Brown #define TSROSWRODAS3 "rodas3" 647ef3c5b88SJed Brown #define TSROSWSANDU3 "sandu3" 648961f28d0SJed Brown #define TSROSWASSP3P3S1C "assp3p3s1c" 649961f28d0SJed Brown #define TSROSWLASSP3P4S2C "lassp3p4s2c" 65043b21953SEmil Constantinescu #define TSROSWLLSSP3P4S2C "llssp3p4s2c" 651753f8adbSEmil Constantinescu #define TSROSWARK3 "ark3" 6523606a31eSEmil Constantinescu #define TSROSWTHETA1 "theta1" 6533606a31eSEmil Constantinescu #define TSROSWTHETA2 "theta2" 6543606a31eSEmil Constantinescu 655b1c69cc3SEmil Constantinescu 656e27a552bSJed Brown extern PetscErrorCode TSRosWGetType(TS ts,const TSRosWType*); 657e27a552bSJed Brown extern PetscErrorCode TSRosWSetType(TS ts,const TSRosWType); 65861692a83SJed Brown extern PetscErrorCode TSRosWSetRecomputeJacobian(TS,PetscBool); 659f4aed992SEmil Constantinescu extern PetscErrorCode TSRosWRegister(const TSRosWType,PetscInt,PetscInt,const PetscReal[],const PetscReal[],const PetscReal[],const PetscReal[],PetscInt,const PetscReal[]); 660e27a552bSJed Brown extern PetscErrorCode TSRosWFinalizePackage(void); 661e27a552bSJed Brown extern PetscErrorCode TSRosWInitializePackage(const char path[]); 662e27a552bSJed Brown extern PetscErrorCode TSRosWRegisterDestroy(void); 663e27a552bSJed Brown extern PetscErrorCode TSRosWRegisterAll(void); 664e27a552bSJed Brown 66583e2fdc7SBarry Smith /* 6660f3b3ca1SHong Zhang PETSc interface to Sundials 66783e2fdc7SBarry Smith */ 6686dc17ff5SMatthew Knepley #ifdef PETSC_HAVE_SUNDIALS 6696fadb2cdSHong Zhang typedef enum { SUNDIALS_ADAMS=1,SUNDIALS_BDF=2} TSSundialsLmmType; 6706fadb2cdSHong Zhang extern const char *TSSundialsLmmTypes[]; 6716fadb2cdSHong Zhang typedef enum { SUNDIALS_MODIFIED_GS = 1,SUNDIALS_CLASSICAL_GS = 2 } TSSundialsGramSchmidtType; 672a04cf4d8SBarry Smith extern const char *TSSundialsGramSchmidtTypes[]; 6737087cfbeSBarry Smith extern PetscErrorCode TSSundialsSetType(TS,TSSundialsLmmType); 6747087cfbeSBarry Smith extern PetscErrorCode TSSundialsGetPC(TS,PC*); 6757087cfbeSBarry Smith extern PetscErrorCode TSSundialsSetTolerance(TS,PetscReal,PetscReal); 6767087cfbeSBarry Smith extern PetscErrorCode TSSundialsSetMinTimeStep(TS,PetscReal); 6777087cfbeSBarry Smith extern PetscErrorCode TSSundialsSetMaxTimeStep(TS,PetscReal); 6787087cfbeSBarry Smith extern PetscErrorCode TSSundialsGetIterations(TS,PetscInt *,PetscInt *); 6797087cfbeSBarry Smith extern PetscErrorCode TSSundialsSetGramSchmidtType(TS,TSSundialsGramSchmidtType); 6807087cfbeSBarry Smith extern PetscErrorCode TSSundialsSetGMRESRestart(TS,PetscInt); 6817087cfbeSBarry Smith extern PetscErrorCode TSSundialsSetLinearTolerance(TS,PetscReal); 6827087cfbeSBarry Smith extern PetscErrorCode TSSundialsMonitorInternalSteps(TS,PetscBool ); 6837087cfbeSBarry Smith extern PetscErrorCode TSSundialsGetParameters(TS,PetscInt *,long*[],double*[]); 68454c84890SJed Brown extern PetscErrorCode TSSundialsSetMaxl(TS,PetscInt); 6856dc17ff5SMatthew Knepley #endif 68683e2fdc7SBarry Smith 6877087cfbeSBarry Smith extern PetscErrorCode TSRKSetTolerance(TS,PetscReal); 688262ff7bbSBarry Smith 6897087cfbeSBarry Smith extern PetscErrorCode TSThetaSetTheta(TS,PetscReal); 6907087cfbeSBarry Smith extern PetscErrorCode TSThetaGetTheta(TS,PetscReal*); 69126f2ff8fSLisandro Dalcin extern PetscErrorCode TSThetaGetEndpoint(TS,PetscBool*); 692eb284becSJed Brown extern PetscErrorCode TSThetaSetEndpoint(TS,PetscBool); 6930de4c49aSJed Brown 6947087cfbeSBarry Smith extern PetscErrorCode TSAlphaSetAdapt(TS,PetscErrorCode(*)(TS,PetscReal,Vec,Vec,PetscReal*,PetscBool*,void*),void*); 6957087cfbeSBarry Smith extern PetscErrorCode TSAlphaAdaptDefault(TS,PetscReal,Vec,Vec,PetscReal*,PetscBool*,void*); 6967087cfbeSBarry Smith extern PetscErrorCode TSAlphaSetRadius(TS,PetscReal); 6977087cfbeSBarry Smith extern PetscErrorCode TSAlphaSetParams(TS,PetscReal,PetscReal,PetscReal); 6987087cfbeSBarry Smith extern PetscErrorCode TSAlphaGetParams(TS,PetscReal*,PetscReal*,PetscReal*); 69988df8a41SLisandro Dalcin 7007087cfbeSBarry Smith extern PetscErrorCode TSSetDM(TS,DM); 7017087cfbeSBarry Smith extern PetscErrorCode TSGetDM(TS,DM*); 7026c699258SBarry Smith 7037087cfbeSBarry Smith extern PetscErrorCode SNESTSFormFunction(SNES,Vec,Vec,void*); 7047087cfbeSBarry Smith extern PetscErrorCode SNESTSFormJacobian(SNES,Vec,Mat*,Mat*,MatStructure*,void*); 7050f5c6efeSJed Brown 706e9fa29b7SSatish Balay PETSC_EXTERN_CXX_END 707818ad0c1SBarry Smith #endif 708