Lines Matching refs:ts
18 static PetscErrorCode TSSSPGetWorkVectors(TS ts, PetscInt n, Vec **work) in TSSSPGetWorkVectors() argument
20 TS_SSP *ssp = (TS_SSP *)ts->data; in TSSSPGetWorkVectors()
26 PetscCall(VecDuplicateVecs(ts->vec_sol, n, &ssp->work)); in TSSSPGetWorkVectors()
34 static PetscErrorCode TSSSPRestoreWorkVectors(TS ts, PetscInt n, Vec **work) in TSSSPRestoreWorkVectors() argument
36 TS_SSP *ssp = (TS_SSP *)ts->data; in TSSSPRestoreWorkVectors()
53 static PetscErrorCode TSSSPStep_RK_2(TS ts, PetscReal t0, PetscReal dt, Vec sol) in TSSSPStep_RK_2() argument
55 TS_SSP *ssp = (TS_SSP *)ts->data; in TSSSPStep_RK_2()
61 PetscCall(TSSSPGetWorkVectors(ts, 2, &work)); in TSSSPStep_RK_2()
66 PetscCall(TSPreStage(ts, stage_time)); in TSSSPStep_RK_2()
67 PetscCall(TSComputeRHSFunction(ts, stage_time, work[0], F)); in TSSSPStep_RK_2()
70 PetscCall(TSComputeRHSFunction(ts, t0 + dt, work[0], F)); in TSSSPStep_RK_2()
72 PetscCall(TSSSPRestoreWorkVectors(ts, 2, &work)); in TSSSPStep_RK_2()
85 static PetscErrorCode TSSSPStep_RK_3(TS ts, PetscReal t0, PetscReal dt, Vec sol) in TSSSPStep_RK_3() argument
87 TS_SSP *ssp = (TS_SSP *)ts->data; in TSSSPStep_RK_3()
97 PetscCall(TSSSPGetWorkVectors(ts, 3, &work)); in TSSSPStep_RK_3()
103 PetscCall(TSPreStage(ts, stage_time)); in TSSSPStep_RK_3()
104 PetscCall(TSComputeRHSFunction(ts, stage_time, work[0], F)); in TSSSPStep_RK_3()
111 PetscCall(TSPreStage(ts, stage_time)); in TSSSPStep_RK_3()
112 PetscCall(TSComputeRHSFunction(ts, stage_time, work[0], F)); in TSSSPStep_RK_3()
118 PetscCall(TSPreStage(ts, stage_time)); in TSSSPStep_RK_3()
119 PetscCall(TSComputeRHSFunction(ts, stage_time, work[0], F)); in TSSSPStep_RK_3()
126 PetscCall(TSPreStage(ts, stage_time)); in TSSSPStep_RK_3()
127 PetscCall(TSComputeRHSFunction(ts, stage_time, work[0], F)); in TSSSPStep_RK_3()
131 PetscCall(TSSSPRestoreWorkVectors(ts, 3, &work)); in TSSSPStep_RK_3()
144 static PetscErrorCode TSSSPStep_RK_10_4(TS ts, PetscReal t0, PetscReal dt, Vec sol) in TSSSPStep_RK_10_4() argument
152 PetscCall(TSSSPGetWorkVectors(ts, 3, &work)); in TSSSPStep_RK_10_4()
157 PetscCall(TSPreStage(ts, stage_time)); in TSSSPStep_RK_10_4()
158 PetscCall(TSComputeRHSFunction(ts, stage_time, work[0], F)); in TSSSPStep_RK_10_4()
165 PetscCall(TSPreStage(ts, stage_time)); in TSSSPStep_RK_10_4()
166 PetscCall(TSComputeRHSFunction(ts, stage_time, work[0], F)); in TSSSPStep_RK_10_4()
170 PetscCall(TSPreStage(ts, stage_time)); in TSSSPStep_RK_10_4()
171 PetscCall(TSComputeRHSFunction(ts, stage_time, work[0], F)); in TSSSPStep_RK_10_4()
174 PetscCall(TSSSPRestoreWorkVectors(ts, 3, &work)); in TSSSPStep_RK_10_4()
178 static PetscErrorCode TSSetUp_SSP(TS ts) in TSSetUp_SSP() argument
181 PetscCall(TSCheckImplicitTerm(ts)); in TSSetUp_SSP()
182 PetscCall(TSGetAdapt(ts, &ts->adapt)); in TSSetUp_SSP()
183 PetscCall(TSAdaptCandidatesClear(ts->adapt)); in TSSetUp_SSP()
187 static PetscErrorCode TSStep_SSP(TS ts) in TSStep_SSP() argument
189 TS_SSP *ssp = (TS_SSP *)ts->data; in TSStep_SSP()
190 Vec sol = ts->vec_sol; in TSStep_SSP()
192 PetscReal next_time_step = ts->time_step; in TSStep_SSP()
195 PetscCall((*ssp->onestep)(ts, ts->ptime, ts->time_step, sol)); in TSStep_SSP()
196 PetscCall(TSPostStage(ts, ts->ptime, 0, &sol)); in TSStep_SSP()
197 PetscCall(TSAdaptCheckStage(ts->adapt, ts, ts->ptime + ts->time_step, sol, &stageok)); in TSStep_SSP()
199 ts->reason = TS_DIVERGED_STEP_REJECTED; in TSStep_SSP()
203 PetscCall(TSAdaptChoose(ts->adapt, ts, ts->time_step, NULL, &next_time_step, &accept)); in TSStep_SSP()
205 ts->reason = TS_DIVERGED_STEP_REJECTED; in TSStep_SSP()
209 ts->ptime += ts->time_step; in TSStep_SSP()
210 ts->time_step = next_time_step; in TSStep_SSP()
214 static PetscErrorCode TSReset_SSP(TS ts) in TSReset_SSP() argument
216 TS_SSP *ssp = (TS_SSP *)ts->data; in TSReset_SSP()
225 static PetscErrorCode TSDestroy_SSP(TS ts) in TSDestroy_SSP() argument
227 TS_SSP *ssp = (TS_SSP *)ts->data; in TSDestroy_SSP()
230 PetscCall(TSReset_SSP(ts)); in TSDestroy_SSP()
232 PetscCall(PetscFree(ts->data)); in TSDestroy_SSP()
233 PetscCall(PetscObjectComposeFunction((PetscObject)ts, "TSSSPGetType_C", NULL)); in TSDestroy_SSP()
234 PetscCall(PetscObjectComposeFunction((PetscObject)ts, "TSSSPSetType_C", NULL)); in TSDestroy_SSP()
235 PetscCall(PetscObjectComposeFunction((PetscObject)ts, "TSSSPGetNumStages_C", NULL)); in TSDestroy_SSP()
236 PetscCall(PetscObjectComposeFunction((PetscObject)ts, "TSSSPSetNumStages_C", NULL)); in TSDestroy_SSP()
257 PetscErrorCode TSSSPSetType(TS ts, TSSSPType ssptype) in TSSSPSetType() argument
260 PetscValidHeaderSpecific(ts, TS_CLASSID, 1); in TSSSPSetType()
262 PetscTryMethod(ts, "TSSSPSetType_C", (TS, TSSSPType), (ts, ssptype)); in TSSSPSetType()
281 PetscErrorCode TSSSPGetType(TS ts, TSSSPType *type) in TSSSPGetType() argument
284 PetscValidHeaderSpecific(ts, TS_CLASSID, 1); in TSSSPGetType()
285 PetscUseMethod(ts, "TSSSPGetType_C", (TS, TSSSPType *), (ts, type)); in TSSSPGetType()
307 PetscErrorCode TSSSPSetNumStages(TS ts, PetscInt nstages) in TSSSPSetNumStages() argument
310 PetscValidHeaderSpecific(ts, TS_CLASSID, 1); in TSSSPSetNumStages()
311 PetscTryMethod(ts, "TSSSPSetNumStages_C", (TS, PetscInt), (ts, nstages)); in TSSSPSetNumStages()
330 PetscErrorCode TSSSPGetNumStages(TS ts, PetscInt *nstages) in TSSSPGetNumStages() argument
333 PetscValidHeaderSpecific(ts, TS_CLASSID, 1); in TSSSPGetNumStages()
334 PetscUseMethod(ts, "TSSSPGetNumStages_C", (TS, PetscInt *), (ts, nstages)); in TSSSPGetNumStages()
338 static PetscErrorCode TSSSPSetType_SSP(TS ts, TSSSPType type) in TSSSPSetType_SSP() argument
340 TS_SSP *ssp = (TS_SSP *)ts->data; in TSSSPSetType_SSP()
346 …PetscCheck(r, PetscObjectComm((PetscObject)ts), PETSC_ERR_ARG_UNKNOWN_TYPE, "Unknown TS_SSP type %… in TSSSPSetType_SSP()
350 ts->default_adapt_type = TSADAPTNONE; in TSSSPSetType_SSP()
364 static PetscErrorCode TSSSPGetType_SSP(TS ts, TSSSPType *type) in TSSSPGetType_SSP() argument
366 TS_SSP *ssp = (TS_SSP *)ts->data; in TSSSPGetType_SSP()
372 static PetscErrorCode TSSSPSetNumStages_SSP(TS ts, PetscInt nstages) in TSSSPSetNumStages_SSP() argument
374 TS_SSP *ssp = (TS_SSP *)ts->data; in TSSSPSetNumStages_SSP()
380 static PetscErrorCode TSSSPGetNumStages_SSP(TS ts, PetscInt *nstages) in TSSSPGetNumStages_SSP() argument
382 TS_SSP *ssp = (TS_SSP *)ts->data; in TSSSPGetNumStages_SSP()
389 static PetscErrorCode TSSetFromOptions_SSP(TS ts, PetscOptionItems PetscOptionsObject) in TSSetFromOptions_SSP() argument
392 TS_SSP *ssp = (TS_SSP *)ts->data; in TSSetFromOptions_SSP()
399 if (flg) PetscCall(TSSSPSetType(ts, tname)); in TSSetFromOptions_SSP()
406 static PetscErrorCode TSView_SSP(TS ts, PetscViewer viewer) in TSView_SSP() argument
408 TS_SSP *ssp = (TS_SSP *)ts->data; in TSView_SSP()
454 PETSC_EXTERN PetscErrorCode TSCreate_SSP(TS ts) in TSCreate_SSP() argument
461 ts->ops->setup = TSSetUp_SSP; in TSCreate_SSP()
462 ts->ops->step = TSStep_SSP; in TSCreate_SSP()
463 ts->ops->reset = TSReset_SSP; in TSCreate_SSP()
464 ts->ops->destroy = TSDestroy_SSP; in TSCreate_SSP()
465 ts->ops->setfromoptions = TSSetFromOptions_SSP; in TSCreate_SSP()
466 ts->ops->view = TSView_SSP; in TSCreate_SSP()
469 ts->data = (void *)ssp; in TSCreate_SSP()
471 PetscCall(PetscObjectComposeFunction((PetscObject)ts, "TSSSPGetType_C", TSSSPGetType_SSP)); in TSCreate_SSP()
472 PetscCall(PetscObjectComposeFunction((PetscObject)ts, "TSSSPSetType_C", TSSSPSetType_SSP)); in TSCreate_SSP()
473 …PetscCall(PetscObjectComposeFunction((PetscObject)ts, "TSSSPGetNumStages_C", TSSSPGetNumStages_SSP… in TSCreate_SSP()
474 …PetscCall(PetscObjectComposeFunction((PetscObject)ts, "TSSSPSetNumStages_C", TSSSPSetNumStages_SSP… in TSCreate_SSP()
476 PetscCall(TSSSPSetType(ts, TSSSPRKS2)); in TSCreate_SSP()