Actual source code: bqnk.h

      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);