[petsc-dev] [petsc-users] petsc-users Digest, Vol 38, Issue 41

Barry Smith bsmith at mcs.anl.gov
Sun May 6 19:37:38 CDT 2012


  You present a case where the one level method should be a direct solve.  I don't think this disproves my point that there is NO correct general abstract or practical answer to what it should be.

   Perhaps this should be a property of PCMG, if in the one level case it is a direct solve or an iterative. Then when you create the PCMG for grid sequencing you call something like PCMGSetOneLevelDefaultDirectSolver() or some similar ugly name.

   Barry


On May 6, 2012, at 5:31 PM, Jed Brown wrote:

> On Sat, Feb 18, 2012 at 11:59 AM, Barry Smith <bsmith at mcs.anl.gov> wrote:
> > -pc_type mg with one level just applies a normal smoother. I've sometimes thought it should do a coarse-level solve instead, but I haven't messed with it. Barry, why doesn't it do a direct solve?
> 
> 
> 1) Because MG is an accelerator of the basic smoother, MG is not a deccelerator of a direct solver.  That is the action of adding a coarser level is suppose to improve the convergence of the solver.
> 
> 2) Because if you used a direct solver and the user switched from one to two levels they would be dismayed at the worsening of the convergence. If the user ran a large problem on one level it would run out of memory.
> 
> 3) I don't think there is really a "correct" abstract or practical answer to which it should be (hence my two snide answers above)   I am happy with the current default
> 
> So with -snes_grid_sequence, the first solve should do something reasonable. If we give -pc_type mg, the first solve in the sequence (-mg_levels_0_, not -mg_coarse_) is doing a crappy iterative solve. It's obnoxious to have to specify what to do for both of these separately, even though the problem is of the same size in both cases, so it's usually desirable for the same method to be used in both cases.




More information about the petsc-dev mailing list