xref: /petsc/src/ksp/pc/impls/deflation/deflation.h (revision ae0294639c2c569ed5245c937251e307193020c0)
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 */
9fcb31d99SJakub Kruzik   PetscReal correctfact;
10292e2e67SJakub Kruzik   PetscInt  reductionfact;
11*ae029463SJakub 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;
17292e2e67SJakub Kruzik 
18292e2e67SJakub Kruzik   PCDeflationSpaceType spacetype;
19292e2e67SJakub Kruzik   PetscInt             spacesize;
20292e2e67SJakub Kruzik   PetscInt             nestedlvl;
21292e2e67SJakub Kruzik   PetscInt             maxnestedlvl;
22292e2e67SJakub Kruzik   PetscBool            extendsp;
23292e2e67SJakub Kruzik } PC_Deflation;
24292e2e67SJakub Kruzik 
25292e2e67SJakub Kruzik PETSC_INTERN PetscErrorCode PCDeflationComputeSpace(PC);
26292e2e67SJakub Kruzik 
27292e2e67SJakub Kruzik #endif
28292e2e67SJakub Kruzik 
29