xref: /petsc/src/tao/bound/impls/bncg/bncg.h (revision ac9112b8da24494b321770155bf80866e3ee4a12)
1*ac9112b8SAlp Dener /*
2*ac9112b8SAlp Dener     Context for bound-constrained nonlinear conjugate gradient method
3*ac9112b8SAlp Dener  */
4*ac9112b8SAlp Dener 
5*ac9112b8SAlp Dener 
6*ac9112b8SAlp Dener #ifndef __TAO_BNCG_H
7*ac9112b8SAlp Dener #define __TAO_BNCG_H
8*ac9112b8SAlp Dener 
9*ac9112b8SAlp Dener #include <petsc/private/taoimpl.h>
10*ac9112b8SAlp Dener 
11*ac9112b8SAlp Dener typedef struct {
12*ac9112b8SAlp Dener     Vec G_old;
13*ac9112b8SAlp Dener     Vec X_old;
14*ac9112b8SAlp Dener     Vec unprojected_gradient;
15*ac9112b8SAlp Dener     Vec unprojected_gradient_old;
16*ac9112b8SAlp Dener     IS  inactive_set;
17*ac9112b8SAlp Dener     Vec inactive_grad, inactive_step;
18*ac9112b8SAlp Dener 
19*ac9112b8SAlp Dener     PetscReal rho, pow;
20*ac9112b8SAlp Dener     PetscReal eta;         /*  Restart tolerance */
21*ac9112b8SAlp Dener     PetscReal delta_max;   /*  Minimum value for scaling */
22*ac9112b8SAlp Dener     PetscReal delta_min;   /*  Maximum value for scaling */
23*ac9112b8SAlp Dener 
24*ac9112b8SAlp Dener     PetscInt cg_type;           /*  Formula to use */
25*ac9112b8SAlp Dener 
26*ac9112b8SAlp Dener     PetscInt ls_fails, resets, broken_ortho, descent_error;
27*ac9112b8SAlp Dener } TAO_BNCG;
28*ac9112b8SAlp Dener 
29*ac9112b8SAlp Dener #endif /* ifndef __TAO_BNCG_H */
30*ac9112b8SAlp Dener 
31*ac9112b8SAlp Dener PETSC_INTERN PetscErrorCode TaoBNCGResetStepForNewInactives(Tao, Vec);