CHROMA
minv_rel_sumr.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief Conjugate-Gradient algorithm for a generic Linear Operator
4  */
5 
6 #ifndef __minv_rel_sumr__
7 #define __minv_rel_sumr__
8 
9 #include "linearop.h"
10 
11 namespace Chroma {
12 
13 // Solve a shifted unitary system
14 //
15 // A x = b
16 //
17 // Where X is of the form: A = zeta I + rho U
18 //
19 // rho > 0 and zeta are complex, and U is unitary
20 //
21 // We solve with the method described in:
22 //
23 // "A Fast Minimal Residual Algorithm for Shifted Unitary Matrices"
24 // by Carl F. Jagels, and Lothar Reichel
25 // Numerical Linear Algebra with Applications, Vol 1(6), 555-570(1994)
26 //
27 // This paper is referenced by and applied to the Overlap Dirac Operator
28 // by G. Arnold, N. Cundy, J. van den Eshof, A Frommer, S. Krieg, T. Lippert,
29 // K. Schaefer "Numerical Methods for the QCD Overlap Operator: II.
30 // Optimal Krylov Subspace Methods" -- hep-lat/0311025
31 // which is where the name SUMR was coined.
32 //
33 template<typename T>
34 void MInvRelSUMR(const LinearOperator<T>& U,
35  const T& b,
36  multi1d<T>& x,
37  const multi1d<Complex>& zeta,
38  const multi1d<Real>& rho,
39  const multi1d<Real>& epsilon,
40  int MaxSUMR,
41  int& n_count);
42 
43 } // end namespace Chroma
44 
45 
46 #endif
Linear Operators.
int x
Definition: meslate.cc:34
int epsilon(int i, int j, int k)
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
int n_count
Definition: invbicg.cc:78
void MInvRelSUMR(const LinearOperator< LatticeFermion > &U, const LatticeFermion &b, multi1d< LatticeFermion > &x, const multi1d< Complex > &zeta, const multi1d< Real > &rho, const multi1d< Real > &epsilon, int MaxSUMR, int &n_count)
Complex b
Definition: invbicg.cc:96
multi1d< LatticeColorMatrix > U
LatticeFermion T
Definition: t_clover.cc:11