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