xref: /petsc/src/tao/unconstrained/impls/cg/taocg.h (revision 5e1affc2e75eb018e847bde55165978f9a281659)
1*5e1affc2SSatish Balay /*
2*5e1affc2SSatish Balay     Context for conjugate gradient method (unconstrained minimization)
3*5e1affc2SSatish Balay  */
4*5e1affc2SSatish Balay 
5*5e1affc2SSatish Balay 
6*5e1affc2SSatish Balay #ifndef __TAO_CG_H
7*5e1affc2SSatish Balay #define __TAO_CG_H
8*5e1affc2SSatish Balay 
9*5e1affc2SSatish Balay #include "tao-private/taosolver_impl.h"
10*5e1affc2SSatish Balay 
11*5e1affc2SSatish Balay typedef struct {
12*5e1affc2SSatish Balay     Vec G_old;
13*5e1affc2SSatish Balay     Vec X_old;
14*5e1affc2SSatish Balay     Vec W; /*  work vector */
15*5e1affc2SSatish Balay 
16*5e1affc2SSatish Balay     PetscReal eta;         /*  Restart tolerance */
17*5e1affc2SSatish Balay     PetscReal delta_max;   /*  Minimum value for scaling */
18*5e1affc2SSatish Balay     PetscReal delta_min;   /*  Maximum value for scaling */
19*5e1affc2SSatish Balay 
20*5e1affc2SSatish Balay 
21*5e1affc2SSatish Balay     /*  The algorithm restarts when the gradient at the current point g_k,
22*5e1affc2SSatish Balay        and the gradient of the previous point, g_{k-1}, satisfy the
23*5e1affc2SSatish Balay        following inequality:
24*5e1affc2SSatish Balay 
25*5e1affc2SSatish Balay             abs(inner(g_k, g_{k-1})) > eta * norm(g_k, 2)^2. */
26*5e1affc2SSatish Balay 
27*5e1affc2SSatish Balay     PetscInt ngradsteps;              /*  Number of gradient steps */
28*5e1affc2SSatish Balay     PetscInt nresetsteps;	        /*  Number of reset steps */
29*5e1affc2SSatish Balay 
30*5e1affc2SSatish Balay     PetscInt cg_type;    	/*  Formula to use */
31*5e1affc2SSatish Balay } TAO_CG;
32*5e1affc2SSatish Balay 
33*5e1affc2SSatish Balay #endif /* ifndef __TAO_CG_H */
34*5e1affc2SSatish Balay 
35*5e1affc2SSatish Balay 
36