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: */
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(PetscOptionItems *PetscOptionsObject,KSP);
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: PetscInt ned; /* size of following arrays */
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