1: #ifndef __DEFLATION_H
4: #include <petsc/private/pcimpl.h>
5: #include <petscksp.h>
7: typedef struct {
8: PetscBool init; /* do only init step - error correction of direction is omitted */
9: PetscBool correct; /* add CP (Qr) correction to descent direction */
10: PetscScalar correctfact;
11: PetscInt reductionfact;
12: Mat W, Wt, WtA, WtAW; /* deflation space, coarse problem mats */
13: KSP WtAWinv; /* deflation coarse problem */
14: KSPType ksptype;
15: PC pc; /* additional preconditioner */
16: Vec work;
17: Vec *workcoarse;
18: const char *prefix;
20: PCDeflationSpaceType spacetype;
21: PetscInt spacesize;
22: PetscInt lvl;
23: PetscInt maxlvl;
24: PetscBool extendsp;
25: } PC_Deflation;
27: PETSC_INTERN PetscErrorCode PCDeflationComputeSpace(PC);
29: #endif