Actual source code: owlqn.h

      1: /*
      2:  Context for limited memory variable metric method for unconstrained
      3:  optimization.
      4: */

      6: #pragma once
      7: #include <petsc/private/taoimpl.h>

      9: typedef struct {
     10:   Mat M;

     12:   Vec X;
     13:   Vec G;
     14:   Vec D;
     15:   Vec W;
     16:   Vec GV; /* the pseudo gradient */

     18:   Vec Xold;
     19:   Vec Gold;

     21:   PetscInt bfgs;
     22:   PetscInt sgrad;
     23:   PetscInt grad;

     25:   PetscReal lambda;
     26: } TAO_OWLQN;

     28: static PetscErrorCode ProjDirect_OWLQN(Vec d, Vec g);

     30: static PetscErrorCode ComputePseudoGrad_OWLQN(Vec x, Vec gv, PetscReal lambda);