Actual source code: tao_app_monitor.c

  1: #include "tao_app_impl.h"     /*I  "tao.h"  I*/

  6: /*@C
  7:    TaoAppCheckConvergence - Check convergence of application.

  9:    Collective on TAO_APPLICATION

 11:    Input Parameters:
 12: +  taoapp - the TAO_APPLICATION context
 13: .  GL - the gradient of the Lagrangian function

 15:    Output Parameters:
 16: .  flag - set to PETSC_TRUE if the TAO solver should stop.

 18:    Level: developer

 20: .keywords: TAO_APPLICATION, monitor

 22: @*/
 23: int TaoAppCheckConvergence(TAO_APPLICATION taoapp, Vec GL, PetscTruth *flag){
 24:   int info,n;
 25:   double glnorm;
 28:   info=VecNorm(GL,NORM_2,&glnorm);  CHKERRQ(info);
 29:   info=VecGetSize(GL,&n);  CHKERRQ(info);
 30:   *flag=PETSC_FALSE;
 31:   if (glnorm/sqrt((double)n) < taoapp->grtol) *flag=PETSC_TRUE;
 32:   return(0);
 33: }


 38: /*@C
 39:    TaoAppSetRelativeTolerance - Set convergence tolerance

 41:    Collective on TAO_APPLICATION

 43:    Input Parameters:
 44: +  taoapp - the TAO_APPLICATION context
 45: .  grtol - relative tolerance

 47:    Level: intermediate

 49: .keywords: TAO_APPLICATION, monitor

 51: @*/
 52: int TaoAppSetRelativeTolerance(TAO_APPLICATION taoapp, double grtol){
 55:   taoapp->grtol=grtol;
 56:   return(0);
 57: }