[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