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