xref: /petsc/src/tao/unconstrained/impls/owlqn/owlqn.h (revision 027024689c5a840d5c8379ccf1f46f38ddfee5b8)
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*02702468SSatish Balay #include "tao-private/taosolver_impl.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;
17a7e14dcfSSatish 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