Dear petsc-users, I am currently trying to use the PCMG object and had some questions with the preconditioner.
--------------------------------------------------------- 1. In this multigrid preconditioner, the default KSP smoother seems to be GMRES. If one wanted to use the Gauss-Seidel iteration as a smoother what would one do? The solution that I thought feasible is to use the PCGauss-Seidel and set this into the KSP smoother, and set the Krylov solver type to KSPPreonly. Since we are using a Gauss-Seidel smoothing and in the case that we include post-smoothing, the smoother must be able to incorporate a nonzero initial guess. Thus one would think of setting the flag for KSPSetInitialGuessNonzero. Unfortunately the combination of, -KSPPreonly -KSPSetInitialGuessNonzero is rejected in /src/ksp/ksp/impls/preonly/preonly.c line:24. Here it advises one to use a Richardson but that is not what I would like. 2. In the setting of the coarse grid KSP smoother(solver) in PCMG, in the function PCSetUp_MG in file /src/ksp/pc/impls/mg/mg.c line:474 there is a setting that requires one to only be able to use lu, redundant, or cholesky as the solver in the case of preonly. This means that one would not again be able to use the type of solver that I have stated above, a Gauss-Seidel solver or any other user-specified stationary solver with KSPPreonly. --------------------------------------------------------- If you have any comments or tricks to get by this, it would be very helpful. Sincerely, -Tsuyoshi Koyama
