Actual source code: bcgslimpl.h

  1: /*
  2:     Private data structure for BiCGStab(L) solver.
  3:     Allocation takes place before each solve.
  4: */
  5: #pragma once
  6: #include <petscsys.h>

  8: typedef struct {
  9:   PetscInt  ell;     /* Number of search directions. */
 10:   PetscReal delta;   /* Threshold for recomputing exact residual norm */
 11:   PetscBool bConvex; /* Compute Enhanced BiCGstab polynomial when set to PETSC_TRUE */
 12:   PetscBool pinv;    /* Use pseudoinverse to calculate polynomial correction when set
 13:                                   to PETSC_TRUE */

 15:   /* Workspace Vectors */
 16:   Vec  vB;
 17:   Vec  vRt;
 18:   Vec  vXr;
 19:   Vec  vTm;
 20:   Vec *vvR;
 21:   Vec *vvU;

 23:   /* Workspace Arrays */
 24:   PetscScalar *vY0c, *vYlc, *vYtc;
 25:   PetscScalar *mZa, *mZb;
 26:   PetscScalar *u, *v, *work;
 27:   PetscReal   *s, *realwork;
 28:   PetscBLASInt lwork;
 29: } KSP_BCGSL;

 31: /* predefined shorthands */
 32: #define VX   (ksp->vec_sol)
 33: #define VB   (bcgsl->vB)
 34: #define VRT  (bcgsl->vRt)
 35: #define VXR  (bcgsl->vXr)
 36: #define VTM  (bcgsl->vTm)
 37: #define VVR  (bcgsl->vvR)
 38: #define VVU  (bcgsl->vvU)
 39: #define AY0c (bcgsl->vY0c)
 40: #define AYtc (bcgsl->vYtc)
 41: #define AYlc (bcgsl->vYlc)
 42: #define MZa  (bcgsl->mZa)
 43: #define MZb  (bcgsl->mZb)