Actual source code: bmrm.h

      1: #ifndef __TAO_BMRM_H

      4: #include <petsc/private/taoimpl.h>
      5: #include <petscmath.h>

      7: #define BMRM_INFTY 1e30    /* single precision: ~\pm 10^{38.53}; PetscReal precision: ~\pm 10^{308.25} */
      8: #define ALPHA_MIN 1e-10
      9: #define ALPHA_MAX 1e10
     10: #define EPS_SV 1e-15
     11: #define EPS 1e-20
     12: #define TOL_LAM 1e-15
     13: #define TOL_R 1e-10
     14: #define INCRE_DIM 1000

     16: /* Context for BMRM solver */
     17: typedef struct{
     18:   VecScatter  scatter;     /* Scatter context  */
     19:   Vec local_w;
     20:   PetscReal lambda;
     21: }TAO_BMRM;

     23: typedef struct Vec_Chain{
     24:   Vec V;
     25:   struct Vec_Chain *next;
     26: }Vec_Chain;

     29: /* Context for Dai-Fletcher solver */
     30: typedef struct{
     31:   PetscInt maxProjIter;
     32:   PetscInt maxPGMIter;
     33:   PetscInt *ipt, *ipt2, *uv;
     34:   PetscReal *g, *y, *tempv, *d, *Qd, *t, *xplus, *tplus, *sk, *yk;

     36:   PetscInt dim;

     38:   PetscInt cur_num_cp;

     40:   /* Variables (i.e. Lagrangian multipliers) */
     41:   PetscReal *x;

     43:   /* Linear part of the objective function  */
     44:   PetscReal *f;

     46:   /* Hessian of the QP */
     47:   PetscReal **Q;

     49:   /* Constraint matrix  */
     50:   PetscReal *a;

     52:   /* RHS of the equality constraint */
     53:   PetscReal b;

     55:   /* Lower bound vector for the variables */
     56:   PetscReal *l;

     58:   /* Upper bound vector for the variables */
     59:   PetscReal *u;

     61:   /* Tolerance for optimization error */
     62:   PetscReal tol;
     63: }TAO_DF;

     69: #endif