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