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.


Reply via email to