Actual source code: taolinesearchimpl.h

petsc-3.11.2 2019-05-18
Report Typos and Errors
  1: #ifndef __TAOLINESEARCH_IMPL_H
  3:  #include <petscvec.h>
  4:  #include <petsc/private/petscimpl.h>
  5:  #include <petsctaolinesearch.h>

  7: typedef struct _TaoLineSearchOps *TaoLineSearchOps;
  8: struct _TaoLineSearchOps {
  9:     PetscErrorCode (*computeobjective)(TaoLineSearch, Vec, PetscReal*, void*);
 10:     PetscErrorCode (*computegradient)(TaoLineSearch, Vec, Vec, void*);
 11:     PetscErrorCode (*computeobjectiveandgradient)(TaoLineSearch, Vec, PetscReal *, Vec, void*);
 12:     PetscErrorCode (*computeobjectiveandgts)(TaoLineSearch, Vec, Vec, PetscReal*, PetscReal*,void*);
 13:     PetscErrorCode (*setup)(TaoLineSearch);
 14:     PetscErrorCode (*apply)(TaoLineSearch,Vec,PetscReal*,Vec,Vec);
 15:     PetscErrorCode (*view)(TaoLineSearch,PetscViewer);
 16:     PetscErrorCode (*setfromoptions)(PetscOptionItems*,TaoLineSearch);
 17:     PetscErrorCode (*reset)(TaoLineSearch);
 18:     PetscErrorCode (*destroy)(TaoLineSearch);
 19:     PetscErrorCode (*monitor)(TaoLineSearch);
 20: };

 22: struct _p_TaoLineSearch {
 23:     PETSCHEADER(struct _TaoLineSearchOps);
 24:     void *userctx_func;
 25:     void *userctx_grad;
 26:     void *userctx_funcgrad;
 27:     void *userctx_funcgts;
 28:     PetscBool usemonitor;
 29:     PetscViewer viewer;
 30: 
 31:     PetscBool setupcalled;
 32:     PetscBool usegts;
 33:     PetscBool usetaoroutines;
 34:     PetscBool hasobjective;
 35:     PetscBool hasgradient;
 36:     PetscBool hasobjectiveandgradient;
 37:     void *data;

 39:     /* bounds used for some line searches */
 40:     Vec lower;
 41:     Vec upper;
 42:     PetscInt bounded;

 44:     Vec start_x;
 45:     Vec stepdirection;
 46:     PetscReal f_fullstep;
 47:     PetscReal new_f;
 48:     Vec new_x;
 49:     Vec new_g;

 51:     PetscReal step;
 52:     PetscReal initstep;

 54:     PetscInt max_funcs;
 55:     PetscInt nfeval;
 56:     PetscInt ngeval;
 57:     PetscInt nfgeval;
 58:     TaoLineSearchConvergedReason reason;

 60:     PetscReal rtol;      /* relative tol for acceptable step (rtol>0) */
 61:     PetscReal ftol;      /* tol for sufficient decr. condition (ftol>0) */
 62:     PetscReal gtol;      /* tol for curvature condition (gtol>0)*/
 63:     PetscReal stepmin;   /* lower bound for step */
 64:     PetscReal stepmax;   /* upper bound for step */

 66:     Tao tao;
 67: };

 69: PETSC_EXTERN PetscLogEvent TAOLINESEARCH_Apply;
 70: PETSC_EXTERN PetscLogEvent TAOLINESEARCH_Eval;
 71: #endif