1*a7e14dcfSSatish Balay /* 2*a7e14dcfSSatish Balay Context for limited memory variable metric method for unconstrained 3*a7e14dcfSSatish Balay optimization. 4*a7e14dcfSSatish Balay */ 5*a7e14dcfSSatish Balay 6*a7e14dcfSSatish Balay #ifndef __TAO_OWLQN_H 7*a7e14dcfSSatish Balay #define __TAO_OWLQN_H 8*a7e14dcfSSatish Balay #include "include/tao-private/taosolver_impl.h" 9*a7e14dcfSSatish Balay 10*a7e14dcfSSatish Balay typedef struct { 11*a7e14dcfSSatish Balay Mat M; 12*a7e14dcfSSatish Balay 13*a7e14dcfSSatish Balay Vec X; 14*a7e14dcfSSatish Balay Vec G; 15*a7e14dcfSSatish Balay Vec D; 16*a7e14dcfSSatish Balay Vec W; 17*a7e14dcfSSatish Balay Vec GV; // the pseudo gradient 18*a7e14dcfSSatish Balay 19*a7e14dcfSSatish Balay Vec Xold; 20*a7e14dcfSSatish Balay Vec Gold; 21*a7e14dcfSSatish Balay 22*a7e14dcfSSatish Balay PetscInt bfgs; 23*a7e14dcfSSatish Balay PetscInt sgrad; 24*a7e14dcfSSatish Balay PetscInt grad; 25*a7e14dcfSSatish Balay 26*a7e14dcfSSatish Balay PetscReal lambda; 27*a7e14dcfSSatish Balay } TAO_OWLQN; 28*a7e14dcfSSatish Balay 29*a7e14dcfSSatish Balay static PetscErrorCode ProjDirect_OWLQN(Vec d, Vec g); 30*a7e14dcfSSatish Balay 31*a7e14dcfSSatish Balay static PetscErrorCode ComputePseudoGrad_OWLQN(Vec x, Vec gv, PetscReal lambda); 32*a7e14dcfSSatish Balay 33*a7e14dcfSSatish Balay #endif /* ifndef __TAO_OWLQN_H */ 34