
********************************************************************************

          Generic Krylov-space solvers for the lattice Dirac equation

********************************************************************************


Files
-----

cgne.c         Generic CG solver program for the lattice Dirac equation

fgcr4vd.c      Generic flexible GCR solver program for the little Dirac 
               equation

fgcr.c         Generic flexible GCR solver program for the lattice Dirac 
               equation

mscg.c         Generic multi-shift CG solver program for the lattice Dirac 
               equation

Include file
------------

The file linsolv.h defines the prototypes for all externally accessible
functions that are defined in the *.c files listed above.


List of functions
-----------------

For usage instructions, see the top of the *.c file carrying the name
of the function.

double cgne(int vol,int icom,void (*Dop)(spinor *s,spinor *r),
            void (*Dop_dble)(spinor_dble *s,spinor_dble *r),
            spinor **ws,spinor_dble **wsd,int nmx,double res,
            spinor_dble *eta,spinor_dble *psi,int *status)
  Solution of the (normal) Dirac equation D^dag*D*psi=eta for given
  source eta, using the CG algorithm. See the notes for the explanation
  of the parameters of the program.

double fgcr4vd(int vol,int icom,
               void (*Dop)(complex_dble *v,complex_dble *w),
               void (*Mop)(int k,complex *rho,complex *phi,complex *chi),
               complex *wv[],complex_dble *wvd[],int nkv,int nmx,double res,
               complex_dble *eta,complex_dble *psi,int *status)
  Solution of the little equation D*psi=eta for given source eta, using
  the preconditioned GCR algorithm. See the notes for the explanation
  of the parameters of the program.

double fgcr(int vol,int icom,
            void (*Dop)(spinor_dble *s,spinor_dble *r),
            void (*Mop)(int k,spinor *rho,spinor *phi,spinor *chi),
            spinor **ws,spinor_dble **wsd,int nkv,int nmx,double res,
            spinor_dble *eta,spinor_dble *psi,int *status)
  Solution of the Dirac equation D*psi=eta for given source eta, using
  the preconditioned GCR algorithm. See the notes for the explanation
  of the parameters of the program.

void mscg(int vol,int icom,int nmu,double *mu,
          void (*Dop_dble)(double mu,spinor_dble *s,spinor_dble *r),
          spinor_dble **wsd,int nmx,double *res,
          spinor_dble *eta,spinor_dble **psi,int *status)
  Solution of the Dirac equation (D^dag*D+mu^2)*psi=eta for a given
  source eta and one or more values of mu using the multi-shift CG
  algorithm. See the notes for the explanation of the parameters of
  the program.
