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