CHROMA
lib
actions
ferm
invert
invsumr.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 __invsumr__
7
#define __invsumr__
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
InvSUMR
(
const
LinearOperator<T>&
U
,
35
const
T
&
b
,
36
T
&
x
,
37
const
Complex& zeta,
38
const
Real& rho,
39
const
Real&
epsilon
,
40
int
MaxSUMR,
41
int
&
n_count
);
42
43
}
// end namespace Chroma
44
45
#endif
linearop.h
Linear Operators.
x
int x
Definition:
meslate.cc:34
Chroma::ExternalFieldEnv::epsilon
int epsilon(int i, int j, int k)
Definition:
extfield_aggregate_w.cc:23
Chroma
Asqtad Staggered-Dirac operator.
Definition:
klein_gord.cc:10
Chroma::n_count
int n_count
Definition:
invbicg.cc:78
Chroma::InvSUMR
void InvSUMR(const LinearOperator< LatticeFermion > &U, const LatticeFermion &b, LatticeFermion &x, const Complex &zeta, const Real &rho, const Real &epsilon, int MaxSUMR, int &n_count)
Definition:
invsumr.cc:241
Chroma::b
Complex b
Definition:
invbicg.cc:96
U
multi1d< LatticeColorMatrix > U
Definition:
t_aniso_gaugeact.cc:11
T
LatticeFermion T
Definition:
t_clover.cc:11
Generated by
1.9.1