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