xref: /petsc/src/ksp/pc/impls/deflation/deflation.h (revision 5170378f106f2b5572fc553e73dbb8680a1e60c9)
1292e2e67SJakub Kruzik #if !defined(__DEFLATION_H)
2292e2e67SJakub Kruzik #define __DEFLATION_H
3292e2e67SJakub Kruzik 
4292e2e67SJakub Kruzik #include <petsc/private/pcimpl.h>   /*I "petscpc.h" I*/
5*5170378fSJakub Kruzik #include <petscksp.h>
6292e2e67SJakub Kruzik 
7292e2e67SJakub Kruzik typedef struct {
8292e2e67SJakub Kruzik   PetscBool   init;            /* do only init step - error correction of direction is omitted */
9292e2e67SJakub Kruzik   PetscBool   correct;         /* add CP (Qr) correction to descent direction */
108a71cb68SJakub Kruzik   PetscScalar correctfact;
11292e2e67SJakub Kruzik   PetscInt    reductionfact;
12ae029463SJakub Kruzik   Mat         W,Wt,WtA,WtAW;    /* deflation space, coarse problem mats */
13292e2e67SJakub Kruzik   KSP         WtAWinv;         /* deflation coarse problem */
14292e2e67SJakub Kruzik   KSPType     ksptype;
1522b0793eSJakub Kruzik   PC          pc;              /* additional preconditioner */
16292e2e67SJakub Kruzik   Vec         work;
17292e2e67SJakub Kruzik   Vec         *workcoarse;
186c93e71cSJakub Kruzik   const char  *prefix;
19292e2e67SJakub Kruzik 
20292e2e67SJakub Kruzik   PCDeflationSpaceType spacetype;
21292e2e67SJakub Kruzik   PetscInt             spacesize;
226c93e71cSJakub Kruzik   PetscInt             lvl;
236c93e71cSJakub Kruzik   PetscInt             maxlvl;
24292e2e67SJakub Kruzik   PetscBool            extendsp;
25292e2e67SJakub Kruzik } PC_Deflation;
26292e2e67SJakub Kruzik 
27292e2e67SJakub Kruzik PETSC_INTERN PetscErrorCode PCDeflationComputeSpace(PC);
28292e2e67SJakub Kruzik 
29292e2e67SJakub Kruzik #endif
30292e2e67SJakub Kruzik 
31