#include /*I "petscts.h" I*/ #include #include #include #include #include #define SkipSmallValue(a, b, tol) \ if (PetscAbsScalar(a) < tol || PetscAbsScalar(b) < tol) continue; /* Logging support */ PetscClassId TS_CLASSID, DMTS_CLASSID; PetscLogEvent TS_Step, TS_PseudoComputeTimeStep, TS_FunctionEval, TS_JacobianEval; const char *const TSExactFinalTimeOptions[] = {"UNSPECIFIED", "STEPOVER", "INTERPOLATE", "MATCHSTEP", "TSExactFinalTimeOption", "TS_EXACTFINALTIME_", NULL}; static PetscErrorCode TSAdaptSetDefaultType(TSAdapt adapt, TSAdaptType default_type) { PetscFunctionBegin; PetscValidHeaderSpecific(adapt, TSADAPT_CLASSID, 1); PetscValidCharPointer(default_type, 2); if (!((PetscObject)adapt)->type_name) PetscCall(TSAdaptSetType(adapt, default_type)); PetscFunctionReturn(0); } /*@ TSSetFromOptions - Sets various TS parameters from user options. Collective on TS Input Parameter: . ts - the TS context obtained from TSCreate() Options Database Keys: + -ts_type - TSEULER, TSBEULER, TSSUNDIALS, TSPSEUDO, TSCN, TSRK, TSTHETA, TSALPHA, TSGLLE, TSSSP, TSGLEE, TSBSYMP, TSIRK . -ts_save_trajectory - checkpoint the solution at each time-step . -ts_max_time