For a large parallel sparse matrix (mpiaij type matrix) in my code, I was experimenting with various preconditioners to see which one would do best with GMRES/BiCGSTAB. I tried the PCMG preconditioner without specifying any grid/interpolation/restriction information, and this actually seemed to do pretty well for my problem. At first, I was confused about what this actually did since I didn't give PETSc any information about the grid and whatnot, but I think that all it is doing is performing a single smoothing step. Thus, I wanted to know what exactly this "smoother" is since it seems to work fairly well as a preconditioner. I tried looking through the PCMG documentation but I couldn't figure it out.
Could someone tell me what the default smoother is for the PCMG preconditioner, or at least offer some advice on how I could figure out what it is? I've tried scouring through the PETSc documentation without much luck.
EDIT: As noted in the comments below, it seems that it is the Chebyshev smoother. However, PETSc documentation says Chebyshev only works for symmetric positive (semi) definite matrices. So, how can this be? Can someone explain this?
-ksp_view
or-snes_view
to look at what your solver actually consists of. (This is a key step when it first starts to work decently, so you know what to credit!) It will tell you that your (default) smoother is Chebyshev when you have chosen-pc_type mg
. $\endgroup$