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;