17 multi1d<ComplexF> barprop_1d(
corrs.size()*(3 +
length));
26 barprop_1d[cnt++] = cmplx(Real(
sp.source[0]), Real(
sp.source[1]));
27 barprop_1d[cnt++] = cmplx(Real(
sp.source[2]), Real(
sp.sink[0]));
28 barprop_1d[cnt++] = cmplx(Real(
sp.sink[1]), Real(
sp.sink[2]));
32 barprop_1d[cnt++] = elem.
corr[
t];
36 if (cnt != barprop_1d.size())
38 QDPIO::cerr <<
"Size mismatch in QQQSparse_t serialization" << std::endl;
67 const LatticePropagator& quark_propagator_1,
68 const LatticePropagator& quark_propagator_2,
69 const LatticePropagator& quark_propagator_3,
70 const multi1d<QQQSpinIndices_t> spin_indices,
76 QDPIO::cerr<<
" code only works for Nc=3 and Ns=4\n";
87 barprop.
corrs.resize(spin_indices.size());
90 multi1d<DComplex> hsum;
91 LatticeComplex b_prop;
94 for(
int i=0;
i < spin_indices.size(); ++
i)
97 barprop.
corrs[
i].source_sink =
d;
101 colorContract(peekSpin(quark_propagator_1,
102 d.source[0],
d.sink[0]),
103 peekSpin(quark_propagator_2,
104 d.source[1],
d.sink[1]),
105 peekSpin(quark_propagator_3,
106 d.source[2],
d.sink[2]));
109 hsum = sumMulti(b_prop, phases.
getSet());
111 barprop.
corrs[
i].corr.resize(length);
112 for(
int t=0;
t < length; ++
t)
114 int t_eff = (
t -
t0 + length) % length;
115 barprop.
corrs[
i].corr[
t] = (
bc_spec < 0 && (t_eff+
t0) >= length) ? -hsum[
t] : hsum[
t];
128 multi1d<int> ranks(7);
130 multi1d<ComplexF> barprop_1d(
length*Ns*Ns*Ns*Ns*Ns*Ns);
133 for(ranks[0]=0; ranks[0] < Ns; ++ranks[0])
134 for(ranks[1]=0; ranks[1] < Ns; ++ranks[1])
135 for(ranks[2]=0; ranks[2] < Ns; ++ranks[2])
136 for(ranks[3]=0; ranks[3] < Ns; ++ranks[3])
137 for(ranks[4]=0; ranks[4] < Ns; ++ranks[4])
138 for(ranks[5]=0; ranks[5] < Ns; ++ranks[5])
139 for(ranks[6] = 0; ranks[6] <
length; ++ranks[6])
141 barprop_1d[cnt++] =
corrs[ranks];
168 const LatticePropagator& quark_propagator_1,
169 const LatticePropagator& quark_propagator_2,
170 const LatticePropagator& quark_propagator_3,
176 QDPIO::cerr<<
"barcomp code only works for Nc=3 and Ns=4\n";
185 multi1d<int> ranks(7);
190 barprop.
corrs.resize(ranks);
193 multi1d<DComplex> hsum;
194 LatticeComplex b_prop;
196 for(ranks[0]=0; ranks[0] < Ns; ++ranks[0])
197 for(ranks[1]=0; ranks[1] < Ns; ++ranks[1])
198 for(ranks[2]=0; ranks[2] < Ns; ++ranks[2])
199 for(ranks[3]=0; ranks[3] < Ns; ++ranks[3])
200 for(ranks[4]=0; ranks[4] < Ns; ++ranks[4])
201 for(ranks[5]=0; ranks[5] < Ns; ++ranks[5])
205 colorContract(peekSpin(quark_propagator_1,
207 peekSpin(quark_propagator_2,
209 peekSpin(quark_propagator_3,
213 hsum = sumMulti(b_prop, phases.
getSet());
215 for(ranks[6] = 0; ranks[6] < length; ++ranks[6])
217 int t_eff = (ranks[6] -
t0 + length) % length;
219 barprop.
corrs[ranks] =
220 (
bc_spec < 0 && (t_eff+
t0) >= length) ? -hsum[ranks[6]] :
Construct all components of a baryon propagator.
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.
void barcomp(QQQDense_t &barprop, const LatticePropagator &quark_propagator_1, const LatticePropagator &quark_propagator_2, const LatticePropagator &quark_propagator_3, const SftMom &phases, int t0, int bc_spec)
Construct all components of a baryon propagator.
void barcompSparse(QQQSparse_t &barprop, const LatticePropagator &quark_propagator_1, const LatticePropagator &quark_propagator_2, const LatticePropagator &quark_propagator_3, const multi1d< QQQSpinIndices_t > spin_indices, const SftMom &phases, int t0, int bc_spec)
Construct all components of a baryon propagator.
Asqtad Staggered-Dirac operator.
multi1d< LatticeFermion > s(Ncb)
multi1d< ComplexF > serialize()
Serialize generalized object.
QQQSpinIndices_t source_sink
multi1d< QQQElem_t > corrs
multi1d< ComplexF > serialize()
Serialize generalized object.
Hold source and sink spin indices for a sparse QQQ file.