1: #include <../src/tao/bound/impls/bqnk/bqnk.h> 3: static PetscErrorCode TaoSetUp_BQNKTL(Tao tao) 4: { 5: KSP ksp; 6: PetscVoidFunction valid; 8: TaoSetUp_BQNK(tao); 9: TaoGetKSP(tao,&ksp); 10: PetscObjectQueryFunction((PetscObject)ksp,"KSPCGSetRadius_C",&valid); 12: return 0; 13: } 15: /*MC 16: TAOBQNKTL - Bounded Quasi-Newton-Krylov Trust-region with Line-search fallback, for nonlinear 17: minimization with bound constraints. This method approximates the Hessian-vector 18: product using a limited-memory quasi-Newton formula, and iteratively inverts the 19: Hessian with a Krylov solver. The quasi-Newton matrix and its settings can be 20: accessed via the prefix `-tao_bqnk_`. For options database, see TAOBNK 22: Level: beginner 23: .seealso TAOBNK, TAOBQNKTR, TAOBQNKLS 24: M*/ 25: PETSC_EXTERN PetscErrorCode TaoCreate_BQNKTL(Tao tao) 26: { 27: TAO_BNK *bnk; 28: TAO_BQNK *bqnk; 30: TaoCreate_BQNK(tao); 31: tao->ops->setup = TaoSetUp_BQNKTL; 32: bnk = (TAO_BNK*)tao->data; 33: bqnk = (TAO_BQNK*)bnk->ctx; 34: bqnk->solve = TaoSolve_BNTL; 35: return 0; 36: }