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