18 multi2d< multi2d<LatticeComplex> >
unpackQuark(
const LatticePropagator& quark_propagator)
20 multi2d< multi2d<LatticeComplex> > qc(Ns,Ns);
22 for(
int scol=0; scol < Ns; ++scol)
24 for(
int srow=0; srow < Ns; ++srow)
26 LatticeColorMatrix color_mat = peekSpin(quark_propagator,
29 qc(srow,scol).resize(Nc,Nc);
31 for(
int ccol=0; ccol < Nc; ++ccol)
32 for(
int crow=0; crow < Nc; ++crow)
34 qc(srow,scol)(crow,ccol) = peekColor(color_mat,
59 const LatticePropagator& quark_propagator_1,
60 const LatticePropagator& quark_propagator_2)
66 multi2d< multi2d<LatticeComplex> > qc_1(
unpackQuark(quark_propagator_1));
67 multi2d< multi2d<LatticeComplex> > qc_2(
unpackQuark(quark_propagator_2));
70 multi1d<int> ranks(6);
75 diquark.
comp.resize(ranks);
77 for(ranks[0]=0; ranks[0] < Ns; ++ranks[0])
78 for(ranks[1]=0; ranks[1] < Ns; ++ranks[1])
79 for(ranks[2]=0; ranks[2] < Ns; ++ranks[2])
80 for(ranks[3]=0; ranks[3] < Ns; ++ranks[3])
82 const multi2d<LatticeComplex>& q_1 = qc_1(ranks[3],ranks[1]);
83 const multi2d<LatticeComplex>& q_2 = qc_2(ranks[2],ranks[0]);
88 ranks[4] = 2; ranks[5] = 2;
89 diquark.
comp[ranks] = q_1(0,0)*q_2(1,1) - q_1(1,0)*q_2(0,1) - q_1(0,1)*q_2(1,0) + q_1(1,1)*q_2(0,0);
91 ranks[4] = 0; ranks[5] = 0;
92 diquark.
comp[ranks] = q_1(1,1)*q_2(2,2) - q_1(2,1)*q_2(1,2) - q_1(1,2)*q_2(2,1) + q_1(2,2)*q_2(1,1);
94 ranks[4] = 1; ranks[5] = 1;
95 diquark.
comp[ranks] = q_1(2,2)*q_2(0,0) - q_1(0,2)*q_2(2,0) - q_1(2,0)*q_2(0,2) + q_1(0,0)*q_2(2,2);
97 ranks[4] = 0; ranks[5] = 2;
98 diquark.
comp[ranks] = q_1(1,0)*q_2(2,1) - q_1(2,0)*q_2(1,1) - q_1(1,1)*q_2(2,0) + q_1(2,1)*q_2(1,0);
100 ranks[4] = 0; ranks[5] = 1;
101 diquark.
comp[ranks] = q_1(1,2)*q_2(2,0) - q_1(2,2)*q_2(1,0) - q_1(1,0)*q_2(2,2) + q_1(2,0)*q_2(1,2);
103 ranks[4] = 1; ranks[5] = 2;
104 diquark.
comp[ranks] = q_1(2,0)*q_2(0,1) - q_1(0,0)*q_2(2,1) - q_1(2,1)*q_2(0,0) + q_1(0,1)*q_2(2,0);
106 ranks[4] = 1; ranks[5] = 0;
107 diquark.
comp[ranks] = q_1(2,1)*q_2(0,2) - q_1(0,1)*q_2(2,2) - q_1(2,2)*q_2(0,1) + q_1(0,2)*q_2(2,1);
109 ranks[4] = 2; ranks[5] = 0;
110 diquark.
comp[ranks] = q_1(0,1)*q_2(1,2) - q_1(1,1)*q_2(0,2) - q_1(0,2)*q_2(1,1) + q_1(1,2)*q_2(0,1);
112 ranks[4] = 2; ranks[5] = 1;
113 diquark.
comp[ranks] = q_1(0,2)*q_2(1,0) - q_1(1,2)*q_2(0,0) - q_1(0,0)*q_2(1,2) + q_1(1,0)*q_2(0,2);
Construct a diquark object.
void QQDiquark(QQDiquarkContract_t &diquark, const LatticePropagator &quark_propagator_1, const LatticePropagator &quark_propagator_2)
Construct a QQ diquark object.
multi2d< multi2d< LatticeComplex > > unpackQuark(const LatticePropagator &quark_propagator)
Unpack a quark.
Asqtad Staggered-Dirac operator.
multiNd< LatticeComplex > comp