xref: /petsc/src/ksp/pc/impls/deflation/deflation.h (revision 22b0793ea0a27dcaec2f0ace1007f3cc42835011)
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 pre;             /* start with x0 being the solution in the deflation space */
9292e2e67SJakub Kruzik   PetscBool correct;         /* add CP (Qr) correction to descent direction */
10292e2e67SJakub Kruzik   PetscBool truenorm;
11292e2e67SJakub Kruzik   PetscBool adaptiveconv;
12292e2e67SJakub Kruzik   PetscReal adaptiveconst;
13292e2e67SJakub Kruzik   PetscInt  reductionfact;
14292e2e67SJakub Kruzik   Mat       W,Wt,AW,WtAW;    /* deflation space, coarse problem mats */
15292e2e67SJakub Kruzik   KSP       WtAWinv;         /* deflation coarse problem */
16292e2e67SJakub Kruzik   KSPType   ksptype;
17*22b0793eSJakub Kruzik   PC        pc;              /* additional preconditioner */
18292e2e67SJakub Kruzik   Vec       work;
19292e2e67SJakub Kruzik   Vec       *workcoarse;
20292e2e67SJakub Kruzik 
21292e2e67SJakub Kruzik   PCDeflationSpaceType spacetype;
22292e2e67SJakub Kruzik   PetscInt             spacesize;
23292e2e67SJakub Kruzik   PetscInt             nestedlvl;
24292e2e67SJakub Kruzik   PetscInt             maxnestedlvl;
25292e2e67SJakub Kruzik   PetscBool            extendsp;
26292e2e67SJakub Kruzik } PC_Deflation;
27292e2e67SJakub Kruzik 
28292e2e67SJakub Kruzik PETSC_INTERN PetscErrorCode PCDeflationComputeSpace(PC);
29292e2e67SJakub Kruzik 
30292e2e67SJakub Kruzik #endif
31292e2e67SJakub Kruzik 
32