Lines Matching refs:appctx
81 AppCtx appctx; /* user-defined application context */ in main() local
104 PetscCall(PetscOptionsHasName(NULL, NULL, "-debug", &appctx.debug)); in main()
108 appctx.m = m; in main()
109 appctx.h = 1.0 / (m - 1.0); in main()
110 appctx.norm_2 = 0.0; in main()
111 appctx.norm_max = 0.0; in main()
123 PetscCall(VecDuplicate(u, &appctx.solution)); in main()
129 PetscCall(PetscViewerDrawOpen(PETSC_COMM_SELF, 0, "", 80, 380, 400, 160, &appctx.viewer1)); in main()
130 PetscCall(PetscViewerDrawGetDraw(appctx.viewer1, 0, &draw)); in main()
132 PetscCall(PetscViewerDrawOpen(PETSC_COMM_SELF, 0, "", 80, 0, 400, 160, &appctx.viewer2)); in main()
133 PetscCall(PetscViewerDrawGetDraw(appctx.viewer2, 0, &draw)); in main()
147 if (!flg_string) PetscCall(TSMonitorSet(ts, Monitor, &appctx, NULL)); in main()
162 appctx.A = NULL; in main()
170 PetscCall(TSSetRHSFunction(ts, NULL, TSComputeRHSFunctionLinear, &appctx)); in main()
171 PetscCall(TSSetRHSJacobian(ts, A, A, RHSMatrixHeat, &appctx)); in main()
179 PetscCall(RHSMatrixHeat(ts, 0.0, u, A, A, &appctx)); in main()
180 PetscCall(TSSetRHSFunction(ts, NULL, TSComputeRHSFunctionLinear, &appctx)); in main()
181 PetscCall(TSSetRHSJacobian(ts, A, A, TSComputeRHSJacobianConstant, &appctx)); in main()
186 PetscCall(RHSMatrixHeat(ts, 0.0, u, A, A, &appctx)); in main()
188 PetscCall(TSSetIFunction(ts, NULL, IFunctionHeat, &appctx)); in main()
189 PetscCall(TSSetIJacobian(ts, J, J, IJacobianHeat, &appctx)); in main()
193 appctx.A = A; in main()
194 appctx.oshift = PETSC_MIN_REAL; in main()
200 dt = appctx.h * appctx.h / 2.0; in main()
225 PetscCall(InitialConditions(u, &appctx)); in main()
237 …r (2 norm) = %g, avg. error (max norm) = %g\n", (double)(appctx.norm_2 / steps), (double)(appctx.n… in main()
261 PetscCall(PetscViewerDestroy(&appctx.viewer1)); in main()
262 PetscCall(PetscViewerDestroy(&appctx.viewer2)); in main()
263 PetscCall(VecDestroy(&appctx.solution)); in main()
264 PetscCall(MatDestroy(&appctx.A)); in main()
286 PetscErrorCode InitialConditions(Vec u, AppCtx *appctx) in InitialConditions() argument
288 PetscScalar *u_localptr, h = appctx->h; in InitialConditions()
308 …for (i = 0; i < appctx->m; i++) u_localptr[i] = PetscSinScalar(PETSC_PI * i * 6. * h) + 3. * Petsc… in InitialConditions()
318 if (appctx->debug) { in InitialConditions()
336 PetscErrorCode ExactSolution(PetscReal t, Vec solution, AppCtx *appctx) in ExactSolution() argument
338 PetscScalar *s_localptr, h = appctx->h, ex1, ex2, sc1, sc2, tc = t; in ExactSolution()
355 …for (i = 0; i < appctx->m; i++) s_localptr[i] = PetscSinScalar(sc1 * (PetscReal)i) * ex1 + 3. * Pe… in ExactSolution()
384 AppCtx *appctx = (AppCtx *)ctx; /* user-defined application context */ in Monitor() local
391 PetscCall(VecView(u, appctx->viewer2)); in Monitor()
396 PetscCall(ExactSolution(time, appctx->solution, appctx)); in Monitor()
401 if (appctx->debug) { in Monitor()
405 PetscCall(VecView(appctx->solution, PETSC_VIEWER_STDOUT_SELF)); in Monitor()
411 PetscCall(VecAXPY(appctx->solution, -1.0, u)); in Monitor()
412 PetscCall(VecNorm(appctx->solution, NORM_2, &norm_2)); in Monitor()
413 norm_2 = PetscSqrtReal(appctx->h) * norm_2; in Monitor()
414 PetscCall(VecNorm(appctx->solution, NORM_MAX, &norm_max)); in Monitor()
419 appctx->norm_2 += norm_2; in Monitor()
420 appctx->norm_max += norm_max; in Monitor()
432 PetscCall(VecView(appctx->solution, appctx->viewer1)); in Monitor()
437 if (appctx->debug) { in Monitor()
439 PetscCall(VecView(appctx->solution, PETSC_VIEWER_STDOUT_SELF)); in Monitor()
465 AppCtx *appctx = (AppCtx *)ctx; /* user-defined application context */ in RHSMatrixHeat() local
467 PetscInt mend = appctx->m; in RHSMatrixHeat()
469 PetscScalar v[3], stwo = -2. / (appctx->h * appctx->h), sone = -.5 * stwo; in RHSMatrixHeat()
524 AppCtx *appctx = (AppCtx *)ctx; /* user-defined application context */ in IFunctionHeat() local
527 PetscCall(MatMult(appctx->A, X, r)); in IFunctionHeat()
534 AppCtx *appctx = (AppCtx *)ctx; /* user-defined application context */ in IJacobianHeat() local
537 if (appctx->oshift == s) PetscFunctionReturn(PETSC_SUCCESS); in IJacobianHeat()
538 PetscCall(MatCopy(appctx->A, A, SAME_NONZERO_PATTERN)); in IJacobianHeat()
542 appctx->oshift = s; in IJacobianHeat()