Lines Matching refs:user
124 AppCtx user; /* user-defined work context */ in main() local
139 user.rate = 0.04; in main()
140 user.sigma = 0.40; in main()
141 user.alpha = 2.00; in main()
142 user.delta = 0.01; in main()
143 user.strike = 10.0; in main()
144 user.expiry = 1.0; in main()
145 user.mt = 10; in main()
146 user.ms = 150; in main()
147 user.es = 100.0; in main()
150 PetscCall(PetscOptionsGetReal(NULL, NULL, "-alpha", &user.alpha, &flg)); in main()
151 PetscCall(PetscOptionsGetReal(NULL, NULL, "-delta", &user.delta, &flg)); in main()
152 PetscCall(PetscOptionsGetReal(NULL, NULL, "-es", &user.es, &flg)); in main()
153 PetscCall(PetscOptionsGetReal(NULL, NULL, "-expiry", &user.expiry, &flg)); in main()
154 PetscCall(PetscOptionsGetInt(NULL, NULL, "-ms", &user.ms, &flg)); in main()
155 PetscCall(PetscOptionsGetInt(NULL, NULL, "-mt", &user.mt, &flg)); in main()
156 PetscCall(PetscOptionsGetReal(NULL, NULL, "-rate", &user.rate, &flg)); in main()
157 PetscCall(PetscOptionsGetReal(NULL, NULL, "-sigma", &user.sigma, &flg)); in main()
158 PetscCall(PetscOptionsGetReal(NULL, NULL, "-strike", &user.strike, &flg)); in main()
162 user.ms++; in main()
163 PetscCall(DMDACreate1d(PETSC_COMM_WORLD, DM_BOUNDARY_NONE, user.ms, 1, 1, NULL, &user.dm)); in main()
164 PetscCall(DMSetFromOptions(user.dm)); in main()
165 PetscCall(DMSetUp(user.dm)); in main()
168 PetscCall(DMDAGetCorners(user.dm, &xs, NULL, NULL, &xm, NULL, NULL)); in main()
169 PetscCall(DMDAGetGhostCorners(user.dm, &gxs, NULL, NULL, &gxm, NULL, NULL)); in main()
171 PetscCall(DMCreateGlobalVector(user.dm, &x)); in main()
176 user.ds = user.es / (user.ms - 1); in main()
177 user.dt = user.expiry / user.mt; in main()
179 PetscCall(PetscMalloc1(gxm, &user.Vt1)); in main()
180 PetscCall(PetscMalloc1(gxm, &user.c)); in main()
181 PetscCall(PetscMalloc1(gxm, &user.d)); in main()
188 sval = (gxs + i) * user.ds; in main()
189 user.Vt1[i] = PetscMax(user.strike - sval, 0); in main()
190 user.c[i] = (user.delta - user.rate) * sval; in main()
191 user.d[i] = -0.5 * user.sigma * user.sigma * PetscPowReal(sval, user.alpha); in main()
193 if (gxs + gxm == user.ms) user.Vt1[gxm - 1] = 0; in main()
200 PetscCall(DMCreateMatrix(user.dm, &J)); in main()
209 PetscCall(TaoSetConstraintsRoutine(tao, c, FormConstraints, (void *)&user)); in main()
210 PetscCall(TaoSetJacobianRoutine(tao, J, J, FormJacobian, (void *)&user)); in main()
213 PetscCall(TaoSetVariableBoundsRoutine(tao, ComputeVariableBounds, (void *)&user)); in main()
217 for (i = 0; i < xm; i++) x_array[i] = user.Vt1[i - gxs + xs]; in main()
226 for (i = 1; i < user.mt; i++) { in main()
231 PetscCall(DMGetLocalVector(user.dm, &localX)); in main()
232 PetscCall(DMGlobalToLocalBegin(user.dm, x, INSERT_VALUES, localX)); in main()
233 PetscCall(DMGlobalToLocalEnd(user.dm, x, INSERT_VALUES, localX)); in main()
235 for (j = 0; j < gxm; j++) user.Vt1[j] = x_array[j]; in main()
237 PetscCall(DMRestoreLocalVector(user.dm, &localX)); in main()
247 PetscCall(DMDestroy(&user.dm)); in main()
249 PetscCall(PetscFree(user.Vt1)); in main()
250 PetscCall(PetscFree(user.c)); in main()
251 PetscCall(PetscFree(user.d)); in main()
260 AppCtx *user = (AppCtx *)ctx; in ComputeVariableBounds() local
263 PetscInt ms = user->ms; in ComputeVariableBounds()
269 PetscCall(DMDAGetCorners(user->dm, &xs, NULL, NULL, &xm, NULL, NULL)); in ComputeVariableBounds()
273 sval = (xs + i) * user->ds; in ComputeVariableBounds()
274 xl_array[i] = PetscMax(user->strike - sval, 0); in ComputeVariableBounds()
280 xl_array[0] = PetscMax(user->strike, 0); in ComputeVariableBounds()
305 AppCtx *user = (AppCtx *)ptr; in FormConstraints() local
307 PetscReal *Vt1 = user->Vt1, *c = user->c, *d = user->d; in FormConstraints()
308 PetscReal rate = user->rate; in FormConstraints()
309 PetscReal dt = user->dt, ds = user->ds; in FormConstraints()
310 PetscInt ms = user->ms; in FormConstraints()
316 PetscCall(DMGetLocalVector(user->dm, &localX)); in FormConstraints()
317 PetscCall(DMGetLocalVector(user->dm, &localF)); in FormConstraints()
318 PetscCall(DMGlobalToLocalBegin(user->dm, X, INSERT_VALUES, localX)); in FormConstraints()
319 PetscCall(DMGlobalToLocalEnd(user->dm, X, INSERT_VALUES, localX)); in FormConstraints()
320 PetscCall(DMDAGetCorners(user->dm, &xs, NULL, NULL, &xm, NULL, NULL)); in FormConstraints()
321 PetscCall(DMDAGetGhostCorners(user->dm, &gxs, NULL, NULL, &gxm, NULL, NULL)); in FormConstraints()
334 f[0] = x[0] - user->strike; in FormConstraints()
353 PetscCall(DMLocalToGlobalBegin(user->dm, localF, INSERT_VALUES, F)); in FormConstraints()
354 PetscCall(DMLocalToGlobalEnd(user->dm, localF, INSERT_VALUES, F)); in FormConstraints()
355 PetscCall(DMRestoreLocalVector(user->dm, &localX)); in FormConstraints()
356 PetscCall(DMRestoreLocalVector(user->dm, &localF)); in FormConstraints()
378 AppCtx *user = (AppCtx *)ptr; in FormJacobian() local
379 PetscReal *c = user->c, *d = user->d; in FormJacobian()
380 PetscReal rate = user->rate; in FormJacobian()
381 PetscReal dt = user->dt, ds = user->ds; in FormJacobian()
382 PetscInt ms = user->ms; in FormJacobian()
395 PetscCall(DMDAGetGhostCorners(user->dm, &gxs, NULL, NULL, &gxm, NULL, NULL)); in FormJacobian()