<div dir="ltr">Todd, can you come up with a reason why we might need to keep these fatol, frtol tests around? I would prefer to take them out.<div><br></div><div>Jason</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Sep 8, 2015 at 9:54 PM, Smith, Barry F. <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
  Jason,<br>
<br>
   Perhaps it is just documentation.<br>
<br>
/*@<br>
  TaoSetTolerances - Sets parameters used in TAO convergence tests<br>
<br>
  Logically collective on Tao<br>
<br>
  Input Parameters:<br>
+ tao - the Tao context<br>
. fatol - absolute convergence tolerance<br>
. frtol - relative convergence tolerance<br>
. gatol - stop if norm of gradient is less than this<br>
. grtol - stop if relative norm of gradient is less than this<br>
- gttol - stop if norm of gradient is reduced by this factor<br>
<br>
  Options Database Keys:<br>
+ -tao_fatol <fatol> - Sets fatol<br>
. -tao_frtol <frtol> - Sets frtol<br>
. -tao_gatol <gatol> - Sets gatol<br>
. -tao_grtol <grtol> - Sets grtol<br>
- -tao_gttol <gttol> - Sets gttol<br>
<br>
  Stopping Criteria:<br>
$ f(X) - f(X*) (estimated)            <= fatol<br>
$ |f(X) - f(X*)| (estimated) / |f(X)| <= frtol<br>
$ ||g(X)||                            <= gatol<br>
$ ||g(X)|| / |f(X)|                   <= grtol<br>
$ ||g(X)|| / ||g(X0)||                <= gttol<br>
<br>
How is f(x) - f(X*) (estimated) and how come the second definition has absolute values but the first does not?<br>
<br>
>From below it looks like f(x) - f(X*)  is estimated as gnorm*gnorm?<br>
<br>
  } else if (gnorm2 <= fatol && cnorm <=catol) {<br>
    ierr = PetscInfo2(tao,"Converged due to estimated f(X) - f(X*) = %g < %g\n",(double)gnorm2,(double)fatol);CHKERRQ(ierr);<br>
    reason = TAO_CONVERGED_FATOL;<br>
  } else if (f != 0 && gnorm2 / PetscAbsReal(f)<= frtol && cnorm/PetscMax(cnorm0,1.0) <= crtol) {<br>
    ierr = PetscInfo2(tao,"Converged due to estimated |f(X)-f(X*)|/f(X) = %g < %g\n",(double)(gnorm2/PetscAbsReal(f)),(double)frtol);CHKERRQ(ierr);<br>
    reason = TAO_CONVERGED_FRTOL;<br>
<br>
It seems the next test is the same as the first I list above exact gnorm is not squared? Why is it worth having this duplicate test?<br>
<br>
  } else if (gnorm<= gatol && cnorm <=catol) {<br>
    ierr = PetscInfo2(tao,"Converged due to residual norm ||g(X)||=%g < %g\n",(double)gnorm,(double)gatol);CHKERRQ(ierr);<br>
    reason = TAO_CONVERGED_GATOL;<br>
<br>
At a minimum the manual page should document what f(X) - f(X*) (estimated)     means.<br>
<br>
  Barry<br>
<br>
  } else if ( f!=0 && PetscAbsReal(gnorm/f) <= grtol && cnorm <= crtol) {<br>
    ierr = PetscInfo2(tao,"Converged due to residual ||g(X)||/|f(X)| =%g < %g\n",(double)(gnorm/f),(double)grtol);CHKERRQ(ierr);<br>
<br>
</blockquote></div><br></div>