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 pre; /* start with x0 being the solution in the deflation space */ 9292e2e67SJakub Kruzik PetscBool correct; /* add CP (Qr) correction to descent direction */ 10292e2e67SJakub Kruzik PetscBool truenorm; 11292e2e67SJakub Kruzik PetscBool adaptiveconv; 12292e2e67SJakub Kruzik PetscReal adaptiveconst; 13292e2e67SJakub Kruzik PetscInt reductionfact; 14292e2e67SJakub Kruzik Mat W,Wt,AW,WtAW; /* deflation space, coarse problem mats */ 15292e2e67SJakub Kruzik KSP WtAWinv; /* deflation coarse problem */ 16292e2e67SJakub Kruzik KSPType ksptype; 17*22b0793eSJakub Kruzik PC pc; /* additional preconditioner */ 18292e2e67SJakub Kruzik Vec work; 19292e2e67SJakub Kruzik Vec *workcoarse; 20292e2e67SJakub Kruzik 21292e2e67SJakub Kruzik PCDeflationSpaceType spacetype; 22292e2e67SJakub Kruzik PetscInt spacesize; 23292e2e67SJakub Kruzik PetscInt nestedlvl; 24292e2e67SJakub Kruzik PetscInt maxnestedlvl; 25292e2e67SJakub Kruzik PetscBool extendsp; 26292e2e67SJakub Kruzik } PC_Deflation; 27292e2e67SJakub Kruzik 28292e2e67SJakub Kruzik PETSC_INTERN PetscErrorCode PCDeflationComputeSpace(PC); 29292e2e67SJakub Kruzik 30292e2e67SJakub Kruzik #endif 31292e2e67SJakub Kruzik 32