Lines Matching refs:ts
59 PetscErrorCode TSPseudoComputeFunction(TS ts, Vec solution, Vec *residual, PetscReal *fnorm) in TSPseudoComputeFunction() argument
61 TS_Pseudo *pseudo = (TS_Pseudo *)ts->data; in TSPseudoComputeFunction()
65 PetscValidHeaderSpecific(ts, TS_CLASSID, 1); in TSPseudoComputeFunction()
73 PetscCall(TSComputeIFunction(ts, ts->ptime, solution, pseudo->xdot, pseudo->func, PETSC_FALSE)); in TSPseudoComputeFunction()
82 static PetscErrorCode TSStep_Pseudo(TS ts) in TSStep_Pseudo() argument
84 TS_Pseudo *pseudo = (TS_Pseudo *)ts->data; in TSStep_Pseudo()
87 PetscReal next_time_step = ts->time_step, fnorm; in TSStep_Pseudo()
91 if (ts->steps == 0) pseudo->dt_initial = ts->time_step; in TSStep_Pseudo()
94 while (!ts->reason && pseudo->status != TS_STEP_COMPLETE) { in TSStep_Pseudo()
95 PetscCall(TSPreStage(ts, ts->ptime + ts->time_step)); in TSStep_Pseudo()
96 PetscCall(SNESSolve(ts->snes, NULL, ts->vec_sol)); in TSStep_Pseudo()
97 PetscCall(SNESGetIterationNumber(ts->snes, &nits)); in TSStep_Pseudo()
98 PetscCall(SNESGetLinearSolveIterations(ts->snes, &lits)); in TSStep_Pseudo()
99 ts->snes_its += nits; in TSStep_Pseudo()
100 ts->ksp_its += lits; in TSStep_Pseudo()
102 PetscCall(TSPostStage(ts, ts->ptime + ts->time_step, 0, &ts->vec_sol)); in TSStep_Pseudo()
103 PetscCall(TSGetAdapt(ts, &adapt)); in TSStep_Pseudo()
104 PetscCall(TSAdaptCheckStage(adapt, ts, ts->ptime + ts->time_step, ts->vec_sol, &accept)); in TSStep_Pseudo()
108 PetscCall(TSAdaptChoose(adapt, ts, ts->time_step, NULL, &next_time_step, &accept)); in TSStep_Pseudo()
111 ts->time_step = next_time_step; in TSStep_Pseudo()
114 ts->ptime += ts->time_step; in TSStep_Pseudo()
115 ts->time_step = next_time_step; in TSStep_Pseudo()
119 ts->reject++; in TSStep_Pseudo()
121 PetscCall(VecCopy(ts->vec_sol0, ts->vec_sol)); in TSStep_Pseudo()
122 if (!ts->reason && ++rejections > ts->max_reject && ts->max_reject >= 0) { in TSStep_Pseudo()
123 ts->reason = TS_DIVERGED_STEP_REJECTED; in TSStep_Pseudo()
124 …tscCall(PetscInfo(ts, "Step=%" PetscInt_FMT ", step rejections %" PetscInt_FMT " greater than curr… in TSStep_Pseudo()
130 PetscCall(TSPseudoComputeFunction(ts, ts->vec_sol, NULL, &fnorm)); in TSStep_Pseudo()
133 ts->reason = TS_CONVERGED_PSEUDO_FATOL; in TSStep_Pseudo()
134 …PetscCall(PetscInfo(ts, "Step=%" PetscInt_FMT ", converged since fnorm %g < fatol %g\n", ts->steps… in TSStep_Pseudo()
138 ts->reason = TS_CONVERGED_PSEUDO_FRTOL; in TSStep_Pseudo()
139 …PetscCall(PetscInfo(ts, "Step=%" PetscInt_FMT ", converged since fnorm %g / fnorm_initial %g < frt… in TSStep_Pseudo()
145 static PetscErrorCode TSReset_Pseudo(TS ts) in TSReset_Pseudo() argument
147 TS_Pseudo *pseudo = (TS_Pseudo *)ts->data; in TSReset_Pseudo()
155 static PetscErrorCode TSDestroy_Pseudo(TS ts) in TSDestroy_Pseudo() argument
158 PetscCall(TSReset_Pseudo(ts)); in TSDestroy_Pseudo()
159 PetscCall(PetscFree(ts->data)); in TSDestroy_Pseudo()
160 PetscCall(PetscObjectComposeFunction((PetscObject)ts, "TSPseudoSetVerifyTimeStep_C", NULL)); in TSDestroy_Pseudo()
161 PetscCall(PetscObjectComposeFunction((PetscObject)ts, "TSPseudoSetTimeStepIncrement_C", NULL)); in TSDestroy_Pseudo()
162 PetscCall(PetscObjectComposeFunction((PetscObject)ts, "TSPseudoSetMaxTimeStep_C", NULL)); in TSDestroy_Pseudo()
163 …PetscCall(PetscObjectComposeFunction((PetscObject)ts, "TSPseudoIncrementDtFromInitialDt_C", NULL)); in TSDestroy_Pseudo()
164 PetscCall(PetscObjectComposeFunction((PetscObject)ts, "TSPseudoSetTimeStep_C", NULL)); in TSDestroy_Pseudo()
168 static PetscErrorCode TSPseudoGetXdot(TS ts, Vec X, Vec *Xdot) in TSPseudoGetXdot() argument
170 TS_Pseudo *pseudo = (TS_Pseudo *)ts->data; in TSPseudoGetXdot()
198 static PetscErrorCode SNESTSFormFunction_Pseudo(SNES snes, Vec X, Vec Y, TS ts) in SNESTSFormFunction_Pseudo() argument
204 TS_Pseudo *pseudo = (TS_Pseudo *)ts->data; in SNESTSFormFunction_Pseudo()
205 const PetscScalar mdt = 1.0 / ts->time_step; in SNESTSFormFunction_Pseudo()
213 PetscValidHeaderSpecific(ts, TS_CLASSID, 4); in SNESTSFormFunction_Pseudo()
215 PetscCall(TSGetDM(ts, &dm)); in SNESTSFormFunction_Pseudo()
218 …PetscCheck(rhsfunction || ifunction, PetscObjectComm((PetscObject)ts), PETSC_ERR_USER, "Must call … in SNESTSFormFunction_Pseudo()
228 PetscCall(VecAXPBYPCZ(pseudo->xdot, -mdt, mdt, 0, ts->vec_sol0, X)); in SNESTSFormFunction_Pseudo()
229 PetscCall(TSComputeIFunction(ts, ts->ptime + ts->time_step, X, pseudo->xdot, Y, PETSC_FALSE)); in SNESTSFormFunction_Pseudo()
243 static PetscErrorCode SNESTSFormJacobian_Pseudo(SNES snes, Vec X, Mat AA, Mat BB, TS ts) in SNESTSFormJacobian_Pseudo() argument
249 PetscCall(TSPseudoGetXdot(ts, X, &Xdot)); in SNESTSFormJacobian_Pseudo()
250 …PetscCall(TSComputeIJacobian(ts, ts->ptime + ts->time_step, X, Xdot, 1. / ts->time_step, AA, BB, P… in SNESTSFormJacobian_Pseudo()
254 static PetscErrorCode TSSetUp_Pseudo(TS ts) in TSSetUp_Pseudo() argument
256 TS_Pseudo *pseudo = (TS_Pseudo *)ts->data; in TSSetUp_Pseudo()
259 PetscCall(VecDuplicate(ts->vec_sol, &pseudo->func)); in TSSetUp_Pseudo()
260 PetscCall(VecDuplicate(ts->vec_sol, &pseudo->xdot)); in TSSetUp_Pseudo()
264 static PetscErrorCode TSPseudoMonitorDefault(TS ts, PetscInt step, PetscReal ptime, Vec v, void *du… in TSPseudoMonitorDefault() argument
266 TS_Pseudo *pseudo = (TS_Pseudo *)ts->data; in TSPseudoMonitorDefault()
270 PetscCall(TSPseudoComputeFunction(ts, ts->vec_sol, NULL, NULL)); in TSPseudoMonitorDefault()
271 PetscCall(PetscViewerASCIIAddTab(viewer, ((PetscObject)ts)->tablevel)); in TSPseudoMonitorDefault()
272 …ntf(viewer, "TS %" PetscInt_FMT " dt %g time %g fnorm %g\n", step, (double)ts->time_step, (double)… in TSPseudoMonitorDefault()
273 PetscCall(PetscViewerASCIISubtractTab(viewer, ((PetscObject)ts)->tablevel)); in TSPseudoMonitorDefault()
277 static PetscErrorCode TSSetFromOptions_Pseudo(TS ts, PetscOptionItems PetscOptionsObject) in TSSetFromOptions_Pseudo() argument
279 TS_Pseudo *pseudo = (TS_Pseudo *)ts->data; in TSSetFromOptions_Pseudo()
287 PetscCall(PetscViewerASCIIOpen(PetscObjectComm((PetscObject)ts), "stdout", &viewer)); in TSSetFromOptions_Pseudo()
288 …PetscCall(TSMonitorSet(ts, TSPseudoMonitorDefault, viewer, (PetscCtxDestroyFn *)PetscViewerDestroy… in TSSetFromOptions_Pseudo()
301 static PetscErrorCode TSView_Pseudo(TS ts, PetscViewer viewer) in TSView_Pseudo() argument
308 TS_Pseudo *pseudo = (TS_Pseudo *)ts->data; in TSView_Pseudo()
334 PetscErrorCode TSPseudoTimeStepDefault(TS ts, PetscReal *newdt, void *dtctx) in TSPseudoTimeStepDefault() argument
336 TS_Pseudo *pseudo = (TS_Pseudo *)ts->data; in TSPseudoTimeStepDefault()
340 PetscCall(TSPseudoComputeFunction(ts, ts->vec_sol, NULL, &fnorm)); in TSPseudoTimeStepDefault()
346 if (fnorm == 0.0) *newdt = 1.e12 * inc * ts->time_step; in TSPseudoTimeStepDefault()
348 else *newdt = inc * ts->time_step * pseudo->fnorm_previous / fnorm; in TSPseudoTimeStepDefault()
354 static PetscErrorCode TSAdaptChoose_TSPseudo(TSAdapt adapt, TS ts, PetscReal h, PetscInt *next_sc, … in TSAdaptChoose_TSPseudo() argument
356 TS_Pseudo *pseudo = (TS_Pseudo *)ts->data; in TSAdaptChoose_TSPseudo()
359 PetscCall(PetscLogEventBegin(TS_PseudoComputeTimeStep, ts, 0, 0, 0)); in TSAdaptChoose_TSPseudo()
360 PetscCallBack("TSPSEUDO callback time step", (*pseudo->dt)(ts, next_h, pseudo->dtctx)); in TSAdaptChoose_TSPseudo()
361 PetscCall(PetscLogEventEnd(TS_PseudoComputeTimeStep, ts, 0, 0, 0)); in TSAdaptChoose_TSPseudo()
370 static PetscErrorCode TSAdaptCheckStage_TSPseudo(TSAdapt adapt, TS ts, PetscReal t, Vec Y, PetscBoo… in TSAdaptCheckStage_TSPseudo() argument
372 TS_Pseudo *pseudo = (TS_Pseudo *)ts->data; in TSAdaptCheckStage_TSPseudo()
377 PetscCall(TSGetTimeStep(ts, &dt)); in TSAdaptCheckStage_TSPseudo()
378 …PetscCallBack("TSPSEUDO callback verify time step", (*pseudo->verify)(ts, Y, pseudo->verifyctx, &d… in TSAdaptCheckStage_TSPseudo()
379 PetscCall(TSSetTimeStep(ts, dt)); in TSAdaptCheckStage_TSPseudo()
428 PetscErrorCode TSPseudoSetVerifyTimeStep(TS ts, PetscErrorCode (*dt)(TS ts, Vec update, PetscCtx ct… in TSPseudoSetVerifyTimeStep() argument
431 PetscValidHeaderSpecific(ts, TS_CLASSID, 1); in TSPseudoSetVerifyTimeStep()
432 …PetscTryMethod(ts, "TSPseudoSetVerifyTimeStep_C", (TS, PetscErrorCode (*)(TS, Vec, void *, PetscRe… in TSPseudoSetVerifyTimeStep()
453 PetscErrorCode TSPseudoSetTimeStepIncrement(TS ts, PetscReal inc) in TSPseudoSetTimeStepIncrement() argument
456 PetscValidHeaderSpecific(ts, TS_CLASSID, 1); in TSPseudoSetTimeStepIncrement()
457 PetscValidLogicalCollectiveReal(ts, inc, 2); in TSPseudoSetTimeStepIncrement()
458 PetscTryMethod(ts, "TSPseudoSetTimeStepIncrement_C", (TS, PetscReal), (ts, inc)); in TSPseudoSetTimeStepIncrement()
479 PetscErrorCode TSPseudoSetMaxTimeStep(TS ts, PetscReal maxdt) in TSPseudoSetMaxTimeStep() argument
482 PetscValidHeaderSpecific(ts, TS_CLASSID, 1); in TSPseudoSetMaxTimeStep()
483 PetscValidLogicalCollectiveReal(ts, maxdt, 2); in TSPseudoSetMaxTimeStep()
484 PetscTryMethod(ts, "TSPseudoSetMaxTimeStep_C", (TS, PetscReal), (ts, maxdt)); in TSPseudoSetMaxTimeStep()
504 PetscErrorCode TSPseudoIncrementDtFromInitialDt(TS ts) in TSPseudoIncrementDtFromInitialDt() argument
507 PetscValidHeaderSpecific(ts, TS_CLASSID, 1); in TSPseudoIncrementDtFromInitialDt()
508 PetscTryMethod(ts, "TSPseudoIncrementDtFromInitialDt_C", (TS), (ts)); in TSPseudoIncrementDtFromInitialDt()
538 PetscErrorCode TSPseudoSetTimeStep(TS ts, PetscErrorCode (*dt)(TS ts, PetscReal *newdt, PetscCtx ct… in TSPseudoSetTimeStep() argument
541 PetscValidHeaderSpecific(ts, TS_CLASSID, 1); in TSPseudoSetTimeStep()
542 …PetscTryMethod(ts, "TSPseudoSetTimeStep_C", (TS, PetscErrorCode (*)(TS, PetscReal *, void *), void… in TSPseudoSetTimeStep()
547 static PetscErrorCode TSPseudoSetVerifyTimeStep_Pseudo(TS ts, FCN1 dt, PetscCtx ctx) in TSPseudoSetVerifyTimeStep_Pseudo() argument
549 TS_Pseudo *pseudo = (TS_Pseudo *)ts->data; in TSPseudoSetVerifyTimeStep_Pseudo()
557 static PetscErrorCode TSPseudoSetTimeStepIncrement_Pseudo(TS ts, PetscReal inc) in TSPseudoSetTimeStepIncrement_Pseudo() argument
559 TS_Pseudo *pseudo = (TS_Pseudo *)ts->data; in TSPseudoSetTimeStepIncrement_Pseudo()
566 static PetscErrorCode TSPseudoSetMaxTimeStep_Pseudo(TS ts, PetscReal maxdt) in TSPseudoSetMaxTimeStep_Pseudo() argument
568 TS_Pseudo *pseudo = (TS_Pseudo *)ts->data; in TSPseudoSetMaxTimeStep_Pseudo()
575 static PetscErrorCode TSPseudoIncrementDtFromInitialDt_Pseudo(TS ts) in TSPseudoIncrementDtFromInitialDt_Pseudo() argument
577 TS_Pseudo *pseudo = (TS_Pseudo *)ts->data; in TSPseudoIncrementDtFromInitialDt_Pseudo()
585 static PetscErrorCode TSPseudoSetTimeStep_Pseudo(TS ts, FCN2 dt, PetscCtx ctx) in TSPseudoSetTimeStep_Pseudo() argument
587 TS_Pseudo *pseudo = (TS_Pseudo *)ts->data; in TSPseudoSetTimeStep_Pseudo()
668 PETSC_EXTERN PetscErrorCode TSCreate_Pseudo(TS ts) in TSCreate_Pseudo() argument
675 ts->ops->reset = TSReset_Pseudo; in TSCreate_Pseudo()
676 ts->ops->destroy = TSDestroy_Pseudo; in TSCreate_Pseudo()
677 ts->ops->view = TSView_Pseudo; in TSCreate_Pseudo()
678 ts->ops->setup = TSSetUp_Pseudo; in TSCreate_Pseudo()
679 ts->ops->step = TSStep_Pseudo; in TSCreate_Pseudo()
680 ts->ops->setfromoptions = TSSetFromOptions_Pseudo; in TSCreate_Pseudo()
681 ts->ops->snesfunction = SNESTSFormFunction_Pseudo; in TSCreate_Pseudo()
682 ts->ops->snesjacobian = SNESTSFormJacobian_Pseudo; in TSCreate_Pseudo()
683 ts->default_adapt_type = TSADAPTTSPSEUDO; in TSCreate_Pseudo()
684 ts->usessnes = PETSC_TRUE; in TSCreate_Pseudo()
688 PetscCall(TSGetSNES(ts, &snes)); in TSCreate_Pseudo()
693 ts->data = (void *)pseudo; in TSCreate_Pseudo()
709 …PetscCall(PetscObjectComposeFunction((PetscObject)ts, "TSPseudoSetVerifyTimeStep_C", TSPseudoSetVe… in TSCreate_Pseudo()
710 …PetscCall(PetscObjectComposeFunction((PetscObject)ts, "TSPseudoSetTimeStepIncrement_C", TSPseudoSe… in TSCreate_Pseudo()
711 …PetscCall(PetscObjectComposeFunction((PetscObject)ts, "TSPseudoSetMaxTimeStep_C", TSPseudoSetMaxTi… in TSCreate_Pseudo()
712 …PetscCall(PetscObjectComposeFunction((PetscObject)ts, "TSPseudoIncrementDtFromInitialDt_C", TSPseu… in TSCreate_Pseudo()
713 …PetscCall(PetscObjectComposeFunction((PetscObject)ts, "TSPseudoSetTimeStep_C", TSPseudoSetTimeStep… in TSCreate_Pseudo()