xref: /petsc/src/tao/unconstrained/impls/owlqn/owlqn.h (revision a7e14dcfba0d07adf6226a919460249440ec94c7)
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