1 /* 2 Context for bounded quasi-Newton-Krylov type optimization algorithms 3 */ 4 5 #if !defined(__TAO_BQNK_H) 6 #define __TAO_BQNK_H 7 8 #include <../src/tao/bound/impls/bnk/bnk.h> 9 #include <../src/ksp/ksp/utils/lmvm/lmvm.h> 10 #include <../src/ksp/ksp/utils/lmvm/symbrdn/symbrdn.h> 11 12 typedef struct { 13 PetscErrorCode (*solve)(Tao); 14 Mat B; 15 PC pc; 16 PetscBool is_spd; 17 } TAO_BQNK; 18 19 #define BQNK_INIT_CONSTANT 0 20 #define BQNK_INIT_DIRECTION 1 21 #define BQNK_INIT_TYPES 2 22 23 PETSC_INTERN PetscErrorCode TaoSolve_BQNK(Tao); 24 PETSC_INTERN PetscErrorCode TaoSetUp_BQNK(Tao); 25 PETSC_INTERN PetscErrorCode TaoCreate_BQNK(Tao); 26 27 #endif /* if !defined(__TAO_BQNK_H) */ 28