Lines Matching full:levels
4 -l N Use N Levels. \n\
31 PetscInt x_mesh = 15, levels = 3, cycles = 1, use_jacobi = 0; in main() local
44 PetscCall(PetscOptionsGetInt(NULL, NULL, "-l", &levels, NULL)); in main()
55 PetscCall(PetscMalloc1(levels, &N)); in main()
57 for (i = 1; i < levels; i++) { in main()
59 …PetscCheck(N[i] >= 1, PETSC_COMM_WORLD, PETSC_ERR_USER, "Too many levels or N is not large enough"… in main()
62 PetscCall(Create1dLaplacian(N[levels - 1], &cmat)); in main()
68 PetscCall(PCMGSetLevels(pcmg, levels, NULL)); in main()
78 for (i = 0; i < levels - 1; i++) { in main()
81 PetscCall(PCMGSetResidual(pcmg, levels - 1 - i, residual, NULL)); in main()
85 PetscCall(PCMGSetInterpolation(pcmg, levels - 1 - i, mat[i])); in main()
86 PetscCall(PCMGSetRestriction(pcmg, levels - 1 - i, mat[i])); in main()
87 PetscCall(PCMGSetCycleTypeOnLevel(pcmg, levels - 1 - i, (PCMGCycleType)cycles)); in main()
90 PetscCall(PCMGGetSmoother(pcmg, levels - 1 - i, &ksp[i])); in main()
117 X[levels - 1 - i] = x; in main()
118 if (i > 0) PetscCall(PCMGSetX(pcmg, levels - 1 - i, x)); in main()
121 B[levels - 1 - i] = x; in main()
122 if (i > 0) PetscCall(PCMGSetRhs(pcmg, levels - 1 - i, x)); in main()
125 R[levels - 1 - i] = x; in main()
127 PetscCall(PCMGSetR(pcmg, levels - 1 - i, x)); in main()
130 PetscCall(VecCreateSeq(PETSC_COMM_SELF, N[levels - 1], &x)); in main()
133 PetscCall(VecCreateSeq(PETSC_COMM_SELF, N[levels - 1], &x)); in main()
143 PetscCall(CalculateRhs(B[levels - 1])); in main()
144 PetscCall(VecSet(X[levels - 1], 0.0)); in main()
146 PetscCall(residual((Mat)0, B[levels - 1], X[levels - 1], R[levels - 1])); in main()
147 PetscCall(CalculateError(solution, X[levels - 1], R[levels - 1], e)); in main()
150 PetscCall(KSPSolve(kspmg, B[levels - 1], X[levels - 1])); in main()
152 PetscCall(residual((Mat)0, B[levels - 1], X[levels - 1], R[levels - 1])); in main()
153 PetscCall(CalculateError(solution, X[levels - 1], R[levels - 1], e)); in main()
161 for (i = 0; i < levels; i++) { in main()
166 for (i = 0; i < levels - 1; i++) PetscCall(MatDestroy(&mat[i])); in main()