1: #pragma once 2: #include <petsc/private/taoimpl.h> 3: #include <petsctaolinesearch.h> 5: typedef struct { 6: /* Parameters */ 7: PetscReal pg_ftol; 8: PetscReal actred; 9: PetscReal f_new; 10: PetscReal minstep; 11: PetscReal stepsize; 12: PetscReal gnorm; 14: PetscReal sigma1, sigma2, sigma3; 16: PetscInt maxgpits; 18: /* Problem variables, vectors and index sets */ 20: /* Problem statistics */ 22: PetscInt n; /* Dimension of the Problem */ 24: PetscInt total_cgits; 25: PetscInt cg_iterates; 26: PetscInt total_gp_its; 27: PetscInt gp_iterates; 28: PetscInt cgits; 30: Vec G_New; 31: Vec DXFree; 32: Vec R; 33: Vec DX; 34: Vec X; 35: Vec X_New; 36: Vec G, PG; 37: Vec Work; 39: Mat H; 40: Vec B; 41: PetscReal c; 43: PetscReal f; 44: PetscReal step; 45: Mat Hsub; 46: Mat Hsub_pre; 48: IS Free_Local; /* Indices of local variables equal to lower bound */ 49: IS TT; /* Indices of local variables equal to upper bound */ 51: PetscInt n_free; /* Number of free variables */ 52: PetscInt n_upper; 53: PetscInt n_lower; 54: PetscInt n_bind; /* Number of binding variables */ 55: PetscInt ksp_type; 56: PetscInt subset_type; 57: } TAO_GPCG;