xref: /petsc/src/ksp/pc/impls/deflation/deflation.h (revision 6c93e71c10815f0489f70baba72067ebc1a4f754)
1292e2e67SJakub Kruzik #if !defined(__DEFLATION_H)
2292e2e67SJakub Kruzik #define __DEFLATION_H
3292e2e67SJakub Kruzik 
4292e2e67SJakub Kruzik #include <petsc/private/pcimpl.h>   /*I "petscpc.h" I*/
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;
17*6c93e71cSJakub Kruzik   const char  *prefix;
18292e2e67SJakub Kruzik 
19292e2e67SJakub Kruzik   PCDeflationSpaceType spacetype;
20292e2e67SJakub Kruzik   PetscInt             spacesize;
21*6c93e71cSJakub Kruzik   PetscInt             lvl;
22*6c93e71cSJakub Kruzik   PetscInt             maxlvl;
23292e2e67SJakub Kruzik   PetscBool            extendsp;
24292e2e67SJakub Kruzik } PC_Deflation;
25292e2e67SJakub Kruzik 
26292e2e67SJakub Kruzik PETSC_INTERN PetscErrorCode PCDeflationComputeSpace(PC);
27292e2e67SJakub Kruzik 
28292e2e67SJakub Kruzik #endif
29292e2e67SJakub Kruzik 
30