1: /* 2: Private data structure for BiCGStab(L) solver. 3: Allocation takes place before each solve. 4: */ 5: #ifndef PETSC_BCGSLIMPL_H 6: #define PETSC_BCGSLIMPL_H 7: #include <petscsys.h> 9: typedef struct { 10: PetscInt ell; /* Number of search directions. */ 11: PetscReal delta; /* Threshold for recomputing exact residual norm */ 12: PetscBool bConvex; /* Compute Enhanced BiCGstab polynomial when set to PETSC_TRUE */ 13: PetscBool pinv; /* Use pseudoinverse to calculate polynomial correction when set 14: to PETSC_TRUE */ 16: /* Workspace Vectors */ 17: Vec vB; 18: Vec vRt; 19: Vec vXr; 20: Vec vTm; 21: Vec *vvR; 22: Vec *vvU; 24: /* Workspace Arrays */ 25: PetscScalar *vY0c, *vYlc, *vYtc; 26: PetscScalar *mZa, *mZb; 27: PetscScalar *u, *v, *work; 28: PetscReal *s, *realwork; 29: PetscBLASInt lwork; 30: } KSP_BCGSL; 32: /* predefined shorthands */ 33: #define VX (ksp->vec_sol) 34: #define VB (bcgsl->vB) 35: #define VRT (bcgsl->vRt) 36: #define VXR (bcgsl->vXr) 37: #define VTM (bcgsl->vTm) 38: #define VVR (bcgsl->vvR) 39: #define VVU (bcgsl->vvU) 40: #define AY0c (bcgsl->vY0c) 41: #define AYtc (bcgsl->vYtc) 42: #define AYlc (bcgsl->vYlc) 43: #define MZa (bcgsl->mZa) 44: #define MZb (bcgsl->mZb) 46: #endif // PETSC_BCGSLIMPL_H