45 void QlQlPOT(
const multi1d<LatticeColorMatrix>&
u,
46 const LatticePropagator& quark1,
47 const LatticePropagator& quark2,
48 const multi1d<int>& src1,
49 const multi1d<int>& src2,
59 if (src1[
Nd-1] != src2[
Nd-1] ){
60 QDPIO::cerr<<
"Sources must be at the same time slice\n";
65 int num_mom = phases.
numMom();
67 LatticeColorMatrix Qprop1;
68 LatticeColorMatrix Qprop2;
74 LatticeComplex Hq1u , Hq2u ,Hq1d , Hq2d ;
79 SpinMatrix g_one = 1.0;
80 SpinMatrix S_proj_up =
81 0.5*((g_one + Gamma(8) * g_one) - timesI(Gamma(3) * g_one + Gamma(11) * g_one));
82 SpinMatrix S_proj_down =
83 0.5*((g_one + Gamma(8) * g_one) + timesI(Gamma(3) * g_one + Gamma(11) * g_one));
84 SpinMatrix S_proj_unpol =
85 0.5*((g_one + Gamma(8) * g_one));
87 SpinMatrix cg5 = g_one * Gamma(5);
90 SpinMatrix spinsinglet = g_one*S_proj_unpol*Gamma(5);
91 SpinMatrix STspinsinglet =
transpose(spinsinglet);
96 Hq1u = trace(Qprop1 * S_proj_up * adj(quark1) ) ;
97 Hq2u = trace(Qprop2 * S_proj_up * adj(quark2) ) ;
98 Hq1d = trace(Qprop1 * S_proj_down * adj(quark1) ) ;
99 Hq2d = trace(Qprop2 * S_proj_down * adj(quark2) ) ;
102 multi2d<DComplex> hsumHq1u , hsumHq2u , hsumHq1d , hsumHq2d ;
103 hsumHq1u = phases.
sft(Hq1u);
104 hsumHq2u = phases.
sft(Hq2u);
105 hsumHq1d = phases.
sft(Hq1d);
106 hsumHq2d = phases.
sft(Hq2d);
109 multi2d<DComplex> Hq1uprop(num_mom,length) , Hq2uprop(num_mom,length) , Hq1dprop(num_mom,length) , Hq2dprop(num_mom,length) ;
110 multi2d<DComplex> Hq1prop(num_mom,length) , Hq2prop(num_mom,length) ;
111 for(
int sink_mom_num=0; sink_mom_num < num_mom; ++sink_mom_num)
112 for(
int t = 0;
t < length; ++
t)
114 int t_eff = (
t - src1[
Nd-1] + length) % length;
115 Hq1uprop[sink_mom_num][t_eff] = hsumHq1u[sink_mom_num][
t];
116 Hq2uprop[sink_mom_num][t_eff] = hsumHq2u[sink_mom_num][
t];
117 Hq1dprop[sink_mom_num][t_eff] = hsumHq1d[sink_mom_num][
t];
118 Hq2dprop[sink_mom_num][t_eff] = hsumHq2d[sink_mom_num][
t];
119 Hq1prop[sink_mom_num][t_eff] = 0.5000000000 * (hsumHq1u[sink_mom_num][
t] + hsumHq1d[sink_mom_num][
t]);
120 Hq2prop[sink_mom_num][t_eff] = 0.5000000000 * (hsumHq2u[sink_mom_num][
t] + hsumHq2d[sink_mom_num][
t]);
123 QDPIO::cerr<<
"Done with single meson correlators \n";
129 LatticePropagator
tmp , AdjQuark2Qprop2 ;
130 tmp = adj(quark2)*Qprop2 ;
132 for (
int d(0);
d<
Nd-1;
d++){
133 int r = src2[
d] - src1[
d] ;
136 tmp = AdjQuark2Qprop2 ;
141 tmp = AdjQuark2Qprop2 ;
145 QDPIO::cerr<<
" Done shifting q2 Q2\n";
147 LatticePropagator tmp1,AdjQuark1Qprop2 ;
148 tmp1 = adj(quark1)*Qprop2 ;
149 AdjQuark1Qprop2=tmp1;
150 for (
int d(0);
d<
Nd-1;
d++){
151 int r = src2[
d] - src1[
d] ;
153 AdjQuark1Qprop2 = shift(tmp1,
FORWARD,
d);
154 tmp1 = AdjQuark1Qprop2 ;
158 AdjQuark1Qprop2 = shift(tmp1,
BACKWARD,
d);
159 tmp1 = AdjQuark1Qprop2 ;
163 QDPIO::cerr<<
" Done shifting q1 Q2\n";
169 LatticeComplex A1S1Sp1 , A1S1Sm1 , A2S1Sp1 , A2S1Sm1;
170 A1S1Sp1 = trace(S_proj_up * Qprop1 * adj(quark1)) * trace(S_proj_up * AdjQuark2Qprop2 );
171 A1S1Sm1 = trace(S_proj_down * Qprop1 * adj(quark1)) * trace(S_proj_down * AdjQuark2Qprop2 );
173 A2S1Sp1 = -trace(Qprop1 * AdjQuark1Qprop2 * S_proj_up* adj(quark2) * S_proj_up );
174 A2S1Sm1 = -trace(Qprop1 * AdjQuark1Qprop2 * S_proj_down * adj(quark2) * S_proj_down );
177 multi2d<DComplex> hsumA1S1Sp1 , hsumA2S1Sp1 , hsumA1S1Sm1 , hsumA2S1Sm1 ;
178 hsumA1S1Sp1 = phases.
sft(A1S1Sp1);
179 hsumA1S1Sm1 = phases.
sft(A1S1Sm1);
180 hsumA2S1Sp1 = phases.
sft(A2S1Sp1);
181 hsumA2S1Sm1 = phases.
sft(A2S1Sm1);
184 multi2d<DComplex> A1S1Sp1prop(num_mom,length) , A1S1Sm1prop(num_mom,length) , A2S1Sp1prop(num_mom,length) , A2S1Sm1prop(num_mom,length);
185 multi2d<DComplex> I1S1prop(num_mom,length) , I0S1prop(num_mom,length);
187 for(
int sink_mom_num=0; sink_mom_num < num_mom; ++sink_mom_num)
188 for(
int t = 0;
t < length; ++
t)
190 int t_eff = (
t - src1[
Nd-1] + length) % length;
191 A1S1Sp1prop[sink_mom_num][t_eff] = hsumA1S1Sp1[sink_mom_num][
t];
192 A1S1Sm1prop[sink_mom_num][t_eff] = hsumA1S1Sm1[sink_mom_num][
t];
193 A2S1Sp1prop[sink_mom_num][t_eff] = hsumA2S1Sp1[sink_mom_num][
t];
194 A2S1Sm1prop[sink_mom_num][t_eff] = hsumA2S1Sm1[sink_mom_num][
t];
195 I1S1prop[sink_mom_num][t_eff] = 0.50000000000000 * ( hsumA1S1Sp1[sink_mom_num][
t] + hsumA1S1Sm1[sink_mom_num][
t]
196 + hsumA2S1Sp1[sink_mom_num][
t] + hsumA2S1Sm1[sink_mom_num][
t] );
197 I0S1prop[sink_mom_num][t_eff] = 0.50000000000000 * ( hsumA1S1Sp1[sink_mom_num][
t] + hsumA1S1Sm1[sink_mom_num][
t]
198 - hsumA2S1Sp1[sink_mom_num][
t] - hsumA2S1Sm1[sink_mom_num][
t] );
200 QDPIO::cerr<<
" Done with S=1 correlators\n";
205 LatticeComplex A1S0 , A2S0;
208 LatticePropagator STL2Q2 , STL2 , adjL2;
213 A1S0 = trace( traceColor(adj(quark1) * Qprop1) * spinsinglet * traceColor(STL2Q2) * STspinsinglet );
214 A2S0 = -trace( AdjQuark1Qprop2 * spinsinglet * STL2 * Qprop1 * spinsinglet );
217 multi2d<DComplex> hsumA1S0 , hsumA2S0;
218 hsumA1S0 = phases.
sft(A1S0);
219 hsumA2S0 = phases.
sft(A2S0);
222 multi2d<DComplex> A1S0prop(num_mom,length) , A2S0prop(num_mom,length) ;
223 multi2d<DComplex> I1S0prop(num_mom,length) , I0S0prop(num_mom,length);
225 for(
int sink_mom_num=0; sink_mom_num < num_mom; ++sink_mom_num)
226 for(
int t = 0;
t < length; ++
t)
228 int t_eff = (
t - src1[
Nd-1] + length) % length;
229 A1S0prop[sink_mom_num][t_eff] = hsumA1S0[sink_mom_num][
t];
230 A2S0prop[sink_mom_num][t_eff] = hsumA2S0[sink_mom_num][
t];
231 I1S0prop[sink_mom_num][t_eff] = hsumA1S0[sink_mom_num][
t] + hsumA2S0[sink_mom_num][
t] ;
232 I0S0prop[sink_mom_num][t_eff] = hsumA1S0[sink_mom_num][
t] - hsumA2S0[sink_mom_num][
t] ;
234 QDPIO::cerr<<
" Done with S=0 correlators\n";
240 push(xml, xml_group);
241 write(xml,
"Meson1U", Hq1uprop[0]);
242 write(xml,
"Meson1D", Hq1dprop[0]);
243 write(xml,
"Meson2U", Hq2uprop[0]);
244 write(xml,
"Meson2D", Hq2dprop[0]);
245 write(xml,
"Meson1", Hq1prop[0]);
246 write(xml,
"Meson2", Hq2prop[0]);
247 write(xml,
"A1S1Sp1", A1S1Sp1prop[0] );
248 write(xml,
"A1S1Sm1", A1S1Sm1prop[0] );
249 write(xml,
"A2S1Sp1", A2S1Sp1prop[0] );
250 write(xml,
"A2S1Sm1", A2S1Sm1prop[0] );
251 write(xml,
"A1S0", A1S0prop[0] );
252 write(xml,
"A2S0", A2S0prop[0] );
253 write(xml,
"I1S1", I1S1prop[0] );
254 write(xml,
"I0S1", I0S1prop[0] );
255 write(xml,
"I1S0", I1S0prop[0] );
256 write(xml,
"I0S0", I0S0prop[0] );
278 for(
int j = 0;
j < Ns; ++
j){
279 for(
int i = 0;
i < Ns; ++
i){
280 pokeSpin(STprop, peekSpin(
prop,
i,
j),
j,
i);
Heavy Baryon (Qll) 2-pt function : Orginos and Savage.
Fourier transform phase factor support.
int numSubsets() const
Number of subsets - length in decay direction.
multi2d< DComplex > sft(const LatticeComplex &cf) const
Do a sumMulti(cf*phases,getSet())
int numMom() const
Number of momenta.
void write(XMLWriter &xml, const std::string &path, const AsqtadFermActParams ¶m)
Writer parameters.
void SpinTranspose(const LatticePropagator &prop, LatticePropagator &STprop)
Spin Transpose Function.
void QlQlPOT(const multi1d< LatticeColorMatrix > &u, const LatticePropagator &quark1, const LatticePropagator &quark2, const multi1d< int > &src1, const multi1d< int > &src2, const SftMom &phases, XMLWriter &xml, const std::string &xml_group)
Heavy-light meson potential.
void HeavyQuarkProp(LatticeColorMatrix &Qprop, const multi1d< LatticeColorMatrix > &u, const multi1d< int > &src_coord, int length, int bc)
Heavy Quark Propagator.
std::map< std::string, SinkPropContainer_t > prop
Potential between 2 heavy mesons : Orginos and Savage.
Heavy light meson (Qlbar) 2-pt function : Orginos and Savage.
Asqtad Staggered-Dirac operator.
static multi1d< LatticeColorMatrix > u
void transpose(multi2d< LatticeColorVector > &dist_rep, const multi2d< LatticeColorVector > &prop_rep)
Take transpose of a matrix in (explicit) spin space.
push(xml_out,"Condensates")