Lines Matching refs:work
13 Vec *work; member
18 static PetscErrorCode TSSSPGetWorkVectors(TS ts, PetscInt n, Vec **work) in TSSSPGetWorkVectors() argument
25 if (ssp->nwork > 0) PetscCall(VecDestroyVecs(ssp->nwork, &ssp->work)); in TSSSPGetWorkVectors()
26 PetscCall(VecDuplicateVecs(ts->vec_sol, n, &ssp->work)); in TSSSPGetWorkVectors()
29 *work = ssp->work; in TSSSPGetWorkVectors()
34 static PetscErrorCode TSSSPRestoreWorkVectors(TS ts, PetscInt n, Vec **work) in TSSSPRestoreWorkVectors() argument
40 PetscCheck(*work == ssp->work, PETSC_COMM_SELF, PETSC_ERR_PLIB, "Wrong work vectors checked out"); in TSSSPRestoreWorkVectors()
42 *work = NULL; in TSSSPRestoreWorkVectors()
56 Vec *work, F; in TSSSPStep_RK_2() local
61 PetscCall(TSSSPGetWorkVectors(ts, 2, &work)); in TSSSPStep_RK_2()
62 F = work[1]; in TSSSPStep_RK_2()
63 PetscCall(VecCopy(sol, work[0])); in TSSSPStep_RK_2()
67 PetscCall(TSComputeRHSFunction(ts, stage_time, work[0], F)); in TSSSPStep_RK_2()
68 PetscCall(VecAXPY(work[0], dt / (s - 1.), F)); in TSSSPStep_RK_2()
70 PetscCall(TSComputeRHSFunction(ts, t0 + dt, work[0], F)); in TSSSPStep_RK_2()
71 PetscCall(VecAXPBYPCZ(sol, (s - 1.) / s, dt / s, 1. / s, work[0], F)); in TSSSPStep_RK_2()
72 PetscCall(TSSSPRestoreWorkVectors(ts, 2, &work)); in TSSSPStep_RK_2()
88 Vec *work, F; in TSSSPStep_RK_3() local
97 PetscCall(TSSSPGetWorkVectors(ts, 3, &work)); in TSSSPStep_RK_3()
98 F = work[2]; in TSSSPStep_RK_3()
99 PetscCall(VecCopy(sol, work[0])); in TSSSPStep_RK_3()
104 PetscCall(TSComputeRHSFunction(ts, stage_time, work[0], F)); in TSSSPStep_RK_3()
105 PetscCall(VecAXPY(work[0], dt / r, F)); in TSSSPStep_RK_3()
107 PetscCall(VecCopy(work[0], work[1])); in TSSSPStep_RK_3()
112 PetscCall(TSComputeRHSFunction(ts, stage_time, work[0], F)); in TSSSPStep_RK_3()
113 PetscCall(VecAXPY(work[0], dt / r, F)); in TSSSPStep_RK_3()
119 PetscCall(TSComputeRHSFunction(ts, stage_time, work[0], F)); in TSSSPStep_RK_3()
120 …PetscCall(VecAXPBYPCZ(work[0], 1. * n / (2 * n - 1.), (n - 1.) * dt / (r * (2 * n - 1)), (n - 1.) … in TSSSPStep_RK_3()
127 PetscCall(TSComputeRHSFunction(ts, stage_time, work[0], F)); in TSSSPStep_RK_3()
128 PetscCall(VecAXPY(work[0], dt / r, F)); in TSSSPStep_RK_3()
130 PetscCall(VecCopy(work[0], sol)); in TSSSPStep_RK_3()
131 PetscCall(TSSSPRestoreWorkVectors(ts, 3, &work)); in TSSSPStep_RK_3()
147 Vec *work, F; in TSSSPStep_RK_10_4() local
152 PetscCall(TSSSPGetWorkVectors(ts, 3, &work)); in TSSSPStep_RK_10_4()
153 F = work[2]; in TSSSPStep_RK_10_4()
154 PetscCall(VecCopy(sol, work[0])); in TSSSPStep_RK_10_4()
158 PetscCall(TSComputeRHSFunction(ts, stage_time, work[0], F)); in TSSSPStep_RK_10_4()
159 PetscCall(VecAXPY(work[0], dt / 6, F)); in TSSSPStep_RK_10_4()
161 PetscCall(VecAXPBYPCZ(work[1], 1. / 25, 9. / 25, 0, sol, work[0])); in TSSSPStep_RK_10_4()
162 PetscCall(VecAXPBY(work[0], 15, -5, work[1])); in TSSSPStep_RK_10_4()
166 PetscCall(TSComputeRHSFunction(ts, stage_time, work[0], F)); in TSSSPStep_RK_10_4()
167 PetscCall(VecAXPY(work[0], dt / 6, F)); in TSSSPStep_RK_10_4()
171 PetscCall(TSComputeRHSFunction(ts, stage_time, work[0], F)); in TSSSPStep_RK_10_4()
172 PetscCall(VecAXPBYPCZ(work[1], 3. / 5, dt / 10, 1, work[0], F)); in TSSSPStep_RK_10_4()
173 PetscCall(VecCopy(work[1], sol)); in TSSSPStep_RK_10_4()
174 PetscCall(TSSSPRestoreWorkVectors(ts, 3, &work)); in TSSSPStep_RK_10_4()
219 if (ssp->work) PetscCall(VecDestroyVecs(ssp->nwork, &ssp->work)); in TSReset_SSP()