xref: /petsc/src/tao/bound/impls/bqnk/bqnk.h (revision 9dd11ecf0918283bb567d8b33a92f53ac4ea7840)
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