Lines Matching refs:th

39   TS_Alpha *th = (TS_Alpha *)ts->data;  in TSResizeRegister_Alpha()  local
43 PetscCall(TSResizeRegisterVec(ts, "ts:theta:sol_prev", th->vec_sol_prev)); in TSResizeRegister_Alpha()
44 PetscCall(TSResizeRegisterVec(ts, "ts:theta:X0", th->X0)); in TSResizeRegister_Alpha()
46 PetscCall(TSResizeRetrieveVec(ts, "ts:theta:sol_prev", &th->vec_sol_prev)); in TSResizeRegister_Alpha()
47 PetscCall(PetscObjectReference((PetscObject)th->vec_sol_prev)); in TSResizeRegister_Alpha()
48 PetscCall(TSResizeRetrieveVec(ts, "ts:theta:X0", &th->X0)); in TSResizeRegister_Alpha()
49 PetscCall(PetscObjectReference((PetscObject)th->X0)); in TSResizeRegister_Alpha()
56 TS_Alpha *th = (TS_Alpha *)ts->data; in TSAlpha_StageTime() local
59 PetscReal Alpha_m = th->Alpha_m; in TSAlpha_StageTime()
60 PetscReal Alpha_f = th->Alpha_f; in TSAlpha_StageTime()
61 PetscReal Gamma = th->Gamma; in TSAlpha_StageTime()
64 th->stage_time = t + Alpha_f * dt; in TSAlpha_StageTime()
65 th->shift_V = Alpha_m / (Alpha_f * Gamma * dt); in TSAlpha_StageTime()
66 th->scale_F = 1 / Alpha_f; in TSAlpha_StageTime()
72 TS_Alpha *th = (TS_Alpha *)ts->data; in TSAlpha_StageVecs() local
73 Vec X1 = X, V1 = th->V1; in TSAlpha_StageVecs()
74 Vec Xa = th->Xa, Va = th->Va; in TSAlpha_StageVecs()
75 Vec X0 = th->X0, V0 = th->V0; in TSAlpha_StageVecs()
77 PetscReal Alpha_m = th->Alpha_m; in TSAlpha_StageVecs()
78 PetscReal Alpha_f = th->Alpha_f; in TSAlpha_StageVecs()
79 PetscReal Gamma = th->Gamma; in TSAlpha_StageVecs()
115 TS_Alpha *th = (TS_Alpha *)ts->data; in TSAlpha_Restart() local
118 Vec X0 = ts->vec_sol, X1, X2 = th->X1; in TSAlpha_Restart()
130 th->stage_time = ts->ptime; in TSAlpha_Restart()
131 PetscCall(VecZeroEntries(th->V0)); in TSAlpha_Restart()
134 th->stage_time += ts->time_step; in TSAlpha_Restart()
135 PetscCall(VecCopy(X0, th->X0)); in TSAlpha_Restart()
136 PetscCall(TSPreStage(ts, th->stage_time)); in TSAlpha_Restart()
137 PetscCall(VecCopy(th->X0, X1)); in TSAlpha_Restart()
139 PetscCall(TSPostStage(ts, th->stage_time, 0, &X1)); in TSAlpha_Restart()
140 PetscCall(TSAdaptCheckStage(ts->adapt, ts, th->stage_time, X1, &stageok)); in TSAlpha_Restart()
144 th->stage_time += ts->time_step; in TSAlpha_Restart()
145 PetscCall(VecCopy(X1, th->X0)); in TSAlpha_Restart()
146 PetscCall(TSPreStage(ts, th->stage_time)); in TSAlpha_Restart()
147 PetscCall(VecCopy(th->X0, X2)); in TSAlpha_Restart()
149 PetscCall(TSPostStage(ts, th->stage_time, 0, &X2)); in TSAlpha_Restart()
150 PetscCall(TSAdaptCheckStage(ts->adapt, ts, th->stage_time, X2, &stageok)); in TSAlpha_Restart()
154 PetscCall(VecZeroEntries(th->V0)); in TSAlpha_Restart()
155 PetscCall(VecAXPY(th->V0, -3 / time_step, X0)); in TSAlpha_Restart()
156 PetscCall(VecAXPY(th->V0, +4 / time_step, X1)); in TSAlpha_Restart()
157 PetscCall(VecAXPY(th->V0, -1 / time_step, X2)); in TSAlpha_Restart()
160 if (th->vec_lte_work) { in TSAlpha_Restart()
161 PetscCall(VecZeroEntries(th->vec_lte_work)); in TSAlpha_Restart()
162 PetscCall(VecAXPY(th->vec_lte_work, +2, X2)); in TSAlpha_Restart()
163 PetscCall(VecAXPY(th->vec_lte_work, -4, X1)); in TSAlpha_Restart()
164 PetscCall(VecAXPY(th->vec_lte_work, +2, X0)); in TSAlpha_Restart()
173 PetscCall(VecCopy(ts->vec_sol, th->X0)); in TSAlpha_Restart()
181 TS_Alpha *th = (TS_Alpha *)ts->data; in TSStep_Alpha() local
190 if (th->vec_sol_prev) PetscCall(VecCopy(th->X0, th->vec_sol_prev)); in TSStep_Alpha()
191 PetscCall(VecCopy(ts->vec_sol, th->X0)); in TSStep_Alpha()
192 PetscCall(VecCopy(th->V1, th->V0)); in TSStep_Alpha()
195 th->status = TS_STEP_INCOMPLETE; in TSStep_Alpha()
196 while (!ts->reason && th->status != TS_STEP_COMPLETE) { in TSStep_Alpha()
203 PetscCall(VecCopy(th->X0, th->X1)); in TSStep_Alpha()
204 PetscCall(TSPreStage(ts, th->stage_time)); in TSStep_Alpha()
205 PetscCall(TSAlpha_SNESSolve(ts, NULL, th->X1)); in TSStep_Alpha()
206 PetscCall(TSPostStage(ts, th->stage_time, 0, &th->Xa)); in TSStep_Alpha()
207 PetscCall(TSAdaptCheckStage(ts->adapt, ts, th->stage_time, th->Xa, &stageok)); in TSStep_Alpha()
210 th->status = TS_STEP_PENDING; in TSStep_Alpha()
211 PetscCall(VecCopy(th->X1, ts->vec_sol)); in TSStep_Alpha()
213 th->status = accept ? TS_STEP_COMPLETE : TS_STEP_INCOMPLETE; in TSStep_Alpha()
215 PetscCall(VecCopy(th->X0, ts->vec_sol)); in TSStep_Alpha()
237 TS_Alpha *th = (TS_Alpha *)ts->data; in TSEvaluateWLTE_Alpha() local
238 Vec X = th->X1; /* X = solution */ in TSEvaluateWLTE_Alpha()
239 Vec Y = th->vec_lte_work; /* Y = X + LTE */ in TSEvaluateWLTE_Alpha()
243 if (!th->vec_sol_prev) { in TSEvaluateWLTE_Alpha()
247 if (!th->vec_lte_work) { in TSEvaluateWLTE_Alpha()
263 vecs[0] = th->X1; in TSEvaluateWLTE_Alpha()
264 vecs[1] = th->X0; in TSEvaluateWLTE_Alpha()
265 vecs[2] = th->vec_sol_prev; in TSEvaluateWLTE_Alpha()
276 TS_Alpha *th = (TS_Alpha *)ts->data; in TSInterpolate_Alpha() local
278 PetscReal Gamma = th->Gamma; in TSInterpolate_Alpha()
281 PetscCall(VecWAXPY(th->V1, -1.0, th->X0, ts->vec_sol)); in TSInterpolate_Alpha()
282 PetscCall(VecAXPBY(th->V1, 1 - 1 / Gamma, 1 / (Gamma * ts->time_step), th->V0)); in TSInterpolate_Alpha()
285 PetscCall(VecAXPY(X, th->Gamma * dt, th->V1)); in TSInterpolate_Alpha()
287 PetscCall(VecAXPY(X, (1 - th->Gamma) * dt, th->V0)); in TSInterpolate_Alpha()
293 TS_Alpha *th = (TS_Alpha *)ts->data; in SNESTSFormFunction_Alpha() local
294 PetscReal ta = th->stage_time; in SNESTSFormFunction_Alpha()
295 Vec Xa = th->Xa, Va = th->Va; in SNESTSFormFunction_Alpha()
301 PetscCall(VecScale(F, th->scale_F)); in SNESTSFormFunction_Alpha()
307 TS_Alpha *th = (TS_Alpha *)ts->data; in SNESTSFormJacobian_Alpha() local
308 PetscReal ta = th->stage_time; in SNESTSFormJacobian_Alpha()
309 Vec Xa = th->Xa, Va = th->Va; in SNESTSFormJacobian_Alpha()
310 PetscReal dVdX = th->shift_V; in SNESTSFormJacobian_Alpha()
320 TS_Alpha *th = (TS_Alpha *)ts->data; in TSReset_Alpha() local
323 PetscCall(VecDestroy(&th->X0)); in TSReset_Alpha()
324 PetscCall(VecDestroy(&th->Xa)); in TSReset_Alpha()
325 PetscCall(VecDestroy(&th->X1)); in TSReset_Alpha()
326 PetscCall(VecDestroy(&th->V0)); in TSReset_Alpha()
327 PetscCall(VecDestroy(&th->Va)); in TSReset_Alpha()
328 PetscCall(VecDestroy(&th->V1)); in TSReset_Alpha()
329 PetscCall(VecDestroy(&th->vec_sol_prev)); in TSReset_Alpha()
330 PetscCall(VecDestroy(&th->vec_lte_work)); in TSReset_Alpha()
348 TS_Alpha *th = (TS_Alpha *)ts->data; in TSSetUp_Alpha() local
352 if (!th->X0) PetscCall(VecDuplicate(ts->vec_sol, &th->X0)); in TSSetUp_Alpha()
353 PetscCall(VecDuplicate(ts->vec_sol, &th->Xa)); in TSSetUp_Alpha()
354 PetscCall(VecDuplicate(ts->vec_sol, &th->X1)); in TSSetUp_Alpha()
355 PetscCall(VecDuplicate(ts->vec_sol, &th->V0)); in TSSetUp_Alpha()
356 PetscCall(VecDuplicate(ts->vec_sol, &th->Va)); in TSSetUp_Alpha()
357 PetscCall(VecDuplicate(ts->vec_sol, &th->V1)); in TSSetUp_Alpha()
363 if (!th->vec_sol_prev) PetscCall(VecDuplicate(ts->vec_sol, &th->vec_sol_prev)); in TSSetUp_Alpha()
364 if (!th->vec_lte_work) PetscCall(VecDuplicate(ts->vec_sol, &th->vec_lte_work)); in TSSetUp_Alpha()
373 TS_Alpha *th = (TS_Alpha *)ts->data; in TSSetFromOptions_Alpha() local
382 …lpha_alpha_m", "Algorithmic parameter alpha_m", "TSAlphaSetParams", th->Alpha_m, &th->Alpha_m, NUL… in TSSetFromOptions_Alpha()
383 …lpha_alpha_f", "Algorithmic parameter alpha_f", "TSAlphaSetParams", th->Alpha_f, &th->Alpha_f, NUL… in TSSetFromOptions_Alpha()
384 …-ts_alpha_gamma", "Algorithmic parameter gamma", "TSAlphaSetParams", th->Gamma, &th->Gamma, NULL)); in TSSetFromOptions_Alpha()
385 PetscCall(TSAlphaSetParams(ts, th->Alpha_m, th->Alpha_f, th->Gamma)); in TSSetFromOptions_Alpha()
393 TS_Alpha *th = (TS_Alpha *)ts->data; in TSView_Alpha() local
398 …ewer, " Alpha_m=%g, Alpha_f=%g, Gamma=%g\n", (double)th->Alpha_m, (double)th->Alpha_f, (double)th in TSView_Alpha()
417 TS_Alpha *th = (TS_Alpha *)ts->data; in TSAlphaSetParams_Alpha() local
422 th->Alpha_m = alpha_m; in TSAlphaSetParams_Alpha()
423 th->Alpha_f = alpha_f; in TSAlphaSetParams_Alpha()
424 th->Gamma = gamma; in TSAlphaSetParams_Alpha()
425 th->order = (PetscAbsReal(res) < tol) ? 2 : 1; in TSAlphaSetParams_Alpha()
431 TS_Alpha *th = (TS_Alpha *)ts->data; in TSAlphaGetParams_Alpha() local
434 if (alpha_m) *alpha_m = th->Alpha_m; in TSAlphaGetParams_Alpha()
435 if (alpha_f) *alpha_f = th->Alpha_f; in TSAlphaGetParams_Alpha()
436 if (gamma) *gamma = th->Gamma; in TSAlphaGetParams_Alpha()
449 TS_Alpha *th; in TSCreate_Alpha() local
467 PetscCall(PetscNew(&th)); in TSCreate_Alpha()
468 ts->data = (void *)th; in TSCreate_Alpha()
470 th->Alpha_m = 0.5; in TSCreate_Alpha()
471 th->Alpha_f = 0.5; in TSCreate_Alpha()
472 th->Gamma = 0.5; in TSCreate_Alpha()
473 th->order = 2; in TSCreate_Alpha()