xref: /petsc/src/ksp/pc/impls/deflation/deflation.h (revision 292e2e671b084eef5d973b8b5e75ade2ec8cff20)
1*292e2e67SJakub Kruzik #if !defined(__DEFLATION_H)
2*292e2e67SJakub Kruzik #define __DEFLATION_H
3*292e2e67SJakub Kruzik 
4*292e2e67SJakub Kruzik #include <petsc/private/pcimpl.h>   /*I "petscpc.h" I*/
5*292e2e67SJakub Kruzik 
6*292e2e67SJakub Kruzik typedef struct {
7*292e2e67SJakub Kruzik   PetscBool init;            /* do only init step - error correction of direction is omitted */
8*292e2e67SJakub Kruzik   PetscBool pre;             /* start with x0 being the solution in the deflation space */
9*292e2e67SJakub Kruzik   PetscBool correct;         /* add CP (Qr) correction to descent direction */
10*292e2e67SJakub Kruzik   PetscBool truenorm;
11*292e2e67SJakub Kruzik   PetscBool adaptiveconv;
12*292e2e67SJakub Kruzik   PetscReal adaptiveconst;
13*292e2e67SJakub Kruzik   PetscInt  reductionfact;
14*292e2e67SJakub Kruzik   Mat       W,Wt,AW,WtAW;    /* deflation space, coarse problem mats */
15*292e2e67SJakub Kruzik   KSP       WtAWinv;         /* deflation coarse problem */
16*292e2e67SJakub Kruzik   KSPType   ksptype;
17*292e2e67SJakub Kruzik   Vec       work;
18*292e2e67SJakub Kruzik   Vec       *workcoarse;
19*292e2e67SJakub Kruzik 
20*292e2e67SJakub Kruzik   PCDeflationSpaceType spacetype;
21*292e2e67SJakub Kruzik   PetscInt             spacesize;
22*292e2e67SJakub Kruzik   PetscInt             nestedlvl;
23*292e2e67SJakub Kruzik   PetscInt             maxnestedlvl;
24*292e2e67SJakub Kruzik   PetscBool            extendsp;
25*292e2e67SJakub Kruzik } PC_Deflation;
26*292e2e67SJakub Kruzik 
27*292e2e67SJakub Kruzik PETSC_INTERN PetscErrorCode PCDeflationComputeSpace(PC);
28*292e2e67SJakub Kruzik 
29*292e2e67SJakub Kruzik #endif
30*292e2e67SJakub Kruzik 
31