34 namespace InlineStochGroupMesonEnv
48 XMLReader paramtop(xml, path);
51 read(paramtop,
"version", version);
62 QDPIO::cerr <<
"Input parameter version " << version <<
" unsupported." << std::endl;
84 write(xml,
"version", version);
92 push(xml,
"QuarkDilutions");
106 XMLReader inputtop(xml, path);
109 read(inputtop,
"id", input.
id);
126 XMLReader inputtop(xml, path);
147 namespace InlineStochGroupMesonEnv
152 AbsInlineMeasurement* createMeasurement(XMLReader& xml_in,
155 return new InlineMeas(Params(xml_in, path));
184 StandardOutputStream&
operator<<(StandardOutputStream& os,
const multi1d<int>&
d)
190 for(
int i=1;
i <
d.size(); ++
i)
211 XMLReader paramtop(xml_in, path);
213 if (paramtop.count(
"Frequency") == 1)
225 if (paramtop.count(
"xml_file") != 0)
232 QDPIO::cerr << __func__ <<
": Caught Exception reading XML: " << e << std::endl;
270 multi1d<TwoQuarkOp_t>
ops;
345 multi1d<int> lgaa(3);
349 multi1d<int> lga = concat(lgaa,
a.displacement);
351 multi1d<int> lgbb(3);
355 multi1d<int> lgb = concat(lgbb,
b.displacement);
364 multi1d<LatticeComplex>
vec;
377 const multi1d<LatticeColorMatrix> & u_smr);
393 std::map<KeySmearedDispColorVector_t, SmearedDispColorVector_t>& disp_quark_map,
395 const LatticeFermion& smrd_q);
398 virtual const LatticeFermion&
401 virtual const LatticeFermion&
409 const multi1d<LatticeColorMatrix> &
u;
421 multi1d< std::map<KeySmearedDispColorVector_t, SmearedDispColorVector_t> >
disp_src_maps;
422 multi1d< std::map<KeySmearedDispColorVector_t, SmearedDispColorVector_t> >
disp_soln_maps;
430 const multi1d<LatticeColorMatrix> & u_smr) :
431 displacement_length(disp_length),diluted_quarks(dil_quarks),
432 quarkSmearing(qsmr),
u(u_smr)
436 QDPIO::cerr << __func__ <<
": expected num_quarks=" <<
N_quarks << std::endl;
448 const LatticeFermion&
452 std::map<KeySmearedQuark_t, SmearedQuark_t> & qmap =
smeared_src_maps[qnum];
455 if ( qmap.find(key) == qmap.end() )
461 qmap.insert(std::make_pair(key, smrd_empty));
464 if ( qmap.find(key) == qmap.end() )
466 QDPIO::cerr << __func__
467 <<
": internal error - could not insert empty key in std::map"
483 (*quarkSmearing)(f,
u);
497 smrd_q.
quark = mat * f;
501 QDPIO::cout <<
" Smeared Sources: Quark = "<< qnum <<
" t0 = "
502 << key.
t0 <<
" dil = "<< key.
dil <<
" Time = "<< snoop.getTimeInSeconds() <<
" sec"<<std::endl;
505 qmap.insert(std::make_pair(key, smrd_q));
511 return (qmap.find(key)->second).quark ;
516 const LatticeFermion&
523 if ( qmap.find(key) == qmap.end() )
530 qmap.insert(std::make_pair(key, smrd_empty));
533 if ( qmap.find(key) == qmap.end() )
535 QDPIO::cerr << __func__
536 <<
": internal error - could not insert empty key in std::map"
551 (*quarkSmearing)(smrd_q.
quark,
u);
565 smrd_q.
quark = mat * f;
569 QDPIO::cout <<
" Smeared Sinks: Quark = "<< qnum <<
" t0 = "
570 << key.
t0 <<
" dil = "<< key.
dil <<
" Time = "<< snoop.getTimeInSeconds() <<
" sec"<<std::endl;
573 qmap.insert(std::make_pair(key, smrd_q));
579 return (qmap.find(key)->second).quark ;
583 multi1d<LatticeComplex>
592 const LatticeFermion& smrd_q =
smearSource(quark_num, smr_key);
594 multi1d<LatticeComplex> vec;
600 LatticeColorVector colvec = peekSpin( smrd_q, key.
spin - 1);
602 for (
int c = 0 ;
c < Nc ; ++
c)
603 vec[
c] = peekColor( colvec,
c);
615 multi1d<LatticeComplex>
624 const LatticeFermion& smrd_q =
smearSolution(quark_num, smr_key);
626 multi1d<LatticeComplex> vec;
632 LatticeColorVector colvec = peekSpin( smrd_q, key.
spin - 1);
634 for (
int c = 0 ;
c < Nc ; ++
c)
635 vec[
c] = peekColor( colvec,
c);
648 const multi1d<LatticeComplex> &
650 std::map<KeySmearedDispColorVector_t, SmearedDispColorVector_t>& disp_quark_map,
652 const LatticeFermion& smrd_q)
657 if (disp_quark_map.find(key) == disp_quark_map.end())
676 disp_quark_map.insert(std::make_pair(key, disp_empty));
680 QDPIO::cout<<
"Inserted key in std::map: time = "<< snoop.getTimeInSeconds() <<
"secs"<<std::endl;
683 if (disp_quark_map.find(key) == disp_quark_map.end())
685 QDPIO::cerr << __func__
686 <<
": internal error - could not insert empty key in std::map"
699 LatticeColorVector vec = peekSpin(smrd_q, key.
spin - 1);
719 QDPIO::cout <<
"Displaced Quarks: Spin = "<<key.
spin<<
" Disp = "
720 << key.
displacement <<
" Time = "<<snoop.getTimeInSeconds() <<
" sec"<<std::endl;
722 disp_q.
vec.resize(Nc);
724 for(
int i = 0 ;
i < Nc ; ++
i )
726 disp_q.
vec[
i] = peekColor(vec,
i);
739 QDPIO::cout <<
"Retrieved entry from std::map : time = "<< snoop.getTimeInSeconds() <<
"secs "<<std::endl;
748 const multi1d<LatticeComplex>& q0,
749 const multi1d<LatticeComplex>& q1,
750 const Subset& subset)
752 singlet[subset] = q0[0] * q1[0];
753 for(
int i=1;
i < q0.size(); ++
i)
754 singlet[subset] += q0[
i] * q1[
i];
767 multi2d<DComplex> op_sum;
768 LatticeComplex singlet;
777 op_sum = phases.
sft(singlet,
t0);
785 op_sum = phases.
sft(singlet,
t0);
793 op_sum = phases.
sft(singlet,
t0);
801 op_sum = phases.
sft(singlet);
823 multi1d<DComplex>
op;
858 write(xml,
"version", version);
866 push(xml,
"dilution_l");
870 push(xml,
"dilution_r");
918 TextFileReader
reader(ops_file);
922 oplist.
ops.resize(num_ops);
925 for(
int n=0;
n < oplist.
ops.size(); ++
n)
938 qqq.
quark[0].displacement.resize(1);
939 qqq.
quark[0].displacement[0] = 0;
944 for(
int i=0;
i < ndisp; ++
i)
967 push(xml_out,
"stoch_meson");
968 write(xml_out,
"update_no", update_no);
969 write(xml_out,
"xml_file", xml_file);
972 XMLFileWriter xml(xml_file);
973 func(update_no, xml);
977 func(update_no, xml_out);
997 XMLBufferWriter gauge_xml;
1003 catch( std::bad_cast )
1015 const multi1d<LatticeColorMatrix>&
u =
1018 push(xml_out,
"StochGroupMeson");
1019 write(xml_out,
"update_no", update_no);
1029 write(xml_out,
"Config_info", gauge_xml);
1031 push(xml_out,
"Output_version");
1032 write(xml_out,
"out_version", 1);
1037 MesPlq(xml_out,
"Observables",
u);
1048 QDPIO::cerr <<
name <<
": expecting 2 quark dilutions" << std::endl;
1052 multi1d< Handle< DilutionScheme<LatticeFermion> > > diluted_quarks(
N_quarks);
1061 std::istringstream xml_d(dil_xml.
xml);
1062 XMLReader diltop(xml_d);
1063 QDPIO::cout <<
"Dilution type = " << dil_xml.
id << std::endl;
1066 dil_xml.
id, diltop, dil_xml.
path);
1071 QDPIO::cerr <<
name <<
": Caught Exception constructing dilution scheme: " << e << std::endl;
1080 multi1d<int> participating_timeslices( diluted_quarks[0]->getNumTimeSlices() );
1082 for (
int t0 = 0 ;
t0 < participating_timeslices.size() ; ++
t0)
1084 participating_timeslices[
t0] = diluted_quarks[0]->getT0(
t0);
1089 if ( diluted_quarks[
n]->getNumTimeSlices() != participating_timeslices.size() )
1091 QDPIO::cerr <<
name <<
" : Quarks do not contain the same number of dilution timeslices: Quark "
1097 for (
int t0 = 0 ;
t0 < participating_timeslices.size() ; ++
t0)
1099 if ( diluted_quarks[
n]->getT0(
t0) != participating_timeslices[
t0] )
1101 QDPIO::cerr <<
name <<
" : Quarks do not contain the same participating timeslices: Quark "<<
1102 n <<
" timeslice "<<
t0 << std::endl;
1113 if (diluted_quarks[0]->getCfgInfo() != diluted_quarks[
n]->getCfgInfo())
1116 <<
" : Quarks do not contain the same cfg info, quark "<<
n << std::endl;
1129 XMLBufferWriter top;
1130 write(top,
"Config_info", gauge_xml);
1131 XMLReader from(top);
1132 XMLReader from2(from,
"/Config_info");
1133 std::ostringstream os;
1138 if (cfgInfo != diluted_quarks[0]->getCfgInfo())
1141 <<
" : Quarks do not contain the same cfg info as the gauge field."
1142 <<
"gauge: XX"<<cfgInfo<<
"XX quarks: XX"<<diluted_quarks[0]->getCfgInfo()<<
"XX"<< std::endl;
1152 int decay_dir = diluted_quarks[0]->getDecayDir();
1157 if (phases.
numSubsets() != QDP::Layout::lattSize()[decay_dir])
1159 QDPIO::cerr <<
name <<
": number of time slices not equal to that in the decay direction: "
1160 << QDP::Layout::lattSize()[decay_dir]
1168 for(
int n = 1 ;
n < diluted_quarks.size(); ++
n)
1170 if ( toBool( diluted_quarks[
n]->getSeed() == diluted_quarks[0]->getSeed() ) )
1172 QDPIO::cerr <<
name <<
": error, quark seeds are the same" << std::endl;
1176 if ( toBool( diluted_quarks[
n]->getDecayDir() != diluted_quarks[0]->getDecayDir() ) )
1178 QDPIO::cerr <<
name <<
": error, quark decay dirs do not match" <<std::endl;
1187 multi1d<LatticeColorMatrix> u_smr =
u;
1192 XMLReader linktop(xml_l);
1200 (*linkSmearing)(u_smr);
1204 QDPIO::cerr <<
name <<
": Caught Exception link smearing: " << e << std::endl;
1208 MesPlq(xml_out,
"Smeared_Observables", u_smr);
1213 QDPIO::cout <<
"Reading 2-quark operators" << std::endl;
1225 QDPIO::cout <<
"Create quark smearing object" << std::endl;
1229 XMLReader smeartop(xml_s);
1238 QDPIO::cerr <<
": Caught Exception creating quark smearing object: " << e << std::endl;
1243 QDPIO::cerr <<
": Caught generic exception creating smearing object" << std::endl;
1254 for(
int t0 = 0;
t0 < participating_timeslices.size() ; ++
t0)
1265 diluted_quarks, quarkSmearing, u_smr);
1274 creat_oper.
seed_l = diluted_quarks[1]->getSeed();
1275 creat_oper.
seed_r = diluted_quarks[0]->getSeed();
1283 for(
int l=0;
l < qqq_oplist.
ops.size(); ++
l)
1285 QDPIO::cout <<
"Elemental operator: op = " <<
l << std::endl;
1287 push(xml_out,
"MesonOperator");
1289 creat_oper.
id = qqq_oplist.
ops[
l].name;
1291 write(xml_out,
"Name", creat_oper.
id);
1298 multi1d<KeySmearedDispColorVector_t> keySmearedDispColorVector(
N_quarks);
1302 keySmearedDispColorVector[
n].displacement = qqq_oplist.
ops[
l].quark[
n].displacement;
1303 keySmearedDispColorVector[
n].spin = qqq_oplist.
ops[
l].quark[
n].spin;
1307 creat_oper.
time_slices[0].t0 = participating_timeslices[
t0];
1317 cop.
dilutions.resize(diluted_quarks[n0]->getDilSize(
t0), diluted_quarks[n1]->getDilSize(
t0));
1321 keySmearedDispColorVector[
n].t0 =
t0;
1324 for(
int i = 0 ;
i < diluted_quarks[n0]->getDilSize(
t0) ; ++
i)
1326 for(
int j = 0 ;
j < diluted_quarks[n1]->getDilSize(
t0) ; ++
j)
1328 keySmearedDispColorVector[0].dil =
i;
1329 keySmearedDispColorVector[1].dil =
j;
1331 LatticeComplex c_oper;
1339 multi2d<DComplex> c_sum(
contractOp(smrd_disp_vecs,
1340 n0, keySmearedDispColorVector[0],
1341 n1, keySmearedDispColorVector[1],
1344 participating_timeslices[
t0]));
1354 for(
int mom_num = 0 ; mom_num < phases.
numMom() ; ++mom_num)
1357 cop.
dilutions(
i,
j).mom_projs[mom_num].op.resize(1);
1360 c_sum[mom_num][ participating_timeslices[
t0] ];
1368 QDPIO::cout <<
"Creation operator construction: operator= " <<
l
1370 << swiss.getTimeInSeconds()
1371 <<
" secs" << std::endl;
1373 QDPIO::cout <<
"Creation operator testval(t0 = " <<
1374 participating_timeslices[
t0] <<
") = " <<
1375 creat_oper.
time_slices[0].dilutions(0,0).mom_projs[0].op[0]
1379 std::stringstream cnvrt;
1380 cnvrt << creat_oper.
id <<
"_t" << participating_timeslices[
t0] <<
"_src.lime";
1384 filename = cnvrt.str();
1390 XMLBufferWriter src_record_xml, file_xml;
1391 BinaryBufferWriter src_record_bin;
1393 push(file_xml,
"SourceMesonOperator");
1395 write(file_xml,
"Config_info", gauge_xml);
1396 write(file_xml,
"Op_Info",qqq_oplist.
ops[
l]);
1398 push(file_xml,
"QuarkSources");
1403 push(file_xml,
"Quark_l");
1404 push(file_xml,
"TimeSlice");
1405 push(file_xml,
"Dilutions");
1406 for (
int dil = 0; dil < diluted_quarks[n0]->getDilSize(
t0) ; ++dil)
1408 write(file_xml,
"elem", diluted_quarks[n0]->getSourceHeader(
t0, dil));
1417 push(file_xml,
"Quark_r");
1418 push(file_xml,
"TimeSlice");
1419 push(file_xml,
"Dilutions");
1420 for (
int dil = 0; dil < diluted_quarks[n1]->getDilSize(
t0) ; ++dil)
1422 write(file_xml,
"elem", diluted_quarks[n1]->getSourceHeader(
t0, dil));
1429 push(file_xml,
"QuarkSinks");
1431 push(file_xml,
"Quark_l");
1432 write(file_xml,
"PropHeader", diluted_quarks[n0]->getPropHeader(0,0));
1435 push(file_xml,
"Quark_r");
1436 write(file_xml,
"PropHeader", diluted_quarks[n1]->getPropHeader(0,0));
1442 QDPFileWriter qdp_file(file_xml, filename,
1443 QDPIO_SINGLEFILE, QDPIO_SERIAL, QDPIO_OPEN);
1446 write(src_record_xml,
"MesonCreationOperator", creat_oper);
1447 write(src_record_bin, creat_oper);
1449 write(qdp_file, src_record_xml, src_record_bin);
1454 QDPIO::cout <<
"Source Operator writing: operator = " <<
1456 << swiss.getTimeInSeconds()
1457 <<
" secs" << std::endl;
1474 annih_oper.
seed_l = diluted_quarks[0]->getSeed();
1475 annih_oper.
seed_r = diluted_quarks[1]->getSeed();
1482 QDPIO::cout <<
"Building Sink operators" << std::endl;
1485 for(
int l=0;
l < qqq_oplist.
ops.size(); ++
l)
1487 QDPIO::cout <<
"Elemental operator: op = " <<
l << std::endl;
1489 annih_oper.
id = qqq_oplist.
ops[
l].name;
1496 multi1d<KeySmearedDispColorVector_t> keySmearedDispColorVector(
N_quarks);
1500 keySmearedDispColorVector[
n].displacement = qqq_oplist.
ops[
l].quark[
n].displacement;
1501 keySmearedDispColorVector[
n].spin = qqq_oplist.
ops[
l].quark[
n].spin;
1504 annih_oper.
time_slices[0].t0 = participating_timeslices[
t0];
1516 aop.
dilutions.resize(diluted_quarks[n0]->getDilSize(
t0), diluted_quarks[n1]->getDilSize(
t0));
1520 keySmearedDispColorVector[
n].t0 =
t0;
1523 for(
int i = 0 ;
i < diluted_quarks[n0]->getDilSize(
t0) ; ++
i)
1525 for(
int j = 0 ;
j < diluted_quarks[n1]->getDilSize(
t0) ; ++
j)
1527 keySmearedDispColorVector[0].dil =
i;
1528 keySmearedDispColorVector[1].dil =
j;
1537 multi2d<DComplex> a_sum(
contractOp(smrd_disp_vecs,
1538 n0, keySmearedDispColorVector[0],
1539 n1, keySmearedDispColorVector[1],
1542 participating_timeslices[
t0]));
1552 for(
int mom_num = 0 ; mom_num < phases.
numMom() ; ++mom_num)
1556 aop.
dilutions(
i,
j).mom_projs[mom_num].op = a_sum[mom_num];
1563 QDPIO::cout <<
"Annihilation operator construction: operator= " <<
l
1565 << swiss.getTimeInSeconds()
1566 <<
" secs" << std::endl;
1568 QDPIO::cout <<
"Annihilation op testval( t0 = " <<
1569 participating_timeslices[
t0] <<
") = " <<
1570 annih_oper.
time_slices[0].dilutions(0,0).mom_projs[0].op[0]
1574 std::stringstream cnvrt;
1575 cnvrt << annih_oper.
id <<
"_t" << participating_timeslices[
t0] <<
"_snk.lime";
1579 filename = cnvrt.str();
1585 XMLBufferWriter src_record_xml, file_xml;
1586 BinaryBufferWriter src_record_bin;
1588 push(file_xml,
"SinkMesonOperator");
1590 write(file_xml,
"Config_info", gauge_xml);
1591 write(file_xml,
"Op_Info",qqq_oplist.
ops[
l]);
1592 push(file_xml,
"QuarkSources");
1597 push(file_xml,
"Quark_l");
1598 push(file_xml,
"TimeSlice");
1599 push(file_xml,
"Dilutions");
1600 for (
int dil = 0; dil < diluted_quarks[n0]->getDilSize(
t0) ; ++dil)
1602 write(file_xml,
"elem", diluted_quarks[n0]->getSourceHeader(
t0, dil));
1608 push(file_xml,
"Quark_r");
1609 push(file_xml,
"TimeSlice");
1610 push(file_xml,
"Dilutions");
1611 for (
int dil = 0; dil < diluted_quarks[n1]->getDilSize(
t0) ; ++dil)
1613 write(file_xml,
"elem", diluted_quarks[n1]->getSourceHeader(
t0, dil));
1620 push(file_xml,
"QuarkSinks");
1622 push(file_xml,
"Quark_l");
1623 write(file_xml,
"PropHeader", diluted_quarks[n0]->getPropHeader(0,0));
1626 push(file_xml,
"Quark_r");
1627 write(file_xml,
"PropHeader", diluted_quarks[n1]->getPropHeader(0,0));
1633 QDPFileWriter qdp_file(file_xml, filename,
1634 QDPIO_SINGLEFILE, QDPIO_SERIAL, QDPIO_OPEN);
1637 write(src_record_xml,
"MesonAnnihilationOperator", annih_oper);
1638 write(src_record_bin, annih_oper);
1640 write(qdp_file, src_record_xml, src_record_bin);
1645 QDPIO::cout <<
"Annihilation Operator writing: operator = " <<
l
1646 <<
" time= " << swiss.getTimeInSeconds() <<
" secs" << std::endl;
1659 << snoop.getTimeInSeconds()
1660 <<
" secs" << std::endl;
Inline measurement factory.
Class for counted reference semantics.
void operator()(const unsigned long update_no, XMLWriter &xml_out)
Do the measurement.
void func(const unsigned long update_no, XMLWriter &xml_out)
Do the measurement.
The smeared and displaced objects.
multi1d< std::map< KeySmearedDispColorVector_t, SmearedDispColorVector_t > > disp_soln_maps
~SmearedDispObjects()
Destructor.
virtual const LatticeFermion & smearSource(int qnum, const KeySmearedQuark_t &key)
Smear sources and solutions.
virtual const multi1d< LatticeComplex > & displaceObject(std::map< KeySmearedDispColorVector_t, SmearedDispColorVector_t > &disp_quark_map, const KeySmearedDispColorVector_t &key, const LatticeFermion &smrd_q)
Displace an object.
multi1d< std::map< KeySmearedQuark_t, SmearedQuark_t > > smeared_soln_maps
multi1d< std::map< KeySmearedDispColorVector_t, SmearedDispColorVector_t > > disp_src_maps
Maps of smeared displaced color vectors.
int displacement_length
Displacement length.
virtual multi1d< LatticeComplex > getDispSolution(int quark_num, const KeySmearedDispColorVector_t &key)
Accessor.
SmearedDispObjects(int disp_length, multi1d< Handle< DilutionScheme< LatticeFermion > > > dil_quarks, Handle< QuarkSmearing< LatticeFermion > > qsmr, const multi1d< LatticeColorMatrix > &u_smr)
Constructor from smeared std::map.
const multi1d< LatticeColorMatrix > & u
Gauge field.
multi1d< Handle< DilutionScheme< LatticeFermion > > > diluted_quarks
virtual const LatticeFermion & smearSolution(int qnum, const KeySmearedQuark_t &key)
virtual multi1d< LatticeComplex > getDispSource(int quark_num, const KeySmearedDispColorVector_t &key)
Accessor.
Handle< QuarkSmearing< LatticeFermion > > quarkSmearing
multi1d< std::map< KeySmearedQuark_t, SmearedQuark_t > > smeared_src_maps
Maps of smeared color vectors.
Base class for quark smearing.
Fourier transform phase factor support.
int numSubsets() const
Number of subsets - length in decay direction.
multi1d< int > numToMom(int mom_num) const
Convert momenta id to actual array of momenta.
multi2d< DComplex > sft(const LatticeComplex &cf) const
Do a sumMulti(cf*phases,getSet())
int numMom() const
Number of momenta.
const Set & getSet() const
The set to be used in sumMulti.
All dilution scheme factories.
Factory for dilution schemes.
Basis rotation matrix from Dirac to Degrand-Rossi (and reverse)
Parallel transport a lattice field.
SpinMatrixD DiracToDRMat()
The Dirac to Degrand-Rossi spin transformation matrix (and reverse)
void proginfo(XMLWriter &xml)
Print out basic information about this program.
std::string makeXMLFileName(std::string xml_file, unsigned long update_no)
Return a xml file name for inline measurements.
multi1d< GroupXML_t > readXMLArrayGroup(XMLReader &xml_in, const std::string &path, const std::string &type_name)
Read group and return as a std::string.
MesonOpType
Meson operator contraction orderings.
GroupXML_t readXMLGroup(XMLReader &xml_in, const std::string &path, const std::string &type_name)
Read group and return as a std::string.
@ MESON_OP_TYPE_SOLUTION_SOURCE
@ MESON_OP_TYPE_SOURCE_SOLUTION
@ MESON_OP_TYPE_SOLUTION_SOLUTION
@ MESON_OP_TYPE_SOURCE_SOURCE
LatticePropagator displacement(const multi1d< LatticeColorMatrix > &u, const LatticePropagator &chi, int length, int dir)
Apply a displacement operator to a lattice field.
Class for counted reference semantics.
Inline measurement of stochastic group meson operators.
void savern(int iseed[4])
Named object function std::map.
static bool registered
Local registration flag.
bool registerAll()
Register all the factories.
void readOps(TwoQuarkOps_t &oplist, const std::string &ops_file)
Read 2-quark operators file, assign correct displacement length.
const int N_quarks
Number of quarks to be used in this construction.
bool registerAll()
Register all the factories.
void read(XMLReader &xml, const std::string &path, InlineStochGroupMesonEnv::Params::Param_t ¶m)
void makeColorSinglet(LatticeComplex &singlet, const multi1d< LatticeComplex > &q0, const multi1d< LatticeComplex > &q1, const Subset &subset)
bool operator<(const KeySmearedQuark_t &a, const KeySmearedQuark_t &b)
Support for the keys of smeared quarks.
SpinMatrix rotate_mat(adj(DiracToDRMat()))
void write(XMLWriter &xml, const std::string &path, const InlineStochGroupMesonEnv::Params::Param_t ¶m)
multi2d< DComplex > contractOp(SmearedDispObjects &smrd_disp_vecs, int n0, const KeySmearedDispColorVector_t &k0, int n1, const KeySmearedDispColorVector_t &k1, MesonOpType contractType, const SftMom &phases, int t0)
bool registerAll()
Register all the factories.
bool registerAll()
Register all the factories.
Handle< FermBC< LatticeStaggeredFermion, multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > > reader(XMLReader &xml_in, const std::string &path)
Helper function for the FermionAction readers.
Asqtad Staggered-Dirac operator.
QDP::StandardOutputStream & operator<<(QDP::StandardOutputStream &s, const multi1d< int > &d)
static multi1d< LatticeColorMatrix > u
push(xml_out,"Condensates")
void MesPlq(const multi1d< LatticeColorMatrixF3 > &u, multi2d< Double > &plane_plaq, Double &link)
Print out basic info about this program.
All quark smearing constructors.
Factory for producing quark smearing objects.
Fourier transform phase factor support.
All make sink constructors.
Factory for producing quark prop sinks.
Factory for producing quark smearing objects.
Hold group xml and type id.
The key for smeared and displaced color vectors.
multi1d< int > displacement
The key for smeared quarks.
Momentum projected correlator.
Meson operator dilutions.
multi1d< Mom_t > mom_projs
Meson operator time slices corresponding to location of operator source.
multi2d< Dilutions_t > dilutions
multi1d< TimeSlices_t > time_slices
MesonOpType op_contract_type
TwoQuarkOpsFile_t operators_file
multi1d< GroupXML_t > quark_dils
GroupXML_t quark_smearing
MesonOpType annih_op_contract_type
MesonOpType creat_op_contract_type
void writeXML(XMLWriter &xml_out, const std::string &path)
The value of the std::map.
multi1d< LatticeComplex > vec
multi1d< int > displacement
multi1d< QuarkInfo_t > quark
2-quark operator structure
multi1d< TwoQuarkOp_t > ops