xref: /petsc/src/tao/unconstrained/impls/bmrm/bmrm.h (revision aaa7dc30da3270cff6cb10b1db605b2ca746f216)
1a7e14dcfSSatish Balay #ifndef __TAO_BMRM_H
2a7e14dcfSSatish Balay #define __TAO_BMRM_H
3a7e14dcfSSatish Balay 
4*aaa7dc30SBarry Smith #include <petsc-private/taosolverimpl.h>
5*aaa7dc30SBarry Smith #include <petscmath.h>
6a7e14dcfSSatish Balay 
7a7e14dcfSSatish Balay #define BMRM_INFTY 1e30    /* single precision: ~\pm 10^{38.53}; PetscReal precision: ~\pm 10^{308.25} */
8a7e14dcfSSatish Balay #define ALPHA_MIN 1e-10
9a7e14dcfSSatish Balay #define ALPHA_MAX 1e10
10a7e14dcfSSatish Balay #define EPS_SV 1e-15
11a7e14dcfSSatish Balay #define EPS 1e-20
12a7e14dcfSSatish Balay #define TOL_LAM 1e-15
13a7e14dcfSSatish Balay #define TOL_R 1e-10
14a7e14dcfSSatish Balay #define INCRE_DIM 1000
15a7e14dcfSSatish Balay 
16a7e14dcfSSatish Balay /* Context for BMRM solver */
17a7e14dcfSSatish Balay typedef struct{
18a7e14dcfSSatish Balay   VecScatter  scatter;     /* Scatter context  */
19a7e14dcfSSatish Balay   Vec local_w;
20a7e14dcfSSatish Balay   PetscReal lambda;
21a7e14dcfSSatish Balay }TAO_BMRM;
22a7e14dcfSSatish Balay 
23a7e14dcfSSatish Balay typedef struct Vec_Chain{
24a7e14dcfSSatish Balay   Vec V;
25a7e14dcfSSatish Balay   struct Vec_Chain *next;
26a7e14dcfSSatish Balay }Vec_Chain;
27a7e14dcfSSatish Balay 
28a7e14dcfSSatish Balay 
29a7e14dcfSSatish Balay /* Context for Dai-Fletcher solver */
30a7e14dcfSSatish Balay typedef struct{
31a7e14dcfSSatish Balay   PetscInt maxProjIter;
32a7e14dcfSSatish Balay   PetscInt maxPGMIter;
33a7e14dcfSSatish Balay   PetscInt *ipt, *ipt2, *uv;
34a7e14dcfSSatish Balay   PetscReal *g, *y, *tempv, *d, *Qd, *t, *xplus, *tplus, *sk, *yk;
35a7e14dcfSSatish Balay 
36a7e14dcfSSatish Balay   PetscInt dim;
37a7e14dcfSSatish Balay 
38a7e14dcfSSatish Balay   PetscInt cur_num_cp;
39a7e14dcfSSatish Balay 
40a7e14dcfSSatish Balay   /* Variables (i.e. Lagrangian multipliers) */
41a7e14dcfSSatish Balay   PetscReal *x;
42a7e14dcfSSatish Balay 
43a7e14dcfSSatish Balay   /* Linear part of the objective function  */
44a7e14dcfSSatish Balay   PetscReal *f;
45a7e14dcfSSatish Balay 
46a7e14dcfSSatish Balay   /* Hessian of the QP */
47a7e14dcfSSatish Balay   PetscReal **Q;
48a7e14dcfSSatish Balay 
49a7e14dcfSSatish Balay   /* Constraint matrix  */
50a7e14dcfSSatish Balay   PetscReal *a;
51a7e14dcfSSatish Balay 
52a7e14dcfSSatish Balay   /* RHS of the equality constraint */
53a7e14dcfSSatish Balay   PetscReal b;
54a7e14dcfSSatish Balay 
55a7e14dcfSSatish Balay   /* Lower bound vector for the variables */
56a7e14dcfSSatish Balay   PetscReal *l;
57a7e14dcfSSatish Balay 
58a7e14dcfSSatish Balay   /* Upper bound vector for the variables */
59a7e14dcfSSatish Balay   PetscReal *u;
60a7e14dcfSSatish Balay 
61a7e14dcfSSatish Balay   /* Tolerance for optimization error */
62a7e14dcfSSatish Balay   PetscReal tol;
63a7e14dcfSSatish Balay }TAO_DF;
64a7e14dcfSSatish Balay 
65a7e14dcfSSatish Balay 
66a7e14dcfSSatish Balay 
67a7e14dcfSSatish Balay 
68a7e14dcfSSatish Balay 
69a7e14dcfSSatish Balay #endif
70