Lines Matching refs:ctx
57 static PetscErrorCode RHSFunction(TS ts, PetscReal t, Vec U, Vec F, AppCtx *ctx) in RHSFunction() argument
66 …if ((t > ctx->tf) && (t < ctx->tcl)) Pmax = 0.0; /* A short-circuit on the generator terminal that… in RHSFunction()
67 else Pmax = ctx->Pmax; in RHSFunction()
69 f[0] = ctx->omega_b * (u[1] - ctx->omega_s); in RHSFunction()
70 …f[1] = (-Pmax * PetscSinScalar(u[0]) - ctx->D * (u[1] - ctx->omega_s) + ctx->Pm) * ctx->omega_s / … in RHSFunction()
80 static PetscErrorCode RHSJacobian(TS ts, PetscReal t, Vec U, Mat A, Mat B, AppCtx *ctx) in RHSJacobian() argument
88 …if ((t > ctx->tf) && (t < ctx->tcl)) Pmax = 0.0; /* A short-circuit on the generator terminal that… in RHSJacobian()
89 else Pmax = ctx->Pmax; in RHSJacobian()
92 J[0][1] = ctx->omega_b; in RHSJacobian()
93 J[1][1] = -ctx->D * ctx->omega_s / (2.0 * ctx->H); in RHSJacobian()
94 J[1][0] = -Pmax * PetscCosScalar(u[0]) * ctx->omega_s / (2.0 * ctx->H); in RHSJacobian()
112 AppCtx *ctx = (AppCtx *)ctx0; in RHSJacobianP() local
116 J[1][0] = ctx->omega_s / (2.0 * ctx->H); in RHSJacobianP()
123 static PetscErrorCode CostIntegrand(TS ts, PetscReal t, Vec U, Vec R, AppCtx *ctx) in CostIntegrand() argument
131 r[0] = ctx->c * PetscPowScalarInt(PetscMax(0., u[0] - ctx->u_s), ctx->beta); in CostIntegrand()
137 static PetscErrorCode DRDUJacobianTranspose(TS ts, PetscReal t, Vec U, Mat DRDU, Mat B, AppCtx *ctx) in DRDUJacobianTranspose() argument
145 ru[0] = ctx->c * ctx->beta * PetscPowScalarInt(PetscMax(0., u[0] - ctx->u_s), ctx->beta - 1); in DRDUJacobianTranspose()
153 static PetscErrorCode DRDPJacobianTranspose(TS ts, PetscReal t, Vec U, Mat DRDP, AppCtx *ctx) in DRDPJacobianTranspose() argument
162 PetscErrorCode ComputeSensiP(Vec lambda, Vec mu, AppCtx *ctx) in ComputeSensiP() argument
170 …sensip = 1. / PetscSqrtScalar(1. - (ctx->Pm / ctx->Pmax) * (ctx->Pm / ctx->Pmax)) / ctx->Pmax * x[… in ComputeSensiP()
186 AppCtx ctx; in main() local
229 ctx.beta = 2; in main()
230 ctx.c = 10000.0; in main()
231 ctx.u_s = 1.0; in main()
232 ctx.omega_s = 1.0; in main()
233 ctx.omega_b = 120.0 * PETSC_PI; in main()
234 ctx.H = 5.0; in main()
235 PetscCall(PetscOptionsScalar("-Inertia", "", "", ctx.H, &ctx.H, NULL)); in main()
236 ctx.D = 5.0; in main()
237 PetscCall(PetscOptionsScalar("-D", "", "", ctx.D, &ctx.D, NULL)); in main()
238 ctx.E = 1.1378; in main()
239 ctx.V = 1.0; in main()
240 ctx.X = 0.545; in main()
241 ctx.Pmax = ctx.E * ctx.V / ctx.X; in main()
242 PetscCall(PetscOptionsScalar("-Pmax", "", "", ctx.Pmax, &ctx.Pmax, NULL)); in main()
243 ctx.Pm = 1.1; in main()
244 PetscCall(PetscOptionsScalar("-Pm", "", "", ctx.Pm, &ctx.Pm, NULL)); in main()
245 ctx.tf = 0.1; in main()
246 ctx.tcl = 0.2; in main()
247 PetscCall(PetscOptionsReal("-tf", "Time to start fault", "", ctx.tf, &ctx.tf, NULL)); in main()
248 PetscCall(PetscOptionsReal("-tcl", "Time to end fault", "", ctx.tcl, &ctx.tcl, NULL)); in main()
251 ctx.tf = -1; in main()
252 ctx.tcl = -1; in main()
256 u[0] = PetscAsinScalar(ctx.Pm / ctx.Pmax); in main()
265 ctx.tf = -1; in main()
266 ctx.tcl = -1; in main()
278 PetscCall(TSSetRHSFunction(ts, NULL, (TSRHSFunctionFn *)RHSFunction, &ctx)); in main()
279 PetscCall(TSSetRHSJacobian(ts, A, A, (TSRHSJacobianFn *)RHSJacobian, &ctx)); in main()
281 PetscCall(TSSetRHSFunction(quadts, NULL, (TSRHSFunctionFn *)CostIntegrand, &ctx)); in main()
282 PetscCall(TSSetRHSJacobian(quadts, DRDU, DRDU, (TSRHSJacobianFn *)DRDUJacobianTranspose, &ctx)); in main()
283 PetscCall(TSSetRHSJacobianP(quadts, DRDP, (TSRHSJacobianPFn *)DRDPJacobianTranspose, &ctx)); in main()
285 PetscCall(TSSetRHSJacobianP(ts, Jacp, RHSJacobianP, &ctx)); in main()
323 u[0] = PetscAsinScalar(ctx.Pm / ctx.Pmax); in main()
324 u[1] = ctx.omega_s; in main()
359 PetscCall(PetscPrintf(PETSC_COMM_WORLD, "\n cost function=%g\n", (double)(x_ptr[0] - ctx.Pm))); in main()
362 PetscCall(ComputeSensiP(lambda[0], mu[0], &ctx)); in main()