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);