1*292e2e67SJakub Kruzik #if !defined(__DEFLATION_H) 2*292e2e67SJakub Kruzik #define __DEFLATION_H 3*292e2e67SJakub Kruzik 4*292e2e67SJakub Kruzik #include <petsc/private/pcimpl.h> /*I "petscpc.h" I*/ 5*292e2e67SJakub Kruzik 6*292e2e67SJakub Kruzik typedef struct { 7*292e2e67SJakub Kruzik PetscBool init; /* do only init step - error correction of direction is omitted */ 8*292e2e67SJakub Kruzik PetscBool pre; /* start with x0 being the solution in the deflation space */ 9*292e2e67SJakub Kruzik PetscBool correct; /* add CP (Qr) correction to descent direction */ 10*292e2e67SJakub Kruzik PetscBool truenorm; 11*292e2e67SJakub Kruzik PetscBool adaptiveconv; 12*292e2e67SJakub Kruzik PetscReal adaptiveconst; 13*292e2e67SJakub Kruzik PetscInt reductionfact; 14*292e2e67SJakub Kruzik Mat W,Wt,AW,WtAW; /* deflation space, coarse problem mats */ 15*292e2e67SJakub Kruzik KSP WtAWinv; /* deflation coarse problem */ 16*292e2e67SJakub Kruzik KSPType ksptype; 17*292e2e67SJakub Kruzik Vec work; 18*292e2e67SJakub Kruzik Vec *workcoarse; 19*292e2e67SJakub Kruzik 20*292e2e67SJakub Kruzik PCDeflationSpaceType spacetype; 21*292e2e67SJakub Kruzik PetscInt spacesize; 22*292e2e67SJakub Kruzik PetscInt nestedlvl; 23*292e2e67SJakub Kruzik PetscInt maxnestedlvl; 24*292e2e67SJakub Kruzik PetscBool extendsp; 25*292e2e67SJakub Kruzik } PC_Deflation; 26*292e2e67SJakub Kruzik 27*292e2e67SJakub Kruzik PETSC_INTERN PetscErrorCode PCDeflationComputeSpace(PC); 28*292e2e67SJakub Kruzik 29*292e2e67SJakub Kruzik #endif 30*292e2e67SJakub Kruzik 31