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