10 const multi1d<T>&
chi,
20 const Subset&
s =
A.subset();
27 for(
int n=0;
n <
N5;
n++) {
32 Real
beta = sqrt(norm2(v,
s));
36 Real b_norm = sqrt(norm2(
chi,
s));
41 Complex gamma, gamma_prev;
42 gamma = Real(1); gamma_prev = Real(1);
45 Complex sigma , sigma_prev;
50 multi1d<T> v_prev(
N5);
52 multi1d<T> w_prev(
N5);
53 multi1d<T> w_2prev(
N5);
55 for(
int n = 0;
n <
N5;
n++) {
64 for(
int k = 1;
k <
MaxCG && !convP;
k++) {
67 Real ffactor = Real(1)/
beta;
68 for(
int n=0;
n <
N5;
n++) {
75 Complex
alpha = Real(0);
76 for(
int n=0;
n <
N5;
n++) {
82 multi1d<T> v_plus(
N5);
83 for(
int n=0;
n <
N5;
n++) {
85 v_plus[
n][
s] -=
beta * v_prev[
n];
90 Real beta_plus = sqrt(norm2(v_plus,
s));
97 delta = gamma *
alpha - gamma_prev*sigma*
beta;
101 rho_1 = sqrt( real(conj(delta)*delta) + beta_plus*beta_plus );
105 rho_2 = sigma*
alpha + gamma_prev*gamma*
beta;
109 rho_3 = sigma_prev *
beta;
111 Complex gamma_plus = delta / rho_1;
112 Real sigma_plus = beta_plus / rho_1;
116 for(
int n=0;
n <
N5;
n++) {
117 w[
n][
s] = v[
n] - rho_3*w_2prev[
n];
118 w[
n][
s] -= rho_2*w_prev[
n];
119 ffactor = Real(1)/rho_1;
125 Complex factor = gamma_plus*
eta;
126 for(
int n=0;
n <
N5;
n++) {
131 r_norm *= fabs(sigma_plus) ;
150 for(
int n=0;
n <
N5;
n++) {
153 w_2prev[
n][
s] = w_prev[
n];
181 const multi1d<LatticeFermion>&
chi,
182 multi1d<LatticeFermion>&
psi,
Primary include file for CHROMA library code.
Linear Operator to arrays.
BinaryReturn< C1, C2, FnInnerProduct >::Type_t innerProduct(const QDPSubType< T1, C1 > &s1, const QDPType< T2, C2 > &s2)
static const LatticeInteger & beta(const int dim)
static const LatticeInteger & alpha(const int dim)
Asqtad Staggered-Dirac operator.
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > const multi1d< Real > enum InvType invType const multi1d< Real > & RsdCG
void InvMINRES(const LinearOperatorArray< LatticeFermion > &A, const multi1d< LatticeFermion > &chi, multi1d< LatticeFermion > &psi, const Real &RsdCG, int MaxCG, int &n_count)
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > const multi1d< Real > enum InvType invType const multi1d< Real > int MaxCG
multi1d< LatticeFermion > chi(Ncb)
void InvMINRES_a(const LinearOperatorArray< T > &A, const multi1d< T > &chi, multi1d< T > &psi, const Real &RsdCG, int MaxCG, int &n_count)
multi1d< LatticeFermion > s(Ncb)