So in response to this discussion, and since we need to do something, I propose a few changes. If you disagree with any of these defaults, please speak up and suggest alternatives.<div><br></div><div>1. Change Chebychev to be configured as a smoother by default, effectively -ksp_chebychev_estimate_eigenvalues 0,0.1,0,1.1. Users with a priori information about eigenvalues should know it and be willing to change the defaults. I think the vast majority of user want cheby to be a smoother instead of a solver.</div>
<div><br></div><div>2. Have -pc_type mg use cheby(1) as the ksp by default. Note that this is quite a bit more setup than richardson or gmres, but more robust than richardson and many fewer dot products (assuming a nontrivial number of iterations) than GMRES.</div>
<div><br></div><div>3. Use -mg_levels_pc_type pbjacobi as the preconditioner for cheby when the system is symmetric. When non-symmetric, use -mg_levels_pc_type sor.</div><div><br></div><div><br></div><div><br></div><div>This makes the V-cycle linear by default. For symmetric problems, this configuration is also the same algorithm is serial and in parallel.</div>
<div><br></div><div>Barry, you had a suggestion for not throwing away the work done by GMRES when estimating eigenvalues. Can you do that and still have a linear method?</div><div><br></div><div>Since GMRES stores the Krylov basis, it seems to me that it should be possible to reconstruct the Chebychev polynomial after running a few cycles of GMRES, so that would be a different way to not throw away work done in setup.</div>
<div><br></div><div>There are ways to do several cycles of GMRES, do a bunch of dot products with one MPI_Allreduce, and then orthogonalize the subspace in one shot. That would be handy here because Cheby setup will cost a lot of reductions if there are many levels.</div>