Lines Matching refs:th

67   TS_Alpha *th = (TS_Alpha *)ts->data;  in TSAlpha2SetPredictor()  local
70 th->predictor = predictor; in TSAlpha2SetPredictor()
71 th->predictor_ctx = ctx; in TSAlpha2SetPredictor()
78 TS_Alpha *th = (TS_Alpha *)ts->data; in TSAlpha_ApplyPredictor() local
81 if (th->predictor) PetscCall(th->predictor(ts, th->X0, th->V0, th->A0, X1, th->predictor_ctx)); in TSAlpha_ApplyPredictor()
82 else PetscCall(VecCopy(th->X0, X1)); in TSAlpha_ApplyPredictor()
88 TS_Alpha *th = (TS_Alpha *)ts->data; in TSAlpha_StageTime() local
91 PetscReal Alpha_m = th->Alpha_m; in TSAlpha_StageTime()
92 PetscReal Alpha_f = th->Alpha_f; in TSAlpha_StageTime()
93 PetscReal Gamma = th->Gamma; in TSAlpha_StageTime()
94 PetscReal Beta = th->Beta; in TSAlpha_StageTime()
97 th->stage_time = t + Alpha_f * dt; in TSAlpha_StageTime()
98 th->shift_V = Gamma / (dt * Beta); in TSAlpha_StageTime()
99 th->shift_A = Alpha_m / (Alpha_f * dt * dt * Beta); in TSAlpha_StageTime()
100 th->scale_F = 1 / Alpha_f; in TSAlpha_StageTime()
106 TS_Alpha *th = (TS_Alpha *)ts->data; in TSAlpha_StageVecs() local
107 Vec X1 = X, V1 = th->V1, A1 = th->A1; in TSAlpha_StageVecs()
108 Vec Xa = th->Xa, Va = th->Va, Aa = th->Aa; in TSAlpha_StageVecs()
109 Vec X0 = th->X0, V0 = th->V0, A0 = th->A0; in TSAlpha_StageVecs()
111 PetscReal Alpha_m = th->Alpha_m; in TSAlpha_StageVecs()
112 PetscReal Alpha_f = th->Alpha_f; in TSAlpha_StageVecs()
113 PetscReal Gamma = th->Gamma; in TSAlpha_StageVecs()
114 PetscReal Beta = th->Beta; in TSAlpha_StageVecs()
157 TS_Alpha *th = (TS_Alpha *)ts->data; in TSAlpha_Restart() local
160 Vec X0 = ts->vec_sol, X1, X2 = th->X1; in TSAlpha_Restart()
161 Vec V0 = ts->vec_dot, V1, V2 = th->V1; in TSAlpha_Restart()
174 th->stage_time = ts->ptime; in TSAlpha_Restart()
175 PetscCall(VecZeroEntries(th->A0)); in TSAlpha_Restart()
178 th->stage_time += ts->time_step; in TSAlpha_Restart()
179 PetscCall(VecCopy(X0, th->X0)); in TSAlpha_Restart()
180 PetscCall(VecCopy(V0, th->V0)); in TSAlpha_Restart()
181 PetscCall(TSPreStage(ts, th->stage_time)); in TSAlpha_Restart()
184 PetscCall(VecCopy(th->V1, V1)); in TSAlpha_Restart()
185 PetscCall(TSPostStage(ts, th->stage_time, 0, &X1)); in TSAlpha_Restart()
186 PetscCall(TSAdaptCheckStage(ts->adapt, ts, th->stage_time, X1, &stageok)); in TSAlpha_Restart()
190 th->stage_time += ts->time_step; in TSAlpha_Restart()
191 PetscCall(VecCopy(X1, th->X0)); in TSAlpha_Restart()
192 PetscCall(VecCopy(V1, th->V0)); in TSAlpha_Restart()
193 PetscCall(TSPreStage(ts, th->stage_time)); in TSAlpha_Restart()
196 PetscCall(VecCopy(th->V1, V2)); in TSAlpha_Restart()
197 PetscCall(TSPostStage(ts, th->stage_time, 0, &X2)); in TSAlpha_Restart()
198 PetscCall(TSAdaptCheckStage(ts->adapt, ts, th->stage_time, X2, &stageok)); in TSAlpha_Restart()
202 PetscCall(VecZeroEntries(th->A0)); in TSAlpha_Restart()
203 PetscCall(VecAXPY(th->A0, -3 / time_step, V0)); in TSAlpha_Restart()
204 PetscCall(VecAXPY(th->A0, +4 / time_step, V1)); in TSAlpha_Restart()
205 PetscCall(VecAXPY(th->A0, -1 / time_step, V2)); in TSAlpha_Restart()
208 if (th->vec_lte_work[0]) { in TSAlpha_Restart()
209 PetscCall(VecZeroEntries(th->vec_lte_work[0])); in TSAlpha_Restart()
210 PetscCall(VecAXPY(th->vec_lte_work[0], +2, X2)); in TSAlpha_Restart()
211 PetscCall(VecAXPY(th->vec_lte_work[0], -4, X1)); in TSAlpha_Restart()
212 PetscCall(VecAXPY(th->vec_lte_work[0], +2, X0)); in TSAlpha_Restart()
214 if (th->vec_lte_work[1]) { in TSAlpha_Restart()
215 PetscCall(VecZeroEntries(th->vec_lte_work[1])); in TSAlpha_Restart()
216 PetscCall(VecAXPY(th->vec_lte_work[1], +2, V2)); in TSAlpha_Restart()
217 PetscCall(VecAXPY(th->vec_lte_work[1], -4, V1)); in TSAlpha_Restart()
218 PetscCall(VecAXPY(th->vec_lte_work[1], +2, V0)); in TSAlpha_Restart()
227 PetscCall(VecCopy(ts->vec_sol, th->X0)); in TSAlpha_Restart()
228 PetscCall(VecCopy(ts->vec_dot, th->V0)); in TSAlpha_Restart()
237 TS_Alpha *th = (TS_Alpha *)ts->data; in TSStep_Alpha() local
246 if (th->vec_sol_prev) PetscCall(VecCopy(th->X0, th->vec_sol_prev)); in TSStep_Alpha()
247 if (th->vec_dot_prev) PetscCall(VecCopy(th->V0, th->vec_dot_prev)); in TSStep_Alpha()
248 PetscCall(VecCopy(ts->vec_sol, th->X0)); in TSStep_Alpha()
249 PetscCall(VecCopy(ts->vec_dot, th->V0)); in TSStep_Alpha()
250 PetscCall(VecCopy(th->A1, th->A0)); in TSStep_Alpha()
253 th->status = TS_STEP_INCOMPLETE; in TSStep_Alpha()
254 while (!ts->reason && th->status != TS_STEP_COMPLETE) { in TSStep_Alpha()
261 PetscCall(TSAlpha_ApplyPredictor(ts, th->X1)); in TSStep_Alpha()
262 PetscCall(TSPreStage(ts, th->stage_time)); in TSStep_Alpha()
263 PetscCall(TSAlpha_SNESSolve(ts, NULL, th->X1)); in TSStep_Alpha()
264 PetscCall(TSPostStage(ts, th->stage_time, 0, &th->Xa)); in TSStep_Alpha()
265 PetscCall(TSAdaptCheckStage(ts->adapt, ts, th->stage_time, th->Xa, &stageok)); in TSStep_Alpha()
268 th->status = TS_STEP_PENDING; in TSStep_Alpha()
269 PetscCall(VecCopy(th->X1, ts->vec_sol)); in TSStep_Alpha()
270 PetscCall(VecCopy(th->V1, ts->vec_dot)); in TSStep_Alpha()
272 th->status = accept ? TS_STEP_COMPLETE : TS_STEP_INCOMPLETE; in TSStep_Alpha()
274 PetscCall(VecCopy(th->X0, ts->vec_sol)); in TSStep_Alpha()
275 PetscCall(VecCopy(th->V0, ts->vec_dot)); in TSStep_Alpha()
297 TS_Alpha *th = (TS_Alpha *)ts->data; in TSEvaluateWLTE_Alpha() local
298 Vec X = th->X1; /* X = solution */ in TSEvaluateWLTE_Alpha()
299 Vec V = th->V1; /* V = solution */ in TSEvaluateWLTE_Alpha()
300 Vec Y = th->vec_lte_work[0]; /* Y = X + LTE */ in TSEvaluateWLTE_Alpha()
301 Vec Z = th->vec_lte_work[1]; /* Z = V + LTE */ in TSEvaluateWLTE_Alpha()
305 if (!th->vec_sol_prev) { in TSEvaluateWLTE_Alpha()
309 if (!th->vec_dot_prev) { in TSEvaluateWLTE_Alpha()
313 if (!th->vec_lte_work[0]) { in TSEvaluateWLTE_Alpha()
317 if (!th->vec_lte_work[1]) { in TSEvaluateWLTE_Alpha()
334 vecX[0] = th->X1; in TSEvaluateWLTE_Alpha()
335 vecX[1] = th->X0; in TSEvaluateWLTE_Alpha()
336 vecX[2] = th->vec_sol_prev; in TSEvaluateWLTE_Alpha()
337 vecV[0] = th->V1; in TSEvaluateWLTE_Alpha()
338 vecV[1] = th->V0; in TSEvaluateWLTE_Alpha()
339 vecV[2] = th->vec_dot_prev; in TSEvaluateWLTE_Alpha()
356 TS_Alpha *th = (TS_Alpha *)ts->data; in TSRollBack_Alpha() local
359 PetscCall(VecCopy(th->X0, ts->vec_sol)); in TSRollBack_Alpha()
360 PetscCall(VecCopy(th->V0, ts->vec_dot)); in TSRollBack_Alpha()
384 TS_Alpha *th = (TS_Alpha *)ts->data; in SNESTSFormFunction_Alpha() local
385 PetscReal ta = th->stage_time; in SNESTSFormFunction_Alpha()
386 Vec Xa = th->Xa, Va = th->Va, Aa = th->Aa; in SNESTSFormFunction_Alpha()
392 PetscCall(VecScale(F, th->scale_F)); in SNESTSFormFunction_Alpha()
398 TS_Alpha *th = (TS_Alpha *)ts->data; in SNESTSFormJacobian_Alpha() local
399 PetscReal ta = th->stage_time; in SNESTSFormJacobian_Alpha()
400 Vec Xa = th->Xa, Va = th->Va, Aa = th->Aa; in SNESTSFormJacobian_Alpha()
401 PetscReal dVdX = th->shift_V, dAdX = th->shift_A; in SNESTSFormJacobian_Alpha()
411 TS_Alpha *th = (TS_Alpha *)ts->data; in TSReset_Alpha() local
414 PetscCall(VecDestroy(&th->X0)); in TSReset_Alpha()
415 PetscCall(VecDestroy(&th->Xa)); in TSReset_Alpha()
416 PetscCall(VecDestroy(&th->X1)); in TSReset_Alpha()
417 PetscCall(VecDestroy(&th->V0)); in TSReset_Alpha()
418 PetscCall(VecDestroy(&th->Va)); in TSReset_Alpha()
419 PetscCall(VecDestroy(&th->V1)); in TSReset_Alpha()
420 PetscCall(VecDestroy(&th->A0)); in TSReset_Alpha()
421 PetscCall(VecDestroy(&th->Aa)); in TSReset_Alpha()
422 PetscCall(VecDestroy(&th->A1)); in TSReset_Alpha()
423 PetscCall(VecDestroy(&th->vec_sol_prev)); in TSReset_Alpha()
424 PetscCall(VecDestroy(&th->vec_dot_prev)); in TSReset_Alpha()
425 PetscCall(VecDestroy(&th->vec_lte_work[0])); in TSReset_Alpha()
426 PetscCall(VecDestroy(&th->vec_lte_work[1])); in TSReset_Alpha()
444 TS_Alpha *th = (TS_Alpha *)ts->data; in TSSetUp_Alpha() local
448 PetscCall(VecDuplicate(ts->vec_sol, &th->X0)); in TSSetUp_Alpha()
449 PetscCall(VecDuplicate(ts->vec_sol, &th->Xa)); in TSSetUp_Alpha()
450 PetscCall(VecDuplicate(ts->vec_sol, &th->X1)); in TSSetUp_Alpha()
451 PetscCall(VecDuplicate(ts->vec_sol, &th->V0)); in TSSetUp_Alpha()
452 PetscCall(VecDuplicate(ts->vec_sol, &th->Va)); in TSSetUp_Alpha()
453 PetscCall(VecDuplicate(ts->vec_sol, &th->V1)); in TSSetUp_Alpha()
454 PetscCall(VecDuplicate(ts->vec_sol, &th->A0)); in TSSetUp_Alpha()
455 PetscCall(VecDuplicate(ts->vec_sol, &th->Aa)); in TSSetUp_Alpha()
456 PetscCall(VecDuplicate(ts->vec_sol, &th->A1)); in TSSetUp_Alpha()
462 PetscCall(VecDuplicate(ts->vec_sol, &th->vec_sol_prev)); in TSSetUp_Alpha()
463 PetscCall(VecDuplicate(ts->vec_sol, &th->vec_dot_prev)); in TSSetUp_Alpha()
464 PetscCall(VecDuplicate(ts->vec_sol, &th->vec_lte_work[0])); in TSSetUp_Alpha()
465 PetscCall(VecDuplicate(ts->vec_sol, &th->vec_lte_work[1])); in TSSetUp_Alpha()
474 TS_Alpha *th = (TS_Alpha *)ts->data; in TSSetFromOptions_Alpha() local
483 …pha_alpha_m", "Algorithmic parameter alpha_m", "TSAlpha2SetParams", th->Alpha_m, &th->Alpha_m, NUL… in TSSetFromOptions_Alpha()
484 …pha_alpha_f", "Algorithmic parameter alpha_f", "TSAlpha2SetParams", th->Alpha_f, &th->Alpha_f, NUL… in TSSetFromOptions_Alpha()
485 …ts_alpha_gamma", "Algorithmic parameter gamma", "TSAlpha2SetParams", th->Gamma, &th->Gamma, NULL)); in TSSetFromOptions_Alpha()
486 …l("-ts_alpha_beta", "Algorithmic parameter beta", "TSAlpha2SetParams", th->Beta, &th->Beta, NULL)); in TSSetFromOptions_Alpha()
487 PetscCall(TSAlpha2SetParams(ts, th->Alpha_m, th->Alpha_f, th->Gamma, th->Beta)); in TSSetFromOptions_Alpha()
495 TS_Alpha *th = (TS_Alpha *)ts->data; in TSView_Alpha() local
500 …g, Alpha_f=%g, Gamma=%g, Beta=%g\n", (double)th->Alpha_m, (double)th->Alpha_f, (double)th->Gamma, … in TSView_Alpha()
521 TS_Alpha *th = (TS_Alpha *)ts->data; in TSAlpha2SetParams_Alpha() local
526 th->Alpha_m = alpha_m; in TSAlpha2SetParams_Alpha()
527 th->Alpha_f = alpha_f; in TSAlpha2SetParams_Alpha()
528 th->Gamma = gamma; in TSAlpha2SetParams_Alpha()
529 th->Beta = beta; in TSAlpha2SetParams_Alpha()
530 th->order = (PetscAbsReal(res) < tol) ? 2 : 1; in TSAlpha2SetParams_Alpha()
536 TS_Alpha *th = (TS_Alpha *)ts->data; in TSAlpha2GetParams_Alpha() local
539 if (alpha_m) *alpha_m = th->Alpha_m; in TSAlpha2GetParams_Alpha()
540 if (alpha_f) *alpha_f = th->Alpha_f; in TSAlpha2GetParams_Alpha()
541 if (gamma) *gamma = th->Gamma; in TSAlpha2GetParams_Alpha()
542 if (beta) *beta = th->Beta; in TSAlpha2GetParams_Alpha()
555 TS_Alpha *th; in TSCreate_Alpha2() local
573 PetscCall(PetscNew(&th)); in TSCreate_Alpha2()
574 ts->data = (void *)th; in TSCreate_Alpha2()
576 th->Alpha_m = 0.5; in TSCreate_Alpha2()
577 th->Alpha_f = 0.5; in TSCreate_Alpha2()
578 th->Gamma = 0.5; in TSCreate_Alpha2()
579 th->Beta = 0.25; in TSCreate_Alpha2()
580 th->order = 2; in TSCreate_Alpha2()
582 th->predictor = NULL; in TSCreate_Alpha2()
583 th->predictor_ctx = NULL; in TSCreate_Alpha2()