Lines Matching refs:k

6 static PetscErrorCode CheckPullback(PetscInt N, PetscInt M, const PetscReal *L, PetscInt k, const P…  in CheckPullback()  argument
13 PetscBool negative = (PetscBool)(k < 0); in CheckPullback()
16 k = PetscAbsInt(k); in CheckPullback()
17 PetscCall(PetscDTBinomialInt(N, k, &Nk)); in CheckPullback()
18 PetscCall(PetscDTBinomialInt(M, k, &Mk)); in CheckPullback()
21 PetscCall(PetscDTAltVStar(M, M - k, 1, w, walloc)); in CheckPullback()
26 PetscCall(PetscMalloc2(Nk, &Lstarw, M * k, &Lx)); in CheckPullback()
28 PetscCall(PetscDTAltVPullback(N, M, L, negative ? -k : k, w, Lstarw)); in CheckPullback()
29 PetscCall(PetscDTAltVPullbackMatrix(N, M, L, negative ? -k : k, Lstar)); in CheckPullback()
34 PetscCall(PetscDTAltVStar(N, N - k, 1, Lstarw, sLsw)); in CheckPullback()
35 PetscCall(PetscDTAltVApply(N, k, sLsw, x, &Lstarwx)); in CheckPullback()
38 PetscCall(PetscDTAltVApply(N, k, Lstarw, x, &Lstarwx)); in CheckPullback()
40 for (l = 0; l < k; l++) { in CheckPullback()
75 PetscCall(PetscDTAltVApply(M, k, ww, Lx, &wLx)); in CheckPullback()
104 PetscInt k, N = n[i]; in main() local
115 for (k = 1; k <= N; k++) fac *= k; in main()
118 for (k = 0; k < fac; k++) { in main()
122 PetscCall(PetscDTEnumPerm(N, k, perm, &isOdd)); in main()
123 PetscCall(PetscViewerASCIIPrintf(viewer, "%" PetscInt_FMT ":", k)); in main()
127k && isOddCheck == isOdd, PETSC_COMM_SELF, PETSC_ERR_PLIB, "PetscDTEnumPerm / PetscDTPermIndex mis… in main()
132 for (k = 0; k <= N; k++) { in main()
137 PetscCall(PetscDTBinomialInt(N, k, &Nk)); in main()
138 if (verbose) PetscCall(PetscViewerASCIIPrintf(viewer, "k = %" PetscInt_FMT ":\n", k)); in main()
140 …SCIIPrintf(viewer, "(%" PetscInt_FMT " choose %" PetscInt_FMT "): %" PetscInt_FMT "\n", N, k, Nk)); in main()
149 PetscCall(PetscDTEnumSplit(N, k, j, subset, &isOdd)); in main()
156 … for (l = 0; l < k; l++) PetscCall(PetscPrintf(PETSC_COMM_WORLD, " %" PetscInt_FMT, subset[l])); in main()
158 … for (l = k; l < N; l++) PetscCall(PetscPrintf(PETSC_COMM_WORLD, " %" PetscInt_FMT, subset[l])); in main()
161 PetscCall(PetscDTSubsetIndex(N, k, subset, &jCheck)); in main()
171 PetscCall(PetscMalloc1(N * k, &v)); in main()
172 for (j = 0; j < N * k; j++) PetscCall(PetscRandomGetValueReal(rand, &v[j])); in main()
174 PetscCall(PetscDTAltVApply(N, k, w, v, &wv)); in main()
183 if (N * k > 0) PetscCall(PetscRealView(N * k, v, viewer)); in main()
189 if (k == 1) { /* 1-forms are functionals (dot products) */ in main()
198 if (k == N && N < 5) { /* n-forms are scaled determinants */ in main()
201 switch (k) { in main()
224 if (k > 0) { /* k-forms are linear in each component */ in main()
231 PetscCall(PetscMalloc2(N * k, &x, N * k, &axv)); in main()
233 PetscCall(PetscRandomSetInterval(rand, 0, k)); in main()
237 for (l = 0; l < N * k; l++) x[l] = v[l]; in main()
238 for (l = 0; l < N * k; l++) axv[l] = v[l]; in main()
246 PetscCall(PetscDTAltVApply(N, k, w, x, &wx)); in main()
247 PetscCall(PetscDTAltVApply(N, k, w, axv, &waxv)); in main()
253 if (k > 1) { /* k-forms are antisymmetric */ in main()
257 PetscCall(PetscRandomSetInterval(rand, 0, k)); in main()
266 PetscCall(PetscMalloc1(N * k, &swapv)); in main()
267 for (m = 0; m < N * k; m++) swapv[m] = v[m]; in main()
272 PetscCall(PetscDTAltVApply(N, k, w, swapv, &wswapv)); in main()
277 for (j = 0; j <= k && j + k <= N; j++) { /* wedge product */ in main()
285 PetscCall(PetscDTBinomialInt(N, j + k, &Njk)); in main()
286 PetscCall(PetscMalloc4(Nj, &u, Njk, &uWw, N * (j + k), &x, N * (j + k), &xsplit)); in main()
287 PetscCall(PetscMalloc1(j + k, &split)); in main()
289 for (l = 0; l < N * (j + k); l++) PetscCall(PetscRandomGetValueReal(rand, &x[l])); in main()
290 PetscCall(PetscDTAltVWedge(N, j, k, u, w, uWw)); in main()
291 PetscCall(PetscDTAltVApply(N, j + k, uWw, x, &uWwx)); in main()
303 if (N * (j + k) > 0) PetscCall(PetscRealView(N * (j + k), x, viewer)); in main()
309 PetscCall(PetscDTBinomialInt(j + k, j, &JKj)); in main()
315 PetscCall(PetscDTEnumSplit(j + k, j, l, split, &isOdd)); in main()
316 for (m = 0; m < j + k; m++) { in main()
320 PetscCall(PetscDTAltVApply(N, k, w, PetscSafePointerPlusOffset(xsplit, j * N), &wx)); in main()
324 …rms %" PetscInt_FMT " & %" PetscInt_FMT ", uWwxcheck (%g) != uWwx (%g)", j, k, (double)uWwxcheck, … in main()
327 PetscCall(PetscDTAltVWedgeMatrix(N, j, k, u, uWwmat)); in main()
352 for (M = PetscMax(1, k); M <= N; M++) { /* pullback */ in main()
356 PetscCall(PetscDTBinomialInt(M, k, &Mk)); in main()
357 PetscCall(PetscMalloc3(M * N, &L, Mk, &u, M * k, &x)); in main()
360 for (l = 0; l < M * k; l++) PetscCall(PetscRandomGetValueReal(rand, &x[l])); in main()
363 PetscCall(CheckPullback(M, N, L, k, w, x, verbose, viewer)); in main()
364 if (M != N) PetscCall(CheckPullback(N, M, L, k, u, v, PETSC_FALSE, viewer)); in main()
366 if ((k % N) && (N > 1)) { in main()
369 PetscCall(CheckPullback(M, N, L, -k, w, x, verbose, viewer)); in main()
370 if (M != N) PetscCall(CheckPullback(N, M, L, -k, u, v, PETSC_FALSE, viewer)); in main()
375 if (k > 0) { /* Interior */ in main()
381 PetscCall(PetscDTBinomialInt(N, k - 1, &Nkm)); in main()
382 …loc5(Nkm, &wIntv0, Nkm, &wIntv0check, Nk * Nkm, &intv0mat, Nk * Nkm, &matcheck, Nk * k, &indices)); in main()
383 PetscCall(PetscDTAltVInterior(N, k, w, v, wIntv0)); in main()
384 PetscCall(PetscDTAltVInteriorMatrix(N, k, v, intv0mat)); in main()
385 PetscCall(PetscDTAltVInteriorPattern(N, k, indices)); in main()
389 for (l = 0; l < Nk * k; l++) { in main()
399 for (l = 0; l < Nk * k; l++) { in main()
444 PetscCall(PetscDTAltVApply(N, k - 1, wIntv0, &v[N], &wvcheck)); in main()
449 if (k >= N - k) { /* Hodge star */ in main()
455 isOdd = (PetscBool)((k * (N - k)) & 1); in main()
457 PetscCall(PetscDTAltVStar(N, k, 1, w, starw)); in main()
458 PetscCall(PetscDTAltVStar(N, N - k, 1, starw, starstarw)); in main()
471 PetscCall(PetscDTAltVWedge(N, k, N - k, w, u, &wu)); in main()