1*a4963045SJacob Faibussowitsch #pragma once 2292e2e67SJakub Kruzik 3292e2e67SJakub Kruzik #include <petsc/private/pcimpl.h> /*I "petscpc.h" I*/ 45170378fSJakub Kruzik #include <petscksp.h> 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; 176c93e71cSJakub Kruzik const char *prefix; 18292e2e67SJakub Kruzik 19292e2e67SJakub Kruzik PCDeflationSpaceType spacetype; 20292e2e67SJakub Kruzik PetscInt spacesize; 216c93e71cSJakub Kruzik PetscInt lvl; 226c93e71cSJakub Kruzik PetscInt maxlvl; 23292e2e67SJakub Kruzik PetscBool extendsp; 24292e2e67SJakub Kruzik } PC_Deflation; 25292e2e67SJakub Kruzik 26292e2e67SJakub Kruzik PETSC_INTERN PetscErrorCode PCDeflationComputeSpace(PC); 27