CHROMA
pseudoscalar_loops_s.cc
Go to the documentation of this file.
1 #include "chromabase.h"
2 #include "pseudoscalar_loops_s.h"
4 
5 namespace Chroma {
6 
7 // Standard Time Slicery
8 class TimeSliceFunc : public SetFunc
9 {
10 public:
11  TimeSliceFunc(int dir): dir_decay(dir) {}
12 
13  int operator() (const multi1d<int>& coordinate) const {return coordinate[dir_decay];}
14  int numSubsets() const {return Layout::lattSize()[dir_decay];}
15 
16  int dir_decay;
17 
18 private:
19  TimeSliceFunc() {} // hide default constructor
20 };
21 
22 
23 void fourlink_pseudoscalar_loop::compute(LatticeStaggeredFermion & q_source,
24  LatticeStaggeredFermion & psi, int isample)
25 {
26  // Array to describe shifts in cube
27  multi1d<int> delta(Nd);
28 
29  Set timeslice;
30  timeslice.make(TimeSliceFunc(Nd-1));
31 
32  LatticeStaggeredFermion psi_eta4 ;
33 
34  delta = 0;
35  delta[0] = delta[1] = delta[2] = delta[3] = 1;
36 
37  psi_eta4 = shift_deltaProp(delta, psi);
38 
39  LatticeComplex TrG_eta4 ;
40  using namespace StagPhases;
41 
42  TrG_eta4 = -alpha(0)*alpha(1)*alpha(2)*alpha(3)*localInnerProduct(q_source, psi_eta4);
43 
44  corr_fn[isample] = sumMulti(TrG_eta4, timeslice);
45  corr += corr_fn[isample] ;
46 }
47 
48 
49 
51  LatticeStaggeredFermion & q_source,
52  LatticeStaggeredFermion & psi,
53  int isample)
54 {
55  // Array to describe shifts in cube
56  multi1d<int> delta(Nd);
57 
58  Set timeslice;
59  timeslice.make(TimeSliceFunc(Nd-1));
60 
61  LatticeStaggeredFermion psi_eta3 ;
62 
63  delta = 0;
64  delta[0] = delta[1] = delta[2] = 1;
65 
66  psi_eta3 = shift_deltaProp(delta, psi);
67 
68  LatticeComplex TrG_eta3 ;
69 
70  using namespace StagPhases;
71  TrG_eta3 = alpha(0)*alpha(1)*alpha(2)*localInnerProduct(q_source, psi_eta3);
72 
73  corr_fn[isample] = sumMulti(TrG_eta3, timeslice);
74  corr += corr_fn[isample] ;
75 
76 }
77 
78 void fourlink_pseudoscalar_kilcup_loop::compute(LatticeStaggeredFermion & psi,
79  int isample, Real mass){
80 
81  // Array to describe shifts in cube
82  multi1d<int> delta(Nd);
83 
84  Set timeslice;
85  timeslice.make(TimeSliceFunc(Nd-1));
86 
87  LatticeStaggeredFermion psi_eta4 ;
88 
89  delta = 0;
90  delta[0] = delta[1] = delta[2] = delta[3] = 1;
91 
92  psi_eta4 = shift_deltaProp(delta, psi);
93 
94  LatticeComplex TrG_eta4 ;
95  using namespace StagPhases;
96 
97  TrG_eta4 = -2*mass*alpha(0)*alpha(1)*alpha(2)*alpha(3)
98  *localInnerProduct(psi_eta4, psi);
99 
100  corr_fn[isample] = sumMulti(TrG_eta4, timeslice);
101  corr += corr_fn[isample] ;
102 }
103 
105  LatticeStaggeredFermion & q_source,
106  LatticeStaggeredFermion & psi, int isample){}
107 
108 
110  LatticeStaggeredFermion & q_source,
111  LatticeStaggeredFermion & psi,
112  int isample)
113 {
114  // Array to describe shifts in cube
115  multi1d<int> delta(Nd);
116 
117  Set timeslice;
118  timeslice.make(TimeSliceFunc(Nd-1));
119 
120  LatticeStaggeredFermion psi_eta0 ;
121 
122  delta = 0;
123  // delta[0] = delta[1] = delta[2] = 1;
124 
125  // psi_eta3 = shift_deltaProp(delta, psi);
126  psi_eta0 = psi;
127 
128  LatticeComplex TrG_eta0 ;
129 
130  using namespace StagPhases;
131  TrG_eta0 = alpha(0)*beta(1)*localInnerProduct(q_source, psi_eta0);
132 
133  corr_fn[isample] = sumMulti(TrG_eta0, timeslice);
134  corr += corr_fn[isample] ;
135 
136 }
137 
138 void fourlink_pseudoscalar_loop_fuzz::compute(LatticeStaggeredFermion & q_source,
139  LatticeStaggeredFermion & psi_fuzz, int isample)
140 {
141  // Array to describe shifts in cube
142  multi1d<int> delta(Nd);
143 
144  Set timeslice;
145  timeslice.make(TimeSliceFunc(Nd-1));
146 
147  LatticeStaggeredFermion psi_eta4 ;
148 
149  delta = 0;
150  delta[0] = delta[1] = delta[2] = delta[3] = 1;
151 
152  psi_eta4 = shift_deltaProp(delta, psi_fuzz);
153 
154  LatticeComplex TrG_eta4 ;
155  using namespace StagPhases;
156 
157  TrG_eta4 = -alpha(0)*alpha(1)*alpha(2)*alpha(3)*localInnerProduct(q_source, psi_eta4);
158 
159  corr_fn[isample] = sumMulti(TrG_eta4, timeslice);
160  corr += corr_fn[isample] ;
161 }
162 
163 
164 
166  LatticeStaggeredFermion & q_source,
167  LatticeStaggeredFermion & psi_fuzz,
168  int isample)
169 {
170  // Array to describe shifts in cube
171  multi1d<int> delta(Nd);
172 
173  Set timeslice;
174  timeslice.make(TimeSliceFunc(Nd-1));
175 
176  LatticeStaggeredFermion psi_eta3 ;
177 
178  delta = 0;
179  delta[0] = delta[1] = delta[2] = 1;
180 
181  psi_eta3 = shift_deltaProp(delta, psi_fuzz);
182 
183  LatticeComplex TrG_eta3 ;
184 
185  using namespace StagPhases;
186  TrG_eta3 = alpha(0)*alpha(1)*alpha(2)*localInnerProduct(q_source, psi_eta3);
187 
188  corr_fn[isample] = sumMulti(TrG_eta3, timeslice);
189  corr += corr_fn[isample] ;
190 
191 }
192 
193 void fourlink_pseudoscalar_kilcup_loop_fuzz::compute(LatticeStaggeredFermion & psi_fuzz,
194  LatticeStaggeredFermion & psi,
195  int isample, Real mass){
196 
197  // Array to describe shifts in cube
198  multi1d<int> delta(Nd);
199 
200  Set timeslice;
201  timeslice.make(TimeSliceFunc(Nd-1));
202 
203  LatticeStaggeredFermion psi_eta4 ;
204 
205  delta = 0;
206  delta[0] = delta[1] = delta[2] = delta[3] = 1;
207 
208  psi_eta4 = shift_deltaProp(delta, psi);
209 
210  LatticeComplex TrG_eta4 ;
211  using namespace StagPhases;
212 
213  TrG_eta4 = -2*mass*alpha(0)*alpha(1)*alpha(2)*alpha(3)
214  *localInnerProduct(psi_eta4, psi_fuzz);
215 
216  corr_fn[isample] = sumMulti(TrG_eta4, timeslice);
217  corr += corr_fn[isample] ;
218 }
219 
221  LatticeStaggeredFermion & q_source,
222  LatticeStaggeredFermion & psi_fuzz, int isample){}
223 
224 
225 } // end namespace Chroma
Primary include file for CHROMA library code.
Function object used for constructing the time-slice set.
Definition: barQll_w.h:95
int operator()(const multi1d< int > &coordinate) const
Definition: barQll_w.h:99
multi1d< DComplex > corr
Definition: loops_s.h:177
multi2d< DComplex > corr_fn
Definition: loops_s.h:176
LatticeStaggeredFermion shift_deltaProp(multi1d< int > &delta, const LatticeStaggeredFermion &src)
Definition: loops_s.h:120
Function object used for constructing the time-slice set.
Nd
Definition: meslate.cc:74
QDPSubTypeTrait< typename BinaryReturn< C1, C2, FnLocalInnerProduct >::Type_t >::Type_t localInnerProduct(const QDPSubType< T1, C1 > &l, const QDPType< T2, C2 > &r)
static const LatticeInteger & beta(const int dim)
Definition: stag_phases_s.h:47
static const LatticeInteger & alpha(const int dim)
Definition: stag_phases_s.h:43
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
Double mass
Definition: pbg5p_w.cc:54
LatticeFermion psi
Definition: mespbg5p_w.cc:35