xref: /petsc/src/tao/quadratic/impls/gpcg/gpcg.h (revision da81f9329be15cc55f054c8a00978087195c9247)
174962610SAlp Dener #ifndef __TAO_GPCG_H
274962610SAlp Dener #define __TAO_GPCG_H
374962610SAlp Dener #include <petsc/private/taoimpl.h>
474962610SAlp Dener #include <petsctaolinesearch.h>
574962610SAlp Dener 
674962610SAlp Dener typedef struct {
774962610SAlp Dener   /* Parameters */
874962610SAlp Dener   PetscReal pg_ftol;
974962610SAlp Dener   PetscReal actred;
1074962610SAlp Dener   PetscReal f_new;
1174962610SAlp Dener   PetscReal minstep;
1274962610SAlp Dener   PetscReal stepsize;
1374962610SAlp Dener   PetscReal gnorm;
1474962610SAlp Dener 
1574962610SAlp Dener   PetscReal sigma1, sigma2, sigma3;
1674962610SAlp Dener 
1774962610SAlp Dener   PetscInt maxgpits;
1874962610SAlp Dener 
1974962610SAlp Dener   /* Problem variables, vectors and index sets */
2074962610SAlp Dener 
2174962610SAlp Dener   /* Problem statistics */
2274962610SAlp Dener 
2374962610SAlp Dener   PetscInt n; /* Dimension of the Problem */
2474962610SAlp Dener 
2574962610SAlp Dener   PetscInt total_cgits;
2674962610SAlp Dener   PetscInt cg_iterates;
2774962610SAlp Dener   PetscInt total_gp_its;
2874962610SAlp Dener   PetscInt gp_iterates;
2974962610SAlp Dener   PetscInt cgits;
3074962610SAlp Dener 
3174962610SAlp Dener   Vec G_New;
3274962610SAlp Dener   Vec DXFree;
3374962610SAlp Dener   Vec R;
3474962610SAlp Dener   Vec DX;
3574962610SAlp Dener   Vec X;
3674962610SAlp Dener   Vec X_New;
3774962610SAlp Dener   Vec G, PG;
3874962610SAlp Dener   Vec Work;
3974962610SAlp Dener 
4074962610SAlp Dener   Mat       H;
4174962610SAlp Dener   Vec       B;
4274962610SAlp Dener   PetscReal c;
4374962610SAlp Dener 
4474962610SAlp Dener   PetscReal f;
4574962610SAlp Dener   PetscReal step;
4674962610SAlp Dener   Mat       Hsub;
4774962610SAlp Dener   Mat       Hsub_pre;
4874962610SAlp Dener 
4974962610SAlp Dener   IS Free_Local; /* Indices of local variables equal to lower bound */
5074962610SAlp Dener   IS TT;         /* Indices of local variables equal to upper bound */
5174962610SAlp Dener 
5274962610SAlp Dener   PetscInt n_free; /* Number of free variables */
5374962610SAlp Dener   PetscInt n_upper;
5474962610SAlp Dener   PetscInt n_lower;
55*da81f932SPierre Jolivet   PetscInt n_bind; /* Number of binding variables */
5674962610SAlp Dener   PetscInt ksp_type;
5774962610SAlp Dener   PetscInt subset_type;
5874962610SAlp Dener } TAO_GPCG;
5974962610SAlp Dener 
6074962610SAlp Dener #endif
61