xref: /petsc/src/ksp/pc/impls/deflation/deflation.h (revision 8a71cb68ad51445d5b1bd34db6a8647f90f4156a)
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 */
9*8a71cb68SJakub 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;
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