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