[petsc-users] DIVERGED_DTOL

Barry Smith bsmith at mcs.anl.gov
Tue Jan 8 13:02:08 CST 2013


  If the solver residual norms jump up a great deal during the run and then eventually settle down then you can set a very large dtol to prevent the termination  BUT I don't recommend using solvers where the residual norms jump up that much, it would better to use a solver where the residual is mostly monotonically decreasing.

    Barry

On Jan 8, 2013, at 11:58 AM, Jed Brown <jedbrown at mcs.anl.gov> wrote:

> On Tue, Jan 8, 2013 at 11:50 AM, w_ang_temp <w_ang_temp at 163.com> wrote:
> 
> I am sorry.
> In my view, preconditioned resid norm:||rp||=||Bb-BAx||(B is the preconditioned matrix);
> 
> -ksp_norm_type preconditioned is the default for GMRES, so it's using preconditioned residual.
>  
> true resid norm:||rt||=||b-Ax||;  ||r(i)||/||b||:  ||rt||/||b||.   Is it right?
> (1) Divergence is detected if 
>     
>     ||rp||/||b|| > dtol     or     ||rt||/||b|| > dtol  ?
> 
> Neither, it's |rp|/|min(rp0,rp1,rp2,rp3,...)|. Your solver "converges" a bit at some iteration and then jumps a lot so the denominator is smaller than rp0.
>  
>     Both of them (rt/b:1.701448294063e+04 / 6.7139E+4; rt/b:2.716078947576e+04; dtol=1.0E+5 )
> are not in this example, but it is divergent?
> 
> (2) Convergence is detected at iteration k if :
>     ||rp||/||b|| < rtol
>     But I find that when "preconditioned resid norm" is less than rtol, it begins to be convergent(another example,rtol=1.0E-15):
> 19 KSP preconditioned resid norm 4.964358598559e-15 true resid norm 1.076736705942e-08 ||r(i)||/||b|| 1.603737473724e-13
> 120 KSP preconditioned resid norm 1.045516340849e-14 true resid norm 1.089531944048e-08 ||r(i)||/||b|| 1.622795245901e-13
> 121 KSP preconditioned resid norm 1.209016864072e-14 true resid norm 1.096191254361e-08 ||r(i)||/||b|| 1.632713906089e-13
> 122 KSP preconditioned resid norm 1.568004225873e-15 true resid norm 1.073893120243e-08 ||r(i)||/||b|| 1.599502116167e-13
> 123 KSP preconditioned resid norm 5.066448468788e-15 true resid norm 1.078375214589e-08 ||r(i)||/||b|| 1.606177938235e-13
> 124 KSP preconditioned resid norm 3.619818305395e-16 true resid norm 1.073887987132e-08 ||r(i)||/||b|| 1.599494470692e-13
> Linear solve converged due to CONVERGED_RTOL iterations 124
>     In iteration 124, preconditioned resid norm begins to be smaller than rtol.
> 
>     Thanks.                                 Jim
> 
> 
> 
> 
> >On 2013-01-09 01:13:44,"Jed Brown" <jedbrown at mcs.anl.gov> 写道:
> 
> >>On Tue, Jan 8, 2013 at 11:08 AM, w_ang_temp <w_ang_temp at 163.com> wrote:
> >>354 KSP preconditioned resid norm 2.882557881065e-01 true resid norm 3.089426814670e+04 ||r(i)||/||b|| 4.601523777979e-01
> 
> >^^ Notice how this ratio is less than 1.0? DTOL is defined in terms of the smallest residual norm seen.
>  
> >>355 KSP preconditioned resid norm 2.170676916299e+02 true resid norm 2.326457175403e+07 ||r(i)||/||b|| 3.465124326697e+02
> >>356 KSP preconditioned resid norm 5.764266225925e+00 true resid norm 6.177943120636e+05 ||r(i)||/||b|| 9.20169 1405543e+00
> >>357 KSP preconditioned resid norm 1.701448294063e+04 true resid norm 1.823554008687e+09 ||r(i)||/||b|| 2.716078947576e+04
> 
> >>Linear solve did not converge due to DIVERGED_DTOL iterations 357
>  
> >>I cannot understand it. Which one means that the DIVERGED_DTOL occures:preconditioned resid norm, true resid norm or ||r(i)||/||b||?
> >>What is the difference between preconditioned resid norm  and true resid norm?
> 
> >It uses the norm that your method is running. In this case, it's the preconditioned norm.
> 
> 
> 



More information about the petsc-users mailing list