Lines Matching refs:user
72 User user = (User)ctx; in RHSFunction() local
80 if (user->imex) { in RHSFunction()
83 f[1] = user->mu * ((1. - u[0] * u[0]) * u[1] - u[0]); in RHSFunction()
92 User user = (User)ctx; in RHSJacobian() local
93 PetscReal mu = user->mu; in RHSJacobian()
102 if (user->imex) { in RHSJacobian()
124 User user = (User)ctx; in IFunction() local
132 if (user->imex) { in IFunction()
137 f[1] = udot[1] - user->mu * ((1.0 - u[0] * u[0]) * u[1] - u[0]); in IFunction()
146 User user = (User)ctx; in IJacobian() local
154 if (user->imex) { in IJacobian()
161 J[1][0] = user->mu * (2.0 * u[0] * u[1] + 1.0); in IJacobian()
162 J[1][1] = a - user->mu * (1.0 - u[0] * u[0]); in IJacobian()
195 User user = (User)ctx; in RHSJacobianP() local
198 if (!user->imex) { in RHSJacobianP()
218 User user = (User)ctx; in Monitor() local
225 while (user->next_output <= t && user->next_output <= tfinal) { in Monitor()
227 PetscCall(TSInterpolate(ts, user->next_output, interpolatedU)); in Monitor()
229 …C_COMM_WORLD, "[%g] %" PetscInt_FMT " TS %g (dt = %g) X %g %g\n", (double)user->next_output, step,… in Monitor()
232 user->next_output += 0.1; in Monitor()
243 struct _n_User user; in main() local
256 user.next_output = 0.0; in main()
257 user.mu = 1.0e3; in main()
258 user.steps = 0; in main()
259 user.ftime = 0.5; in main()
260 user.imex = PETSC_FALSE; in main()
262 PetscCall(PetscOptionsGetReal(NULL, NULL, "-mu", &user.mu, NULL)); in main()
264 PetscCall(PetscOptionsGetBool(NULL, NULL, "-imexform", &user.imex, NULL)); in main()
269 PetscCall(MatCreate(PETSC_COMM_WORLD, &user.A)); in main()
270 PetscCall(MatSetSizes(user.A, PETSC_DECIDE, PETSC_DECIDE, 2, 2)); in main()
271 PetscCall(MatSetFromOptions(user.A)); in main()
272 PetscCall(MatSetUp(user.A)); in main()
273 PetscCall(MatCreateVecs(user.A, &user.U, NULL)); in main()
274 PetscCall(MatDuplicate(user.A, MAT_DO_NOT_COPY_VALUES, &user.B)); in main()
275 PetscCall(MatCreate(PETSC_COMM_WORLD, &user.Jacp)); in main()
276 PetscCall(MatSetSizes(user.Jacp, PETSC_DECIDE, PETSC_DECIDE, 2, 1)); in main()
277 PetscCall(MatSetFromOptions(user.Jacp)); in main()
278 PetscCall(MatSetUp(user.Jacp)); in main()
279 PetscCall(MatDuplicate(user.Jacp, MAT_DO_NOT_COPY_VALUES, &user.Jacprhs)); in main()
280 PetscCall(MatZeroEntries(user.Jacprhs)); in main()
287 if (user.imex) { in main()
288 PetscCall(TSSetIFunction(ts, NULL, IFunction, &user)); in main()
289 PetscCall(TSSetIJacobian(ts, user.A, user.A, IJacobian, &user)); in main()
290 PetscCall(TSSetIJacobianP(ts, user.Jacp, IJacobianP, &user)); in main()
291 PetscCall(TSSetRHSFunction(ts, NULL, RHSFunction, &user)); in main()
292 PetscCall(TSSetRHSJacobian(ts, user.B, NULL, RHSJacobian, &user)); in main()
293 PetscCall(TSSetRHSJacobianP(ts, user.Jacprhs, NULL, &user)); in main()
297 PetscCall(TSSetIFunction(ts, NULL, IFunction, &user)); in main()
298 PetscCall(TSSetIJacobian(ts, user.A, user.A, IJacobian, &user)); in main()
299 PetscCall(TSSetIJacobianP(ts, user.Jacp, IJacobianP, &user)); in main()
302 PetscCall(TSSetRHSFunction(ts, NULL, RHSFunction, &user)); in main()
303 PetscCall(TSSetRHSJacobian(ts, user.A, user.A, RHSJacobian, &user)); in main()
304 PetscCall(TSSetRHSJacobianP(ts, user.Jacp, RHSJacobianP, &user)); in main()
308 PetscCall(TSSetMaxTime(ts, user.ftime)); in main()
311 if (monitor) PetscCall(TSMonitorSet(ts, Monitor, &user, NULL)); in main()
316 PetscCall(VecGetArray(user.U, &x_ptr)); in main()
318 x_ptr[1] = -2.0 / 3.0 + 10.0 / (81.0 * user.mu) - 292.0 / (2187.0 * user.mu * user.mu); in main()
319 PetscCall(VecRestoreArray(user.U, &x_ptr)); in main()
332 PetscCall(TSSolve(ts, user.U)); in main()
333 PetscCall(TSGetSolveTime(ts, &user.ftime)); in main()
334 PetscCall(TSGetStepNumber(ts, &user.steps)); in main()
339 PetscCall(MatCreateVecs(user.A, &user.lambda[0], NULL)); in main()
341 PetscCall(VecGetArray(user.lambda[0], &y_ptr)); in main()
344 PetscCall(VecRestoreArray(user.lambda[0], &y_ptr)); in main()
345 PetscCall(MatCreateVecs(user.A, &user.lambda[1], NULL)); in main()
346 PetscCall(VecGetArray(user.lambda[1], &y_ptr)); in main()
349 PetscCall(VecRestoreArray(user.lambda[1], &y_ptr)); in main()
351 PetscCall(MatCreateVecs(user.Jacp, &user.mup[0], NULL)); in main()
352 PetscCall(VecGetArray(user.mup[0], &x_ptr)); in main()
354 PetscCall(VecRestoreArray(user.mup[0], &x_ptr)); in main()
355 PetscCall(MatCreateVecs(user.Jacp, &user.mup[1], NULL)); in main()
356 PetscCall(VecGetArray(user.mup[1], &x_ptr)); in main()
358 PetscCall(VecRestoreArray(user.mup[1], &x_ptr)); in main()
360 PetscCall(TSSetCostGradients(ts, 2, user.lambda, user.mup)); in main()
365 PetscCall(VecView(user.lambda[0], PETSC_VIEWER_STDOUT_WORLD)); in main()
367 PetscCall(VecView(user.lambda[1], PETSC_VIEWER_STDOUT_WORLD)); in main()
369 PetscCall(VecGetArray(user.mup[0], &x_ptr)); in main()
370 PetscCall(VecGetArray(user.lambda[0], &y_ptr)); in main()
371 …derp = y_ptr[1] * (-10.0 / (81.0 * user.mu * user.mu) + 2.0 * 292.0 / (2187.0 * user.mu * user.mu … in main()
372 PetscCall(VecRestoreArray(user.mup[0], &x_ptr)); in main()
373 PetscCall(VecRestoreArray(user.lambda[0], &y_ptr)); in main()
376 PetscCall(VecGetArray(user.mup[1], &x_ptr)); in main()
377 PetscCall(VecGetArray(user.lambda[1], &y_ptr)); in main()
378 …derp = y_ptr[1] * (-10.0 / (81.0 * user.mu * user.mu) + 2.0 * 292.0 / (2187.0 * user.mu * user.mu … in main()
379 PetscCall(VecRestoreArray(user.mup[1], &x_ptr)); in main()
380 PetscCall(VecRestoreArray(user.lambda[1], &y_ptr)); in main()
387 PetscCall(MatDestroy(&user.A)); in main()
388 PetscCall(MatDestroy(&user.B)); in main()
389 PetscCall(MatDestroy(&user.Jacp)); in main()
390 PetscCall(MatDestroy(&user.Jacprhs)); in main()
391 PetscCall(VecDestroy(&user.U)); in main()
392 PetscCall(VecDestroy(&user.lambda[0])); in main()
393 PetscCall(VecDestroy(&user.lambda[1])); in main()
394 PetscCall(VecDestroy(&user.mup[0])); in main()
395 PetscCall(VecDestroy(&user.mup[1])); in main()