34 const LatticePropagator& q_src,
41 QDPIO::cout <<
"Entering quarkProp4" << std::endl;
42 push(xml_out,
"QuarkProp4");
49 switch (quarkSpinType)
70 for(
int color_source = 0; color_source < Nc; ++color_source)
72 for(
int spin_source = start_spin; spin_source < end_spin; ++spin_source)
87 Real nrm = sqrt(norm2(
chi));
88 if (toFloat(nrm) != 0.0)
99 push(xml_out,
"Qprop");
100 write(xml_out,
"color_source", color_source);
101 write(xml_out,
"spin_source", spin_source);
108 fact = Real(1) / fact;
120 switch (quarkSpinType)
140 for(
int color_source = 0; color_source < Nc ; ++color_source)
142 for(
int spin_source = Ns/2; spin_source < Ns; ++spin_source)
144 int copyfrom = spin_source - Ns/2;
148 FermToProp(LatticeFermion(-
psi), q_sol, color_source, spin_source);
168 for(
int color_source = 0; color_source < Nc ; ++color_source)
170 for(
int spin_source = 0; spin_source < Ns/2; ++spin_source)
172 int copyfrom = spin_source + Ns/2;
177 FermToProp(LatticeFermion(
psi), q_sol, color_source, spin_source);
185 QDPIO::cout <<
"Exiting quarkProp4" << std::endl;
191 typedef LatticeFermion
LF;
192 typedef multi1d<LatticeColorMatrix>
LCM;
207 const LatticePropagator& q_src,
212 quarkProp4_a<LF>(q_sol, xml_out, q_src, qprop, quarkSpinType, ncg_had);
229 LatticePropagator& q_sol,
231 const LatticePropagator& q_src,
237 QDPIO::cout <<
"In quarkProp()" << std::endl;
242 QDPIO::cout <<
"Creating qprop took " << swatch.getTimeInSeconds()
243 <<
"sec " << std::endl;
244 quarkProp4_a<LF>(q_sol, xml_out, q_src, qprop, quarkSpinType, ncg_had);
262 LatticePropagator& q_sol,
264 const LatticePropagator& q_src,
271 quarkProp4_a<LF>(q_sol, xml_out, q_src, qprop, quarkSpinType, ncg_had);
285 std::istringstream xml(invParam.
xml);
286 XMLReader paramtop(xml);
303 std::istringstream xml(invParam.
xml);
304 XMLReader paramtop(xml);
321 std::istringstream xml(invParam.
xml);
322 XMLReader paramtop(xml);
338 std::istringstream xml(invParam.
xml);
339 XMLReader paramtop(xml);
355 std::istringstream xml(invParam.
xml);
356 XMLReader paramtop(xml);
375 std::istringstream xml(invParam.
xml);
376 XMLReader paramtop(xml);
393 std::istringstream xml(invParam.
xml);
394 XMLReader paramtop(xml);
412 std::istringstream xml(invParam.
xml);
413 XMLReader paramtop(xml);
419 this->linOpPV(
state));
430 std::istringstream xml(invParam.
xml);
431 XMLReader paramtop(xml);
437 this->linOpPV(
state));
448 std::istringstream xml(invParam.
xml);
449 XMLReader paramtop(xml);
465 std::istringstream xml(invParam.
xml);
466 XMLReader paramtop(xml);
482 std::istringstream xml(invParam.
xml);
483 XMLReader paramtop(xml);
503 std::istringstream xml(invParam.
xml);
504 XMLReader paramtop(xml);
Support class for fermion actions and linear operators.
Class for counted reference semantics.
SystemSolver disambiguator.
SystemSolver disambiguator.
M^dag.M linear operator over arrays.
SystemSolver disambiguator.
SystemSolver disambiguator.
virtual MdagMMultiSystemSolverArray< T > * mInvMdagM(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return a multi-shift linear operator solver for this action to solve (MdagM+shift)*psi=chi.
virtual MdagMMultiSystemSolverAccumulateArray< T > * mInvMdagMPVAcc(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return a multi-shift linear operator solver for this action to solve (PV^dag*PV+shift)*psi=chi.
virtual LinOpSystemSolverArray< T > * invLinOpPV(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return a linear operator solver for this action to solve PV*psi=chi.
virtual void quarkProp(typename PropTypeTraits< T >::Type_t &q_sol, XMLWriter &xml_out, const typename PropTypeTraits< T >::Type_t &q_src, Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam, QuarkSpinType quarkSpinType, int &ncg_had) const
Given a complete propagator as a source, this does all the inversions needed.
virtual MdagMMultiSystemSolverAccumulateArray< T > * mInvMdagMAcc(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return a multi-shift linear operator solver for this action to solve (MdagM+shift)*psi=chi.
virtual MdagMSystemSolverArray< T > * invMdagM(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return a linear operator solver for this action to solve MdagM*psi=chi.
virtual MdagMSystemSolverArray< T > * invMdagMPV(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return a linear operator solver for this action to solve PV^dag*PV*psi=chi.
virtual MdagMMultiSystemSolverArray< T > * mInvMdagMPV(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return a multi-shift linear operator solver for this action to solve (PV^dag*PV+shift)*psi=chi.
virtual LinOpSystemSolverArray< T > * invLinOp(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return a linear operator solver for this action to solve M*psi=chi.
virtual LinOpMultiSystemSolver< T > * mInvLinOp(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return a multi-shift linear operator solver for this action to solve (M+shift)*psi=chi.
virtual MdagMMultiSystemSolver< T > * mInvMdagM(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return a multi-shift linear operator solver for this action to solve (MdagM+shift)*psi=chi.
virtual MdagMMultiSystemSolverAccumulate< T > * mInvMdagMAcc(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
virtual void quarkProp(typename PropTypeTraits< T >::Type_t &q_sol, XMLWriter &xml_out, const typename PropTypeTraits< T >::Type_t &q_src, Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam, QuarkSpinType quarkSpinType, int &ncg_had) const
Given a complete propagator as a source, this does all the inversions needed.
virtual MdagMSystemSolver< T > * invMdagM(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return a linear operator solver for this action to solve MdagM*psi=chi.
virtual LinOpSystemSolver< T > * invLinOp(Handle< FermState< T, P, Q > > state, const GroupXML_t &invParam) const
Return a linear operator solver for this action to solve M*psi=chi.
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.
QuarkSpinType
Quark spin type.
void quarkProp4_a(LatticePropagator &q_sol, XMLWriter &xml_out, const LatticePropagator &q_src, Handle< SystemSolver< T > > qprop, QuarkSpinType quarkSpinType, int &ncg_had)
Given a complete propagator as a source, this does all the inversions needed.
void quarkProp4(LatticeStaggeredPropagator &q_sol, XMLWriter &xml_out, const LatticeStaggeredPropagator &q_src, const StaggeredTypeFermAct< LatticeStaggeredFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > &S_f, Handle< FermState< LatticeStaggeredFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > > state, const GroupXML_t &invParam, QuarkSpinType quarkSpinType, int &ncg_had)
Given a complete propagator as a source, this does all the inversions needed.
Factory for producing system solvers for M*psi = chi.
Factory for producing system solvers for MdagM*psi = chi.
Factory for producing system solvers for MdagM*psi = chi.
Asqtad Staggered-Dirac operator.
push(xml_out,"Condensates")
multi1d< LatticeFermion > chi(Ncb)
LatticeStaggeredFermion LF
multi1d< LatticeColorMatrix > LCM
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
Full quark propagator solver.
Hold group xml and type id.
SystemSolver disambiguator.
SystemSolver disambiguator.
SystemSolver disambiguator.
SystemSolver disambiguator.
SystemSolver disambiguator.
Holds return info from SystemSolver call.
Factory for solving M*psi=chi where M is not hermitian or pos. def.
Handle< LinearOperator< T > > MdagM
Factory for producing system solvers for MdagM*psi = chi.
Wilson-like fermion actions.