Lines Matching refs:bdf

57   TS_BDF *bdf = (TS_BDF *)ts->data;  in TSBDF_GetVecs()  local
64 *Xdot = bdf->vec_dot; in TSBDF_GetVecs()
65 *Ydot = bdf->vec_wrk; in TSBDF_GetVecs()
72 TS_BDF *bdf = (TS_BDF *)ts->data; in TSBDF_RestoreVecs() local
79 …PetscCheck(*Xdot == bdf->vec_dot, PetscObjectComm((PetscObject)ts), PETSC_ERR_ARG_INCOMP, "Vec doe… in TSBDF_RestoreVecs()
80 …PetscCheck(*Ydot == bdf->vec_wrk, PetscObjectComm((PetscObject)ts), PETSC_ERR_ARG_INCOMP, "Vec doe… in TSBDF_RestoreVecs()
113 TS_BDF *bdf = (TS_BDF *)ts->data; in TSBDF_Advance() local
114 PetscInt i, n = PETSC_STATIC_ARRAY_LENGTH(bdf->work); in TSBDF_Advance()
115 Vec tail = bdf->work[n - 1], tvtail = bdf->tvwork[n - 1]; in TSBDF_Advance()
119 bdf->time[i] = bdf->time[i - 1]; in TSBDF_Advance()
120 bdf->work[i] = bdf->work[i - 1]; in TSBDF_Advance()
121 bdf->tvwork[i] = bdf->tvwork[i - 1]; in TSBDF_Advance()
123 bdf->n = PetscMin(bdf->n + 1, n - 1); in TSBDF_Advance()
124 bdf->time[1] = t; in TSBDF_Advance()
125 bdf->work[1] = tail; in TSBDF_Advance()
126 bdf->tvwork[1] = tvtail; in TSBDF_Advance()
134 TS_BDF *bdf = (TS_BDF *)ts->data; in TSBDF_VecLTE() local
136 PetscReal *time = bdf->time; in TSBDF_VecLTE()
137 Vec *vecs = bdf->work; in TSBDF_VecLTE()
152 TS_BDF *bdf = (TS_BDF *)ts->data; in TSBDF_Extrapolate() local
154 PetscReal *time = bdf->time + 1; in TSBDF_Extrapolate()
155 Vec *vecs = bdf->work + 1; in TSBDF_Extrapolate()
159 n = PetscMin(n, bdf->n); in TSBDF_Extrapolate()
168 TS_BDF *bdf = (TS_BDF *)ts->data; in TSBDF_Interpolate() local
170 PetscReal *time = bdf->time; in TSBDF_Interpolate()
171 Vec *vecs = bdf->work; in TSBDF_Interpolate()
187 TS_BDF *bdf = (TS_BDF *)ts->data; in TSBDF_PreSolve() local
188 PetscInt i, n = PetscMax(bdf->k, 1) + 1; in TSBDF_PreSolve()
195 LagrangeBasisDers(n, bdf->time[0], bdf->time, alpha); in TSBDF_PreSolve()
196 for (i = 1; i < n; i++) vecs[i] = bdf->transientvar ? bdf->tvwork[i] : bdf->work[i]; in TSBDF_PreSolve()
199 bdf->shift = PetscRealPart(alpha[0]); in TSBDF_PreSolve()
220 TS_BDF *bdf = (TS_BDF *)ts->data; in TSBDF_Restart() local
223 bdf->k = 1; in TSBDF_Restart()
224 bdf->n = 0; in TSBDF_Restart()
226 if (bdf->order == 1) { in TSBDF_Restart()
230 bdf->time[0] = ts->ptime + ts->time_step / 2; in TSBDF_Restart()
231 PetscCall(VecCopy(bdf->work[1], bdf->work[0])); in TSBDF_Restart()
232 PetscCall(TSPreStage(ts, bdf->time[0])); in TSBDF_Restart()
233 PetscCall(TSBDF_SNESSolve(ts, NULL, bdf->work[0])); in TSBDF_Restart()
234 PetscCall(TSPostStage(ts, bdf->time[0], 0, &bdf->work[0])); in TSBDF_Restart()
235 PetscCall(TSAdaptCheckStage(ts->adapt, ts, bdf->time[0], bdf->work[0], accept)); in TSBDF_Restart()
238 bdf->k = PetscMin(2, bdf->order); in TSBDF_Restart()
239 bdf->n++; in TSBDF_Restart()
240 PetscCall(VecCopy(bdf->work[0], bdf->work[2])); in TSBDF_Restart()
241 bdf->time[2] = bdf->time[0]; in TSBDF_Restart()
242 PetscCall(TSComputeTransientVariable(ts, bdf->work[2], bdf->tvwork[2])); in TSBDF_Restart()
250 TS_BDF *bdf = (TS_BDF *)ts->data; in TSStep_BDF() local
259 bdf->k = PetscMin(bdf->k + 1, bdf->order); in TSStep_BDF()
263 bdf->status = TS_STEP_INCOMPLETE; in TSStep_BDF()
264 while (!ts->reason && bdf->status != TS_STEP_COMPLETE) { in TSStep_BDF()
270 bdf->time[0] = ts->ptime + ts->time_step; in TSStep_BDF()
271 …if (bdf->extrapolate) PetscCall(TSBDF_Extrapolate(ts, bdf->k - (accept ? 0 : 1), bdf->time[0], bdf in TSStep_BDF()
272 else if (!accept) PetscCall(VecCopy(ts->vec_sol, bdf->work[0])); in TSStep_BDF()
273 PetscCall(TSPreStage(ts, bdf->time[0])); in TSStep_BDF()
274 PetscCall(TSBDF_SNESSolve(ts, NULL, bdf->work[0])); in TSStep_BDF()
275 PetscCall(TSPostStage(ts, bdf->time[0], 0, &bdf->work[0])); in TSStep_BDF()
276 PetscCall(TSAdaptCheckStage(ts->adapt, ts, bdf->time[0], bdf->work[0], &stageok)); in TSStep_BDF()
279 bdf->status = TS_STEP_PENDING; in TSStep_BDF()
281 …PetscCall(TSAdaptCandidateAdd(ts->adapt, BDF_SchemeName[bdf->k], bdf->k, 1, 1.0, 1.0, PETSC_TRUE)); in TSStep_BDF()
283 bdf->status = accept ? TS_STEP_COMPLETE : TS_STEP_INCOMPLETE; in TSStep_BDF()
289 PetscCall(VecCopy(bdf->work[0], ts->vec_sol)); in TSStep_BDF()
307 TS_BDF *bdf = (TS_BDF *)ts->data; in TSInterpolate_BDF() local
310 PetscCall(TSBDF_Interpolate(ts, bdf->k, t, X)); in TSInterpolate_BDF()
316 TS_BDF *bdf = (TS_BDF *)ts->data; in TSEvaluateWLTE_BDF() local
317 PetscInt k = bdf->k; in TSEvaluateWLTE_BDF()
319 Vec X = bdf->work[0], Y = bdf->vec_lte; in TSEvaluateWLTE_BDF()
322 k = PetscMin(k, bdf->n - 1); in TSEvaluateWLTE_BDF()
336 TS_BDF *bdf = (TS_BDF *)ts->data; in TSResizeRegister_BDF() local
338 PetscInt i, maxn = PETSC_STATIC_ARRAY_LENGTH(bdf->work); in TSResizeRegister_BDF()
343 …for (i = 1; i < PetscMin(bdf->n + 1, maxn); i++) PetscCall(TSResizeRegisterVec(ts, names[i], bdf->… in TSResizeRegister_BDF()
346 PetscCall(TSResizeRetrieveVec(ts, names[i], &bdf->work[i])); in TSResizeRegister_BDF()
347 if (!bdf->work[i]) break; in TSResizeRegister_BDF()
348 PetscCall(PetscObjectReference((PetscObject)bdf->work[i])); in TSResizeRegister_BDF()
349 if (bdf->transientvar) { in TSResizeRegister_BDF()
350 PetscCall(VecDuplicate(bdf->work[i], &bdf->tvwork[i])); in TSResizeRegister_BDF()
351 PetscCall(TSComputeTransientVariable(ts, bdf->work[i], bdf->tvwork[i])); in TSResizeRegister_BDF()
360 TS_BDF *bdf = (TS_BDF *)ts->data; in SNESTSFormFunction_BDF() local
362 PetscReal t = bdf->time[0]; in SNESTSFormFunction_BDF()
363 PetscReal shift = bdf->shift; in SNESTSFormFunction_BDF()
369 if (bdf->transientvar) { /* shift*C(X) + V0 */ in SNESTSFormFunction_BDF()
387 TS_BDF *bdf = (TS_BDF *)ts->data; in SNESTSFormJacobian_BDF() local
389 PetscReal t = bdf->time[0]; in SNESTSFormJacobian_BDF()
390 PetscReal shift = bdf->shift; in SNESTSFormJacobian_BDF()
408 TS_BDF *bdf = (TS_BDF *)ts->data; in TSReset_BDF() local
409 size_t i, n = PETSC_STATIC_ARRAY_LENGTH(bdf->work); in TSReset_BDF()
413 PetscCall(VecDestroy(&bdf->work[i])); in TSReset_BDF()
414 PetscCall(VecDestroy(&bdf->tvwork[i])); in TSReset_BDF()
416 PetscCall(VecDestroy(&bdf->vec_dot)); in TSReset_BDF()
417 PetscCall(VecDestroy(&bdf->vec_wrk)); in TSReset_BDF()
418 PetscCall(VecDestroy(&bdf->vec_lte)); in TSReset_BDF()
435 TS_BDF *bdf = (TS_BDF *)ts->data; in TSSetUp_BDF() local
436 size_t n = PETSC_STATIC_ARRAY_LENGTH(bdf->work); in TSSetUp_BDF()
441 PetscCall(TSHasTransientVariable(ts, &bdf->transientvar)); in TSSetUp_BDF()
443 if (!bdf->work[i]) PetscCall(VecDuplicate(ts->vec_sol, &bdf->work[i])); in TSSetUp_BDF()
445 …if (i && bdf->transientvar && !bdf->tvwork[i]) PetscCall(VecDuplicate(ts->vec_sol, &bdf->tvwork[i]… in TSSetUp_BDF()
447 if (!cnt) bdf->k = bdf->n = 0; in TSSetUp_BDF()
448 PetscCall(VecDuplicate(ts->vec_sol, &bdf->vec_dot)); in TSSetUp_BDF()
449 PetscCall(VecDuplicate(ts->vec_sol, &bdf->vec_wrk)); in TSSetUp_BDF()
450 PetscCall(VecDuplicate(ts->vec_sol, &bdf->vec_lte)); in TSSetUp_BDF()
465 TS_BDF *bdf = (TS_BDF *)ts->data; in TSSetFromOptions_BDF() local
475 …tial guess of the nonlinear solve from previous time steps", "", bdf->extrapolate, &bdf->extrapola… in TSSetFromOptions_BDF()
483 TS_BDF *bdf = (TS_BDF *)ts->data; in TSView_BDF() local
488 if (isascii) PetscCall(PetscViewerASCIIPrintf(viewer, " Order=%" PetscInt_FMT "\n", bdf->order)); in TSView_BDF()
494 TS_BDF *bdf = (TS_BDF *)ts->data; in TSBDFSetOrder_BDF() local
497 if (order == bdf->order) PetscFunctionReturn(PETSC_SUCCESS); in TSBDFSetOrder_BDF()
499 bdf->order = order; in TSBDFSetOrder_BDF()
505 TS_BDF *bdf = (TS_BDF *)ts->data; in TSBDFGetOrder_BDF() local
508 *order = bdf->order; in TSBDFGetOrder_BDF()
525 TS_BDF *bdf; in TSCreate_BDF() local
543 PetscCall(PetscNew(&bdf)); in TSCreate_BDF()
544 ts->data = (void *)bdf; in TSCreate_BDF()
546 bdf->extrapolate = PETSC_TRUE; in TSCreate_BDF()
547 bdf->status = TS_STEP_COMPLETE; in TSCreate_BDF()
548 …for (size_t i = 0; i < PETSC_STATIC_ARRAY_LENGTH(bdf->work); i++) bdf->work[i] = bdf->tvwork[i] = … in TSCreate_BDF()