Actual source code: petsc-linesearchimpl.h
petsc-3.4.2 2013-07-02

      1: #ifndef __LINESEARCHIMPL_H

      4: #include <petscsnes.h>
      5: #include <petsc-private/petscimpl.h>

      7: typedef struct _LineSearchOps *LineSearchOps;

      9: struct _LineSearchOps {
     10:   PetscErrorCode (*view)(SNESLineSearch, PetscViewer);
     11:   SNESLineSearchApplyFunc        apply;
     12:   PetscErrorCode (*precheck)(SNESLineSearch,Vec,Vec,PetscBool*,void*);
     13:   SNESLineSearchVIProjectFunc    viproject;
     14:   SNESLineSearchVINormFunc       vinorm;
     15:   PetscErrorCode (*postcheck)(SNESLineSearch,Vec,Vec,Vec,PetscBool *,PetscBool *,void*);
     16:   PetscErrorCode (*setfromoptions)(SNESLineSearch);
     17:   PetscErrorCode (*reset)(SNESLineSearch);
     18:   PetscErrorCode (*destroy)(SNESLineSearch);
     19:   PetscErrorCode (*setup)(SNESLineSearch);
     20: };

     22: struct _p_LineSearch {
     23:   PETSCHEADER(struct _LineSearchOps);

     25:   SNES                snes;     /* temporary -- so we can pull out the function evaluation */

     27:   void                *data;

     29:   PetscBool           setupcalled;

     31:   Vec                 vec_sol;
     32:   Vec                 vec_sol_new;
     33:   Vec                 vec_func;
     34:   Vec                 vec_func_new;
     35:   Vec                 vec_update;

     37:   PetscInt            nwork;
     38:   Vec                 *work;

     40:   PetscReal           lambda;

     42:   PetscBool           norms;
     43:   PetscReal           fnorm;
     44:   PetscReal           ynorm;
     45:   PetscReal           xnorm;
     46:   PetscBool           success;
     47:   PetscBool           keeplambda;

     49:   PetscReal           damping;
     50:   PetscReal           maxstep;
     51:   PetscReal           steptol;
     52:   PetscInt            max_its;
     53:   PetscReal           rtol;
     54:   PetscReal           atol;
     55:   PetscReal           ltol;
     56:   PetscInt            order;

     58:   PetscReal           precheck_picard_angle;

     60:   void *              precheckctx;
     61:   void *              postcheckctx;

     63:   PetscViewer         monitor;

     65: };

     67: #endif