Actual source code: cgimpl.h


  2: /*
  3:     Private Krylov Context Structure (KSP) for Conjugate Gradient

  5:     This one is very simple. It contains a flag indicating the symmetry
  6:    structure of the matrix and work space for (optionally) computing
  7:    eigenvalues.

  9: */

 11: #ifndef __CGIMPL_H

 14: /*
 15:         Defines the basic KSP object
 16: */
 17: #include <petsc/private/kspimpl.h>

 19: PETSC_INTERN PetscErrorCode KSPDestroy_CG(KSP);
 20: PETSC_INTERN PetscErrorCode KSPReset_CG(KSP);
 21: PETSC_INTERN PetscErrorCode KSPView_CG(KSP, PetscViewer);
 22: PETSC_INTERN PetscErrorCode KSPSetFromOptions_CG(KSP, PetscOptionItems *PetscOptionsObject);
 23: PETSC_INTERN PetscErrorCode KSPCGSetType_CG(KSP, KSPCGType);

 25: /*
 26:     The field should remain the same since it is shared by the BiCG code
 27: */

 29: typedef struct {
 30:   KSPCGType   type;       /* type of system (symmetric or Hermitian) */
 31:   PetscScalar emin, emax; /* eigenvalues */
 32:   // The following arrays are of size ksp->maxit
 33:   PetscScalar *e, *d;
 34:   PetscReal   *ee, *dd; /* work space for Lanczos algorithm */

 36:   PetscBool singlereduction; /* use variant of CG that combines both inner products */
 37: } KSP_CG;

 39: #endif