1 #pragma once 2 3 #include <petsc/private/kspimpl.h> /*I "petscksp.h" I*/ 4 5 typedef struct { 6 KSPCGType type; /* type of system (symmetric or Hermitian) */ 7 PetscInt mmax; /* The maximum number of P/C vectors to store */ 8 PetscInt nprealloc; /* How many vectors to preallocate */ 9 PetscInt nvecs; /* How many P/C vecs are actually stored */ 10 PetscInt vecb; /* How many vecs to allocate at a time in a chunk */ 11 Vec *Qvecs, *ZETAvecs, *Pvecs, *Cvecs, *Svecs, **pQvecs, **pZETAvecs, **pPvecs, **pCvecs, **pSvecs, *Qold, *ZETAold, *Pold, *Sold; 12 PetscInt *chunksizes; /* Chunk sizes allocated */ 13 PetscInt nchunks; /* Number of chunks */ 14 KSPFCDTruncationType truncstrat; 15 PetscInt n_restarts; 16 PetscScalar *dots; 17 PetscReal *etas; 18 Vec *redux; 19 PetscBool norm_breakdown; 20 } KSP_PIPEFCG; 21