1: /* 2: Context for bounded quasi-Newton-Krylov type optimization algorithms 3: */ 5: #pragma once 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> 11: typedef struct { 12: PetscErrorCode (*solve)(Tao); 13: Mat B; 14: PC pc; 15: PetscBool is_spd; 16: } TAO_BQNK; 18: #define BQNK_INIT_CONSTANT 0 19: #define BQNK_INIT_DIRECTION 1 20: #define BQNK_INIT_TYPES 2 22: PETSC_INTERN PetscErrorCode TaoSolve_BQNK(Tao); 23: PETSC_INTERN PetscErrorCode TaoSetUp_BQNK(Tao); 24: PETSC_INTERN PetscErrorCode TaoCreate_BQNK(Tao);