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