xref: /petsc/src/ksp/ksp/impls/fcg/pipefcg/pipefcgimpl.h (revision 9dd11ecf0918283bb567d8b33a92f53ac4ea7840)
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