14 Propagator
SFKprop(
const LatticePropagator& quark_prop_f,
16 multi1d<LatticeColorMatrix> > >
state,
21 QDPIO::cout << __func__ <<
": entering" << std::endl;
34 const multi1d<LatticeColorMatrix>&
u =
state->getLinks();
37 SpinMatrix P_plus = 0.5*(SpinMatrix(1.0) + (Gamma(jd) * SpinMatrix(1.0)));
41 Propagator kprop =
sum(P_plus * (adj(
u[
j_decay]) * quark_prop_f), phases.
getSet()[tmax]);
43 QDPIO::cout << __func__ <<
": exiting" << std::endl;
53 const LatticePropagator& quark_prop_f,
54 const LatticePropagator& quark_prop_b,
57 multi1d<LatticeColorMatrix> > >
state,
62 QDPIO::cout << __func__ <<
": entering" << std::endl;
73 const multi1d<LatticeColorMatrix>&
u =
state->getLinks();
76 Real
norm = 1.0 / Real(QDP::Layout::vol());
82 kprop *= Real(2)*
norm;
85 Real f_1 = 0.5 * norm2(kprop);
89 LatticePropagator quark_prop_bg5k = quark_prop_b * Gamma(
G5) * kprop;
93 LatticeReal r_tmp1 = real(trace(adj(quark_prop_bg5k) * (Gamma(
n) * quark_prop_f)));
94 multi1d<Double> hrsum = sumMulti(r_tmp1, phases.
getSet());
96 multi1d<Real> vector_corr(length);
97 for(
int t = 0;
t < length;
t++)
98 vector_corr[
t] =
norm * real(hrsum[
t]);
100 push(xml_out, xml_group);
101 write(xml_out,
"f_1", f_1);
102 write(xml_out,
"vector_corr", vector_corr);
105 QDPIO::cout << __func__ <<
": exiting" << std::endl;
119 const multi1d<Real>& pseudo_prop_f,
120 const multi1d<Real>& axial_prop_f,
121 const multi1d<Real>& pseudo_prop_b,
122 const multi1d<Real>& axial_prop_b,
123 const LatticePropagator& quark_prop_f,
124 const LatticePropagator& quark_prop_b,
127 multi1d<LatticeColorMatrix> > >
state,
133 QDPIO::cout << __func__ <<
": entering" << std::endl;
138 QDPIO::cerr << __func__ <<
": Z_A computation requires x0 > y0: x0,y0="
139 << x0 <<
" " << y0 << std::endl;
154 Real
norm = 1.0 / Real(QDP::Layout::vol());
159 Propagator kprop =
SFKprop(quark_prop_f,
state, phases);
160 kprop *= Real(2)*
norm;
163 Real f_1 = 0.5 * norm2(kprop);
167 LatticePropagator quark_prop_bg5k = quark_prop_b * Gamma(
G5) * kprop;
170 LatticeReal faa_tmp =
zero;
171 LatticeReal fap_tmp =
zero;
172 LatticeReal fpp_tmp =
zero;
173 LatticeInteger t_coord = QDP::Layout::latticeCoordinate(
j_decay);
176 LatticeBoolean tmask = (t_coord == x0);
177 LatticePropagator quark_prop_s =
zero;
179 for(
int color_source = 0; color_source < Nc; ++color_source)
181 for(
int spin_source = 0; spin_source < Ns; ++spin_source)
187 LatticeFermion
psi = Gamma(
n) *
chi;
192 chi = where(tmask, LatticeFermion(-
psi), LatticeFermion(
zero));
202 LatticeReal r_tmp1 = -real(trace(adj(quark_prop_bg5k) * quark_prop_s));
204 fap_tmp += where(t_coord == (y0+1), r_tmp1, LatticeReal(
zero));
205 fap_tmp -= where(t_coord == (y0-1), r_tmp1, LatticeReal(
zero));
208 r_tmp1 = real(trace(adj(quark_prop_bg5k) * (Gamma(jd) * quark_prop_s)));
209 faa_tmp += where(t_coord == y0, r_tmp1, LatticeReal(
zero));
212 tmask = (t_coord == y0);
215 for(
int color_source = 0; color_source < Nc; ++color_source)
217 for(
int spin_source = 0; spin_source < Ns; ++spin_source)
226 chi = where(tmask, LatticeFermion(-
psi), LatticeFermion(
zero));
236 r_tmp1 = real(trace(adj(quark_prop_bg5k) * quark_prop_s));
237 fap_tmp += where(t_coord == (x0+1), r_tmp1, LatticeReal(
zero));
238 fap_tmp -= where(t_coord == (x0-1), r_tmp1, LatticeReal(
zero));
241 r_tmp1 = -real(trace(adj(quark_prop_bg5k) * (Gamma(jd) * quark_prop_s)));
242 faa_tmp += where(t_coord == x0, r_tmp1, LatticeReal(
zero));
246 for(
int color_source = 0; color_source < Nc; ++color_source)
248 for(
int spin_source = 0; spin_source < Ns; ++spin_source)
254 chi = where(t_coord == (x0+1),
psi, LatticeFermion(
zero));
255 chi -= where(t_coord == (x0-1),
psi, LatticeFermion(
zero));
266 r_tmp1 = -real(trace(adj(quark_prop_bg5k) * quark_prop_s));
267 fpp_tmp += where(t_coord == (y0+1), r_tmp1, LatticeReal(
zero));
268 fpp_tmp -= where(t_coord == (y0-1), r_tmp1, LatticeReal(
zero));
271 r_tmp1 = real(trace(adj(quark_prop_bg5k) * (Gamma(jd) * quark_prop_s)));
272 fap_tmp += where(t_coord == y0, r_tmp1, LatticeReal(
zero));
276 for(
int color_source = 0; color_source < Nc; ++color_source)
278 for(
int spin_source = 0; spin_source < Ns; ++spin_source)
284 chi = where(t_coord == (y0+1),
psi, LatticeFermion(
zero));
285 chi -= where(t_coord == (y0-1),
psi, LatticeFermion(
zero));
295 r_tmp1 = real(trace(adj(quark_prop_bg5k) * quark_prop_s));
296 fpp_tmp += where(t_coord == (x0+1), r_tmp1, LatticeReal(
zero));
297 fpp_tmp -= where(t_coord == (x0-1), r_tmp1, LatticeReal(
zero));
300 r_tmp1 = -real(trace(adj(quark_prop_bg5k) * (Gamma(jd) * quark_prop_s)));
301 fap_tmp += where(t_coord == x0, r_tmp1, LatticeReal(
zero));
303 multi1d<Double> hrsum = sumMulti(faa_tmp, phases.
getSet());
304 Real f_AA = (real(hrsum[x0]) + real(hrsum[y0])) *
norm;
306 hrsum = sumMulti(fap_tmp, phases.
getSet());
307 Real f_AP_PA = real(hrsum[x0]);
308 f_AP_PA += real(hrsum[y0]);
309 f_AP_PA += real(hrsum[x0+1]);
310 f_AP_PA += real(hrsum[x0-1]);
311 f_AP_PA += real(hrsum[y0+1]);
312 f_AP_PA += real(hrsum[y0-1]);
313 f_AP_PA *= 0.5 *
norm;
315 hrsum = sumMulti(fpp_tmp, phases.
getSet());
316 Real f_PP = real(hrsum[x0+1]);
317 f_PP += real(hrsum[x0-1]);
318 f_PP += real(hrsum[y0+1]);
319 f_PP += real(hrsum[y0-1]);
323 fd_AA = axial_prop_b[y0] * axial_prop_f[x0];
324 fd_AA -= axial_prop_b[x0] * axial_prop_f[y0];
327 fd_AP_PA = pseudo_prop_b[y0+1] * axial_prop_f[x0];
328 fd_AP_PA -= pseudo_prop_b[y0-1] * axial_prop_f[x0];
329 fd_AP_PA += axial_prop_b[y0] * pseudo_prop_f[x0+1];
330 fd_AP_PA -= axial_prop_b[y0] * pseudo_prop_f[x0-1];
331 fd_AP_PA -= axial_prop_b[x0] * pseudo_prop_f[y0+1];
332 fd_AP_PA += axial_prop_b[x0] * pseudo_prop_f[y0-1];
333 fd_AP_PA -= pseudo_prop_b[x0+1] * axial_prop_f[y0];
334 fd_AP_PA += pseudo_prop_b[x0-1] * axial_prop_f[y0];
338 fd_PP = pseudo_prop_b[y0+1] * pseudo_prop_f[x0+1];
339 fd_PP -= pseudo_prop_b[y0+1] * pseudo_prop_f[x0-1];
340 fd_PP -= pseudo_prop_b[y0-1] * pseudo_prop_f[x0+1];
341 fd_PP += pseudo_prop_b[y0-1] * pseudo_prop_f[x0-1];
342 fd_PP -= pseudo_prop_b[x0+1] * pseudo_prop_f[y0+1];
343 fd_PP += pseudo_prop_b[x0+1] * pseudo_prop_f[y0-1];
344 fd_PP += pseudo_prop_b[x0-1] * pseudo_prop_f[y0+1];
345 fd_PP -= pseudo_prop_b[x0-1] * pseudo_prop_f[y0-1];
348 push(xml_out, xml_group);
349 write(xml_out,
"f_1", f_1);
350 write(xml_out,
"f_AA", f_AA);
351 write(xml_out,
"f_AP_PA", f_AP_PA);
352 write(xml_out,
"f_PP", f_PP);
353 write(xml_out,
"fd_AA", fd_AA);
354 write(xml_out,
"fd_AP_PA", fd_AP_PA);
355 write(xml_out,
"fd_PP", fd_PP);
358 QDPIO::cout << __func__ <<
": exiting" << std::endl;
Support class for fermion actions and linear operators.
Class for counted reference semantics.
Abstract class for all gauge action boundary conditions with Schroedinger BC.
virtual int getDecayMax() const =0
Ending slice in decay direction.
Fourier transform phase factor support.
int numSubsets() const
Number of subsets - length in decay direction.
int getDir() const
Decay direction.
const Set & getSet() const
The set to be used in sumMulti.
void PropToFerm(const LatticePropagatorF &b, LatticeFermionF &a, int color_index, int spin_index)
Extract a LatticeFermion from a LatticePropagator.
void FermToProp(const LatticeFermionF &a, LatticePropagatorF &b, int color_index, int spin_index)
Insert a LatticeFermion into a LatticePropagator.
void write(XMLWriter &xml, const std::string &path, const AsqtadFermActParams ¶m)
Writer parameters.
void SFCurrentZV(XMLWriter &xml_out, const std::string &xml_group, const LatticePropagator &quark_prop_f, const LatticePropagator &quark_prop_b, Handle< SystemSolver< LatticeFermion > > qprop, Handle< FermState< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > > state, const SftMom &phases)
Compute Z_V.
Propagator SFKprop(const LatticePropagator &quark_prop_f, Handle< FermState< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > > state, const SftMom &phases)
Compute the kprop used in PCAC.
int SFCurrentZA(XMLWriter &xml_out, const std::string &xml_group, const multi1d< Real > &pseudo_prop_f, const multi1d< Real > &axial_prop_f, const multi1d< Real > &pseudo_prop_b, const multi1d< Real > &axial_prop_b, const LatticePropagator &quark_prop_f, const LatticePropagator &quark_prop_b, Handle< SystemSolver< LatticeFermion > > qprop, Handle< FermState< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > > state, const SftMom &phases, int x0, int y0)
Compute Z_V.
Asqtad Staggered-Dirac operator.
static multi1d< LatticeColorMatrix > u
push(xml_out,"Condensates")
multi1d< LatticeFermion > chi(Ncb)
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
Fermion action boundary conditions.
Current renormalizations within Schroedinger functional.
Holds return info from SystemSolver call.