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