Lines Matching refs:ctx

24 PetscErrorCode monitor(Tao tao, AppCtx *ctx)  in monitor()  argument
45 AppCtx ctx; in main() local
69 ctx.beta = 2; in main()
70 ctx.c = 10000.0; in main()
71 ctx.u_s = 1.0; in main()
72 ctx.omega_s = 1.0; in main()
73 ctx.omega_b = 120.0 * PETSC_PI; in main()
74 ctx.H = 5.0; in main()
75 PetscCall(PetscOptionsScalar("-Inertia", "", "", ctx.H, &ctx.H, NULL)); in main()
76 ctx.D = 5.0; in main()
77 PetscCall(PetscOptionsScalar("-D", "", "", ctx.D, &ctx.D, NULL)); in main()
78 ctx.E = 1.1378; in main()
79 ctx.V = 1.0; in main()
80 ctx.X = 0.545; in main()
81 ctx.Pmax = ctx.E * ctx.V / ctx.X; in main()
82 ctx.Pmax_ini = ctx.Pmax; in main()
83 PetscCall(PetscOptionsScalar("-Pmax", "", "", ctx.Pmax, &ctx.Pmax, NULL)); in main()
84 ctx.Pm = 1.06; in main()
85 PetscCall(PetscOptionsScalar("-Pm", "", "", ctx.Pm, &ctx.Pm, NULL)); in main()
86 ctx.tf = 0.1; in main()
87 ctx.tcl = 0.2; in main()
88 PetscCall(PetscOptionsReal("-tf", "Time to start fault", "", ctx.tf, &ctx.tf, NULL)); in main()
89 PetscCall(PetscOptionsReal("-tcl", "Time to end fault", "", ctx.tcl, &ctx.tcl, NULL)); in main()
92 ctx.sa = SA_ADJ; in main()
93 …tivity analysis method (adj or tlm)", "", SAMethods, (PetscEnum)ctx.sa, (PetscEnum *)&ctx.sa, NULL… in main()
100 PetscCall(MatCreate(PETSC_COMM_WORLD, &ctx.Jac)); in main()
101 PetscCall(MatSetSizes(ctx.Jac, 2, 2, PETSC_DETERMINE, PETSC_DETERMINE)); in main()
102 PetscCall(MatSetType(ctx.Jac, MATDENSE)); in main()
103 PetscCall(MatSetFromOptions(ctx.Jac)); in main()
104 PetscCall(MatSetUp(ctx.Jac)); in main()
105 PetscCall(MatCreate(PETSC_COMM_WORLD, &ctx.Jacp)); in main()
106 PetscCall(MatSetSizes(ctx.Jacp, PETSC_DECIDE, PETSC_DECIDE, 2, 1)); in main()
107 PetscCall(MatSetFromOptions(ctx.Jacp)); in main()
108 PetscCall(MatSetUp(ctx.Jacp)); in main()
109 PetscCall(MatCreateVecs(ctx.Jac, &ctx.U, NULL)); in main()
110 PetscCall(MatCreateDense(PETSC_COMM_WORLD, PETSC_DECIDE, PETSC_DECIDE, 1, 1, NULL, &ctx.DRDP)); in main()
111 PetscCall(MatSetUp(ctx.DRDP)); in main()
112 PetscCall(MatCreateDense(PETSC_COMM_WORLD, PETSC_DECIDE, PETSC_DECIDE, 2, 1, NULL, &ctx.DRDU)); in main()
113 PetscCall(MatSetUp(ctx.DRDU)); in main()
118 PetscCall(TSCreate(PETSC_COMM_WORLD, &ctx.ts)); in main()
119 PetscCall(TSSetProblemType(ctx.ts, TS_NONLINEAR)); in main()
120 PetscCall(TSSetType(ctx.ts, TSCN)); in main()
121 PetscCall(TSSetRHSFunction(ctx.ts, NULL, (TSRHSFunctionFn *)RHSFunction, &ctx)); in main()
122 PetscCall(TSSetRHSJacobian(ctx.ts, ctx.Jac, ctx.Jac, (TSRHSJacobianFn *)RHSJacobian, &ctx)); in main()
123 PetscCall(TSSetRHSJacobianP(ctx.ts, ctx.Jacp, RHSJacobianP, &ctx)); in main()
125 if (ctx.sa == SA_ADJ) { in main()
126 PetscCall(MatCreateVecs(ctx.Jac, &lambda[0], NULL)); in main()
127 PetscCall(MatCreateVecs(ctx.Jacp, &mu[0], NULL)); in main()
128 PetscCall(TSSetSaveTrajectory(ctx.ts)); in main()
129 PetscCall(TSSetCostGradients(ctx.ts, 1, lambda, mu)); in main()
130 PetscCall(TSCreateQuadratureTS(ctx.ts, PETSC_FALSE, &ctx.quadts)); in main()
131 PetscCall(TSSetRHSFunction(ctx.quadts, NULL, (TSRHSFunctionFn *)CostIntegrand, &ctx)); in main()
132 …PetscCall(TSSetRHSJacobian(ctx.quadts, ctx.DRDU, ctx.DRDU, (TSRHSJacobianFn *)DRDUJacobianTranspos… in main()
133 PetscCall(TSSetRHSJacobianP(ctx.quadts, ctx.DRDP, DRDPJacobianTranspose, &ctx)); in main()
135 if (ctx.sa == SA_TLM) { in main()
138 PetscCall(TSForwardSetSensitivities(ctx.ts, 1, sp)); in main()
139 PetscCall(TSCreateQuadratureTS(ctx.ts, PETSC_TRUE, &ctx.quadts)); in main()
140 PetscCall(TSForwardSetSensitivities(ctx.quadts, 1, qgrad)); in main()
141 PetscCall(TSSetRHSFunction(ctx.quadts, NULL, (TSRHSFunctionFn *)CostIntegrand, &ctx)); in main()
142 …PetscCall(TSSetRHSJacobian(ctx.quadts, ctx.DRDU, ctx.DRDU, (TSRHSJacobianFn *)DRDUJacobianTranspos… in main()
143 PetscCall(TSSetRHSJacobianP(ctx.quadts, ctx.DRDP, DRDPJacobianTranspose, &ctx)); in main()
149 PetscCall(TSSetMaxTime(ctx.ts, 1.0)); in main()
150 PetscCall(TSSetExactFinalTime(ctx.ts, TS_EXACTFINALTIME_MATCHSTEP)); in main()
151 PetscCall(TSSetTimeStep(ctx.ts, 0.03125)); in main()
152 PetscCall(TSSetFromOptions(ctx.ts)); in main()
156 …PetscCall(TSSetEventHandler(ctx.ts, 2, direction, terminate, EventFunction, PostEventFunction, &ct… in main()
161 …ofile) PetscCall(TaoMonitorSet(tao, (PetscErrorCode (*)(Tao, void *))monitor, (void *)&ctx, NULL)); in main()
168 x_ptr[0] = ctx.Pm; in main()
173 PetscCall(TaoSetObjectiveAndGradient(tao, NULL, FormFunctionGradient, (void *)&ctx)); in main()
202 PetscCall(MatDestroy(&ctx.Jac)); in main()
203 PetscCall(MatDestroy(&ctx.Jacp)); in main()
204 PetscCall(MatDestroy(&ctx.DRDU)); in main()
205 PetscCall(MatDestroy(&ctx.DRDP)); in main()
206 PetscCall(VecDestroy(&ctx.U)); in main()
207 if (ctx.sa == SA_ADJ) { in main()
211 if (ctx.sa == SA_TLM) { in main()
215 PetscCall(TSDestroy(&ctx.ts)); in main()
239 AppCtx *ctx = (AppCtx *)ctx0; in FormFunctionGradient() local
250 ctx->Pm = x_ptr[0]; in FormFunctionGradient()
254 PetscCall(VecGetArray(ctx->U, &u)); in FormFunctionGradient()
255 u[0] = PetscAsinScalar(ctx->Pm / ctx->Pmax); in FormFunctionGradient()
257 PetscCall(VecRestoreArray(ctx->U, &u)); in FormFunctionGradient()
258 PetscCall(TSSetSolution(ctx->ts, ctx->U)); in FormFunctionGradient()
261 PetscCall(TSSetTime(ctx->ts, 0.0)); in FormFunctionGradient()
264 PetscCall(TSSetStepNumber(ctx->ts, 0)); in FormFunctionGradient()
267 PetscCall(TSSetTimeStep(ctx->ts, 0.03125)); in FormFunctionGradient()
270 PetscCall(TSGetQuadratureTS(ctx->ts, NULL, &ctx->quadts)); in FormFunctionGradient()
271 PetscCall(TSGetSolution(ctx->quadts, &q)); in FormFunctionGradient()
274 if (ctx->sa == SA_TLM) { /* reset the forward sensitivities */ in FormFunctionGradient()
280 PetscCall(TSGetQuadratureTS(ctx->ts, NULL, &quadts)); in FormFunctionGradient()
283 PetscCall(TSForwardGetSensitivities(ctx->ts, NULL, &sp)); in FormFunctionGradient()
284 val[0] = 1. / PetscSqrtScalar(1. - (ctx->Pm / ctx->Pmax) * (ctx->Pm / ctx->Pmax)) / ctx->Pmax; in FormFunctionGradient()
292 PetscCall(TSSolve(ctx->ts, ctx->U)); in FormFunctionGradient()
293 PetscCall(TSGetSolveTime(ctx->ts, &ftime)); in FormFunctionGradient()
294 PetscCall(TSGetStepNumber(ctx->ts, &steps)); in FormFunctionGradient()
296 if (ctx->sa == SA_ADJ) { in FormFunctionGradient()
299 PetscCall(TSGetCostGradients(ctx->ts, &nadj, &lambda, &mu)); in FormFunctionGradient()
309 PetscCall(TSAdjointSolve(ctx->ts)); in FormFunctionGradient()
311 PetscCall(ComputeSensiP(lambda[0], mu[0], ctx)); in FormFunctionGradient()
315 if (ctx->sa == SA_TLM) { in FormFunctionGradient()
323 PetscCall(TSGetSolution(ctx->quadts, &q)); in FormFunctionGradient()
325 *f = -ctx->Pm + x_ptr[0]; in FormFunctionGradient()