xref: /petsc/src/ksp/pc/impls/deflation/deflation.h (revision 9dd11ecf0918283bb567d8b33a92f53ac4ea7840)
1*a4963045SJacob Faibussowitsch #pragma once
2292e2e67SJakub Kruzik 
3292e2e67SJakub Kruzik #include <petsc/private/pcimpl.h> /*I "petscpc.h" I*/
45170378fSJakub Kruzik #include <petscksp.h>
5292e2e67SJakub Kruzik 
6292e2e67SJakub Kruzik typedef struct {
7292e2e67SJakub Kruzik   PetscBool   init;    /* do only init step - error correction of direction is omitted */
8292e2e67SJakub Kruzik   PetscBool   correct; /* add CP (Qr) correction to descent direction */
98a71cb68SJakub Kruzik   PetscScalar correctfact;
10292e2e67SJakub Kruzik   PetscInt    reductionfact;
11ae029463SJakub Kruzik   Mat         W, Wt, WtA, WtAW; /* deflation space, coarse problem mats */
12292e2e67SJakub Kruzik   KSP         WtAWinv;          /* deflation coarse problem */
13292e2e67SJakub Kruzik   KSPType     ksptype;
1422b0793eSJakub Kruzik   PC          pc; /* additional preconditioner */
15292e2e67SJakub Kruzik   Vec         work;
16292e2e67SJakub Kruzik   Vec        *workcoarse;
176c93e71cSJakub Kruzik   const char *prefix;
18292e2e67SJakub Kruzik 
19292e2e67SJakub Kruzik   PCDeflationSpaceType spacetype;
20292e2e67SJakub Kruzik   PetscInt             spacesize;
216c93e71cSJakub Kruzik   PetscInt             lvl;
226c93e71cSJakub Kruzik   PetscInt             maxlvl;
23292e2e67SJakub Kruzik   PetscBool            extendsp;
24292e2e67SJakub Kruzik } PC_Deflation;
25292e2e67SJakub Kruzik 
26292e2e67SJakub Kruzik PETSC_INTERN PetscErrorCode PCDeflationComputeSpace(PC);
27