1: /* 2: Context for conjugate gradient method (unconstrained minimization) 3: */ 6: #ifndef __TAO_CG_H 9: #include <petsc/private/taoimpl.h> 11: typedef struct { 12: Vec G_old; 13: Vec X_old; 14: Vec W; /* work vector */ 16: PetscReal eta; /* Restart tolerance */ 17: PetscReal delta_max; /* Minimum value for scaling */ 18: PetscReal delta_min; /* Maximum value for scaling */ 21: /* The algorithm restarts when the gradient at the current point g_k, 22: and the gradient of the previous point, g_{k-1}, satisfy the 23: following inequality: 25: abs(inner(g_k, g_{k-1})) > eta * norm(g_k, 2)^2. */ 27: PetscInt ngradsteps; /* Number of gradient steps */ 28: PetscInt nresetsteps; /* Number of reset steps */ 30: PetscInt cg_type; /* Formula to use */ 31: } TAO_CG; 33: #endif /* ifndef __TAO_CG_H */