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);