[petsc-users] Monotonic convergence in FGMRES.

Vijay S. Mahadevan vijay.m at gmail.com
Tue Dec 21 14:16:25 CST 2010


Jed, I ask because after the restart, the residual changes 10 orders
of magnitude and a-priori, it is quite hard to decide the restart
number. Yes in the test case I presented, the residual gets close
enough to the tolerance  and I can afford few more vector storage but
for a much refined problem, this might not be the case and so it
worries me.

My initial tests with bcgs were not satisfactory (very bad convergence
as compared to gmres) but I tried GCR just now and it seems to
converge correctly to the right solution, monotonically for the same
problem. Alternatively, yes, I could make my preconditioner stronger
(add more levels, more smoothing steps etc..) to converge within the
restart limit.

Barry, the matrix is not nearly singular although I have not yet
looked at the effectiveness of the preconditoner thoroughly yet. It is
possible that the preconditioned operator might have some undesired
properties. Just to compare, the same linear system without any
preconditioning takes about 2400 iterations and maybe that gives some
ball park metric on the efficiency of the preconditioner.. Let me know
if you want to know some other specific information to better
understand the system.

Vijay

On Tue, Dec 21, 2010 at 1:10 PM, Jed Brown <jed at 59a2.org> wrote:
> On Tue, Dec 21, 2010 at 19:53, Vijay S. Mahadevan <vijay.m at gmail.com> wrote:
>>
>> I am running a linear problem discretized with FEM on a diffusion
>> reaction system, with discontinuous source distribution. When I run
>> FGMRes with geometric multigrid as its preconditioner, I notice that
>> every time after the restart in fgmres, the new residual is orders of
>> magnitude higher than the previous iteration. I might be wrong on this
>> but should the restart not preserve monotonicity in convergence ? Or
>> am I thinking of a different variant of Gmres here.
>
> It is not possible to guarantee monotonicity for nonsymmetric matrices
> without storing the full subspace.  There is no variant of GMRES, or any
> Krylov method for that matter, that can do what you want.  You are seeing a
> particularly large jump, if you actually have a linear preconditioner (if
> you don't use Krylov cycles inside your smoothers) then you might try using
> bcgs or some variant thereof which would avoid the high cost of restart.  Or
> you could stop using restarts, it looks like you were getting close to an
> adequate tolerance.  Or find a way to make the preconditioner strong enough
> to converge in a reasonable number of iterations.


More information about the petsc-users mailing list