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