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 */ 98a71cb68SJakub 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; 17*6c93e71cSJakub Kruzik const char *prefix; 18292e2e67SJakub Kruzik 19292e2e67SJakub Kruzik PCDeflationSpaceType spacetype; 20292e2e67SJakub Kruzik PetscInt spacesize; 21*6c93e71cSJakub Kruzik PetscInt lvl; 22*6c93e71cSJakub Kruzik PetscInt maxlvl; 23292e2e67SJakub Kruzik PetscBool extendsp; 24292e2e67SJakub Kruzik } PC_Deflation; 25292e2e67SJakub Kruzik 26292e2e67SJakub Kruzik PETSC_INTERN PetscErrorCode PCDeflationComputeSpace(PC); 27292e2e67SJakub Kruzik 28292e2e67SJakub Kruzik #endif 29292e2e67SJakub Kruzik 30