Actual source code: diagbrdn.h

  1: #pragma once

  3: #include <../src/ksp/ksp/utils/lmvm/lmvm.h>

  5: /*
  6:   "Full" memory implementation of only the diagonal terms in a symmetric Broyden approximation.
  7: */

  9: typedef struct {
 10:   Vec        invDnew, invD, BFGS, DFP, U, V, W; /* work vectors for diagonal scaling */
 11:   PetscReal *yts, *yty, *sts;                   /* scalar arrays for recycling dot products */
 12:   PetscReal  theta, rho, alpha, beta;           /* convex combination factors for the scalar or diagonal scaling */
 13:   PetscReal  delta, delta_min, delta_max, sigma, tol;
 14:   PetscInt   sigma_hist; /* length of update history to be used for scaling */
 15:   PetscBool  allocated;
 16:   PetscBool  forward;
 17: } Mat_DiagBrdn;