Lines Matching refs:param
76 PetscParam param;
112 appctx.param.N = 10; /* order of the spectral element */
113 appctx.param.E = 10; /* number of elements */
114 appctx.param.L = 4.0; /* length of the domain */
115 appctx.param.mu = 0.01; /* diffusion coefficient */
117 appctx.param.steps = PETSC_INT_MAX;
118 appctx.param.Tend = 4;
120 PetscCall(PetscOptionsGetInt(NULL, NULL, "-N", &appctx.param.N, NULL));
121 PetscCall(PetscOptionsGetInt(NULL, NULL, "-E", &appctx.param.E, NULL));
122 PetscCall(PetscOptionsGetReal(NULL, NULL, "-Tend", &appctx.param.Tend, NULL));
123 PetscCall(PetscOptionsGetReal(NULL, NULL, "-mu", &appctx.param.mu, NULL));
124 appctx.param.Le = appctx.param.L / appctx.param.E;
127 PetscCheck((appctx.param.E % size) == 0, PETSC_COMM_WORLD, PETSC_ERR_ARG_WRONG, "Number of elements must be divisible by number of processes");
132 PetscCall(PetscMalloc2(appctx.param.N, &appctx.SEMop.gll.nodes, appctx.param.N, &appctx.SEMop.gll.weights));
133 PetscCall(PetscDTGaussLobattoLegendreQuadrature(appctx.param.N, PETSCGAUSSLOBATTOLEGENDRE_VIA_LINEAR_ALGEBRA, appctx.SEMop.gll.nodes, appctx.SEMop.gll.weights));
134 appctx.SEMop.gll.n = appctx.param.N;
135 lenglob = appctx.param.E * (appctx.param.N - 1);
167 xs = xs / (appctx.param.N - 1);
168 xm = xm / (appctx.param.N - 1);
175 for (j = 0; j < appctx.param.N - 1; j++) {
176 x = (appctx.param.Le / 2.0) * (appctx.SEMop.gll.nodes[j] + 1.0) + appctx.param.Le * i;
177 ind = i * (appctx.param.N - 1) + j;
179 wrk_ptr2[ind] = .5 * appctx.param.Le * appctx.SEMop.gll.weights[j];
180 if (j == 0) wrk_ptr2[ind] += .5 * appctx.param.Le * appctx.SEMop.gll.weights[j];
226 PetscCall(TSSetMaxSteps(appctx.ts, appctx.param.steps));
227 PetscCall(TSSetMaxTime(appctx.ts, appctx.param.Tend));
239 PetscCall(ComputeObjective(appctx.param.Tend, appctx.dat.obj, &appctx));
304 for (i = xs; i < xs + xn; i++) s[i] = 2.0 * appctx->param.mu * PETSC_PI * PetscSinScalar(PETSC_PI * xg[i]) / (2.0 + PetscCosScalar(PETSC_PI * xg[i])) + 0.25 * PetscExpReal(-4.0 * PetscPowReal(xg[i] - 2.0, 2.0));
332 for (i = xs; i < xs + xn; i++) s[i] = 2.0 * appctx->param.mu * PETSC_PI * PetscSinScalar(PETSC_PI * xg[i]) / (2.0 + PetscCosScalar(PETSC_PI * xg[i]));
358 s[i] = 2.0 * appctx->param.mu * PETSC_PI * PetscSinScalar(PETSC_PI * xg[i]) * PetscExpScalar(-PETSC_PI * PETSC_PI * t * appctx->param.mu) / (2.0 + PetscExpScalar(-PETSC_PI * PETSC_PI * t * appctx->param.mu) * PetscCosScalar(PETSC_PI * xg[i]));
439 PetscCheck(appctx->param.N > 1, PETSC_COMM_WORLD, PETSC_ERR_ARG_WRONG, "Spectral element order should be > 1");
442 for (i = 0; i < appctx->param.N; i++) {
443 vv = -appctx->param.mu * 2.0 / appctx->param.Le;
444 for (j = 0; j < appctx->param.N; j++) temp[i][j] = temp[i][j] * vv;
450 xs = xs / (appctx->param.N - 1);
451 xn = xn / (appctx->param.N - 1);
453 PetscCall(PetscMalloc1(appctx->param.N, &rowsDM));
458 for (l = 0; l < appctx->param.N; l++) rowsDM[l] = 1 + (j - xs) * (appctx->param.N - 1) + l;
459 PetscCall(MatSetValuesLocal(A, appctx->param.N, rowsDM, appctx->param.N, rowsDM, &temp[0][0], ADD_VALUES));
503 xs = xs / (appctx->param.N - 1);
504 xn = xn / (appctx->param.N - 1);
506 PetscCall(PetscMalloc1(appctx->param.N, &rowsDM));
508 for (l = 0; l < appctx->param.N; l++) rowsDM[l] = 1 + (j - xs) * (appctx->param.N - 1) + l;
509 PetscCall(MatSetValuesLocal(A, appctx->param.N, rowsDM, appctx->param.N, rowsDM, &temp[0][0], ADD_VALUES));