159 const multi1d<LatticeColorMatrix>&
u,
160 const multi1d<LatticePropagator>& p5d,
164 const multi1d<LatticePropagator>& p5d,
165 const LatticePropagator& src,
166 const LatticePropagator& q_q,
167 const LatticePropagator& q_mp_q,
171 QDPIO::cout<<
"check_dwf_ward_identity: Checking the chiral Ward Identity...";
172 QDPIO::cout<<std::endl ;
174 LatticeComplex divA =
zero;
181 LatticeComplex mpps_ps = localNorm2(q_mp_q) ;
182 LatticeComplex ps_ps = localNorm2(q_q);
184 LatticeComplex diff = divA - 2.0 * m_q * ps_ps - 2.0*mpps_ps + 2.0*q_bar_q;
187 multi1d<Double> corr = sumMulti(localNorm2(diff), trick.
getSet());
188 QDPIO::cout<<
"check_dwf_ward_identity: ";
189 QDPIO::cout<<
"Ward Identity violation per timeslice: "<<std::endl;
190 for(
int t(0);
t<corr.size();
t++){
191 QDPIO::cout<<
" "<<
t<<
" "<< sqrt(corr[
t])<<std::endl ;
194 QDPIO::cout<<
"check_dwf_ward_identity: Ward Identity violation: ";
195 QDPIO::cout<<sqrt(norm2(diff))<<std::endl ;
197 QDPIO::cout<<
"check_dwf_ward_identity: |divA|^2 : "<<norm2(divA)<<std::endl;
198 QDPIO::cout<<
"check_dwf_ward_identity: |ps_ps|^2 : "<<norm2(ps_ps)<<std::endl;
199 QDPIO::cout<<
"check_dwf_ward_identity: |mpps_ps|^2 : "<<norm2(mpps_ps)<<std::endl;
200 QDPIO::cout<<
"check_dwf_ward_identity: |q_bar_q|^2 : "<<norm2(q_bar_q)<<std::endl;
201 Double gmor( sqrt(norm2(
sum(m_q*ps_ps + mpps_ps - q_bar_q))) );
202 QDPIO::cout<<
"check_dwf_ward_identity: GMOR : "<<gmor<<std::endl;
221 const LatticePropagator& q_src,
225 multi1d<LatticeColorMatrix>, multi1d<LatticeColorMatrix> > >
state,
231 QDPIO::cout <<
"entering DWF_QuarkProp4" << std::endl;
233 push(xml_out,
"DWF_QuarkProp4");
237 int N5 = qpropT->size();
238 multi1d<LatticePropagator> prop5d(
N5);
239 LatticePropagator q_mp;
241 multi1d<LatticeFermion>
psi(
N5);
244 for(
int color_source = 0; color_source < Nc; ++color_source)
246 for(
int spin_source = 0; spin_source < Ns; ++spin_source)
248 QDPIO::cout<<
"dwf_quarkProp:: doing color : "<< color_source;
249 QDPIO::cout<<
" and spin : "<< spin_source<<std::endl ;
261 Real nrm = sqrt(norm2(
tmp));
262 if (toFloat(nrm) != 0.0)
271 multi1d<LatticeFermion>
chi(
N5) ;
274 chi[0 ] = chiralProjectPlus(
tmp) ;
275 chi[
N5-1] = chiralProjectMinus(
tmp) ;
283 push(xml_out,
"Qprop");
284 write(xml_out,
"color_source", color_source);
285 write(xml_out,
"spin_source", spin_source);
293 fact = Real(1) / fact;
294 for(
int i = 0;
i <
N5; ++
i)
303 for(
int s(0);
s<
N5;
s++)
307 tmp = chiralProjectMinus(
psi[0]) + chiralProjectPlus(
psi[
N5-1]);
315 tmp = chiralProjectPlus(
psi[
N5/2 - 1]) + chiralProjectMinus(
psi[
N5/2]) ;
323 multi1d<Double> bulk_norm2(
N5/2);
326 for(
int s=0;
s < bulk_norm2.size(); ++
s)
328 bulk_norm2[
s] = norm2(chiralProjectMinus(prop5d[
s]) + chiralProjectPlus(prop5d[
N5-1-
s]));
331 write(xml_out,
"bulk_norm2", bulk_norm2);
335 LatticeComplex cfield ;
342 multi1d<Real> mesprop(length);
344 multi1d<DComplex> corr = sumMulti(cfield, trick.
getSet());
345 for(
int t(0);
t<length;
t++){
346 int t_eff( (
t - t_src + length) % length ) ;
347 mesprop[t_eff] = real(corr[
t]) ;
351 push(xml_out,
"time_direction");
354 push(xml_out,
"DWF_ConservedAxial");
355 write(xml_out,
"mesprop", mesprop);
362 multi1d<DComplex> corr = sumMulti(cfield, trick.
getSet()) ;
363 for(
int t(0);
t<length;
t++){
364 int t_eff( (
t - t_src + length) % length ) ;
365 mesprop[t_eff] = -real(corr[
t]) ;
368 push(xml_out,
"DWF_LocalAxial");
369 write(xml_out,
"mesprop", mesprop);
373 multi1d<Double>
tmp = sumMulti(localNorm2(q_mp), trick.
getSet());
374 for(
int t(0);
t<length;
t++){
375 int t_eff( (
t - t_src + length) % length ) ;
376 mesprop[t_eff] =
tmp[
t] ;
379 push(xml_out,
"DWF_MidPoint_Pseudo");
380 write(xml_out,
"mesprop", mesprop);
383 tmp = sumMulti(localNorm2(q_sol), trick.
getSet());
384 for(
int t(0);
t<length;
t++){
385 int t_eff( (
t - t_src + length) % length ) ;
386 mesprop[t_eff] =
tmp[
t] ;
388 push(xml_out,
"DWF_Psuedo_Pseudo");
389 write(xml_out,
"mesprop", mesprop);
399 QDPIO::cout <<
"exiting DWF_QuarkProp4" << std::endl;
418 const multi1d<LatticeColorMatrix>&
u,
419 const multi1d<LatticePropagator>& p5d,
432 multi1d<LatticePropagator> us_p5d(
N5) ;
433 for(
int s(0);
s<
N5;
s++)
436 for(
int s(0);
s<
N5;
s++){
439 C=0.5*( trace(adj( p5d[
N5-1-
s])*Gamma(g5)*Gamma(
d)*us_p5d[
s]) -
440 trace(adj( p5d[
N5-1-
s])*Gamma(g5) *us_p5d[
s]) +
442 trace(adj(us_p5d[
N5-1-
s])*Gamma(g5)*Gamma(
d)* p5d[
s]) +
443 trace(adj(us_p5d[
N5-1-
s])*Gamma(g5) * p5d[
s]) );
Primary include file for CHROMA library code.
Support class for fermion actions and linear operators.
Class for counted reference semantics.
Fourier transform phase factor support.
int numSubsets() const
Number of subsets - length in decay direction.
const Set & getSet() const
The set to be used in sumMulti.
Full quark propagator solver for domain wall fermions.
DWF parity/rotation operator.
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 dwf_quarkProp4(LatticePropagator &q_sol, XMLWriter &xml_out, const LatticePropagator &q_src, int t_src, int j_decay, Handle< SystemSolverArray< LatticeFermion > > qpropT, Handle< FermState< LatticeFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > > state, const Real &m_q, int &ncg_had)
Given a complete propagator as a source, this does all the inversions needed.
SpinMatrix C()
C = Gamma(10)
QDPSubTypeTrait< typename BinaryReturn< C1, C2, FnLocalInnerProduct >::Type_t >::Type_t localInnerProduct(const QDPSubType< T1, C1 > &l, const QDPType< T2, C2 > &r)
Asqtad Staggered-Dirac operator.
void dwf_conserved_axial_ps_corr(LatticeComplex &corr, const multi1d< LatticeColorMatrix > &u, const multi1d< LatticePropagator > &p5d, const int mu)
static multi1d< LatticeColorMatrix > u
push(xml_out,"Condensates")
multi1d< LatticeFermion > chi(Ncb)
void check_dwf_ward_identity(const multi1d< LatticeColorMatrix > &u, const multi1d< LatticePropagator > &p5d, const LatticePropagator &src, const LatticePropagator &q_q, const LatticePropagator &q_mp_q, const Real &m_q, int j_decay)
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
multi1d< LatticeFermion > s(Ncb)
FloatingPoint< double > Double
Fourier transform phase factor support.
Holds return info from SystemSolver call.