15e1affc2SSatish Balay /* 25e1affc2SSatish Balay Context for conjugate gradient method (unconstrained minimization) 35e1affc2SSatish Balay */ 45e1affc2SSatish Balay 5*a4963045SJacob Faibussowitsch #pragma once 65e1affc2SSatish Balay 7af0996ceSBarry Smith #include <petsc/private/taoimpl.h> 85e1affc2SSatish Balay 95e1affc2SSatish Balay typedef struct { 105e1affc2SSatish Balay Vec G_old; 115e1affc2SSatish Balay Vec X_old; 125e1affc2SSatish Balay Vec W; /* work vector */ 135e1affc2SSatish Balay 145e1affc2SSatish Balay PetscReal eta; /* Restart tolerance */ 155e1affc2SSatish Balay PetscReal delta_max; /* Minimum value for scaling */ 165e1affc2SSatish Balay PetscReal delta_min; /* Maximum value for scaling */ 175e1affc2SSatish Balay 185e1affc2SSatish Balay /* The algorithm restarts when the gradient at the current point g_k, 195e1affc2SSatish Balay and the gradient of the previous point, g_{k-1}, satisfy the 205e1affc2SSatish Balay following inequality: 215e1affc2SSatish Balay 225e1affc2SSatish Balay abs(inner(g_k, g_{k-1})) > eta * norm(g_k, 2)^2. */ 235e1affc2SSatish Balay 245e1affc2SSatish Balay PetscInt ngradsteps; /* Number of gradient steps */ 255e1affc2SSatish Balay PetscInt nresetsteps; /* Number of reset steps */ 265e1affc2SSatish Balay 275e1affc2SSatish Balay PetscInt cg_type; /* Formula to use */ 285e1affc2SSatish Balay } TAO_CG; 29