Actual source code: nashimpl.h

      1: /*
      2:    Context for using preconditioned conjugate gradient method to minimized a
      3:    quadratic function subject to a trust region constraint.  If the matrix
      4:    is indefinite, a direction of negative curvature may be encountered.  If
      5:    a direction of negative curvature is found during the first iteration,
      6:    then it is a preconditioned gradient direction and we follow it to the
      7:    boundary of the trust region.  If a direction of negative curvature is
      8:    encountered on subsequent iterations, then we terminate the algorithm.

     10:    This method is described in:
     11:      S. Nash, "Newton-type Minimization via the Lanczos Method", SIAM
     12:        Journal on Numerical Analysis, 21, pages 553-572, 1984.
     13: */

     15: #pragma once

     17: #include <petsc/private/kspimpl.h>

     19: typedef struct {
     20:   PetscReal radius;
     21:   PetscReal norm_d;
     22:   PetscReal o_fcn;
     23:   PetscInt  dtype;
     24: } KSPCG_NASH;