Actual source code: pipegcrimpl.h
1: #ifndef __KSP_PIPEGCR_H
4: #include <petsc/private/kspimpl.h>
6: typedef struct {
7: PetscInt mmax; /* The maximum number vectors of each type to store */
8: PetscInt nprealloc; /* How many vectors to preallocate */
9: PetscInt nvecs; /* How many vectors are actually stored */
10: PetscInt vecb; /* How many vectors to allocate at a time in a chunk */
11: Vec *pvecs, *svecs, *qvecs, *tvecs, **ppvecs, **psvecs, **pqvecs, **ptvecs, *qold, *pold, *sold, *told;
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; /* set if the recurred norm eta breaks down -> restart triggered */
20: PetscBool unroll_w;
21: void *modifypc_ctx; /* user defined data for the modifypc function */
22: PetscErrorCode (*modifypc)(KSP, PetscInt, PetscReal, void *); /* function to modify the preconditioner*/
23: PetscErrorCode (*modifypc_destroy)(void *); /* function to destroy the user context for the modifypc function */
24: } KSP_PIPEGCR;
26: #endif