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