1: #pragma once 3: #include <petsc/private/kspimpl.h> 5: typedef struct { 6: /* same header start as KSP_CG */ 7: KSPCGType type; /* type of system (symmetric of Hermitian) */ 8: PetscScalar *e, *d; 9: PetscReal *ee, *dd; /* work space for Lanczos algorithm */ 11: PetscInt mmax; /* The maximum number of P/C vectors to store */ 12: PetscInt nprealloc; /* How many vectors to preallocate */ 13: PetscInt nvecs; /* How many P/C vecs are actually stored */ 14: PetscInt vecb; /* How many vecs to allocate at a time in a chunk */ 15: Vec *Pvecs, *Cvecs, **pPvecs, **pCvecs; /* Arrays of vectors, and arrays of pointers to them */ 16: PetscInt *chunksizes; /* Chunk sizes allocated */ 17: PetscInt nchunks; /* Number of chunks */ 18: KSPFCDTruncationType truncstrat; 19: } KSP_FCG;