Actual source code: pipegcrimpl.h

  1: #pragma once

  3: #include <petsc/private/kspimpl.h>

  5: typedef struct {
  6:   PetscInt               mmax;      /* The maximum number vectors of each type to store */
  7:   PetscInt               nprealloc; /* How many vectors to preallocate */
  8:   PetscInt               nvecs;     /* How many vectors are actually stored */
  9:   PetscInt               vecb;      /* How many vectors to allocate at a time in a chunk */
 10:   Vec                   *pvecs, *svecs, *qvecs, *tvecs, **ppvecs, **psvecs, **pqvecs, **ptvecs, *qold, *pold, *sold, *told;
 11:   PetscInt              *chunksizes; /* Chunk sizes allocated */
 12:   PetscInt               nchunks;    /* Number of chunks */
 13:   KSPFCDTruncationType   truncstrat;
 14:   PetscInt               n_restarts;
 15:   PetscScalar           *dots;
 16:   PetscReal             *etas;
 17:   Vec                   *redux;
 18:   PetscBool              norm_breakdown; /* set if the recurred norm eta breaks down -> restart triggered */
 19:   PetscBool              unroll_w;
 20:   void                  *modifypc_ctx;     /* user defined data for the modifypc function */
 21:   KSPFlexibleModifyPCFn *modifypc;         /* function to modify the preconditioner*/
 22:   PetscCtxDestroyFn     *modifypc_destroy; /* function to destroy the user context for the modifypc function */
 23: } KSP_PIPEGCR;