1e0ed867bSAlp Dener /* 2e0ed867bSAlp Dener Context for bounded quasi-Newton-Krylov type optimization algorithms 3e0ed867bSAlp Dener */ 4e0ed867bSAlp Dener 5*a4963045SJacob Faibussowitsch #pragma once 6e0ed867bSAlp Dener 7e0ed867bSAlp Dener #include <../src/tao/bound/impls/bnk/bnk.h> 8414d97d3SAlp Dener #include <../src/ksp/ksp/utils/lmvm/lmvm.h> 9414d97d3SAlp Dener #include <../src/ksp/ksp/utils/lmvm/symbrdn/symbrdn.h> 10e0ed867bSAlp Dener 11e0ed867bSAlp Dener typedef struct { 12414d97d3SAlp Dener PetscErrorCode (*solve)(Tao); 13d5ae2380SAlp Dener Mat B; 144f4fdda4SAlp Dener PC pc; 15f5766c09SAlp Dener PetscBool is_spd; 16e0ed867bSAlp Dener } TAO_BQNK; 17e0ed867bSAlp Dener 186b591159SAlp Dener #define BQNK_INIT_CONSTANT 0 196b591159SAlp Dener #define BQNK_INIT_DIRECTION 1 206b591159SAlp Dener #define BQNK_INIT_TYPES 2 216b591159SAlp Dener 22414d97d3SAlp Dener PETSC_INTERN PetscErrorCode TaoSolve_BQNK(Tao); 236b591159SAlp Dener PETSC_INTERN PetscErrorCode TaoSetUp_BQNK(Tao); 24e0ed867bSAlp Dener PETSC_INTERN PetscErrorCode TaoCreate_BQNK(Tao); 25