9 multi1d<LatticeColorMatrix> & ds_u,
11 const LatticeFermion&
psi)
17 Real prefactor = Real(1)/(4*(Real(
Nd) +
Mass));
19 LatticeColorMatrix utmp_1=
zero;
21 LatticeFermion rho=
zero;
22 LatticeFermion sigma=
zero;;
24 LatticeFermion ftmp_2;
32 const multi1d<LatticeColorMatrix>&
u =
state->getLinks();
48 ftmp_2[rb[1]] = Gamma(1<<
mu) *
psi;
54 utmp_1[rb[0]] = -traceSpin( outerProduct( shift(ftmp_2,
FORWARD,
mu), sigma) );
58 ftmp_2[rb[1]] = Gamma(1<<
mu) *
phi;
62 utmp_1[rb[0]] += traceSpin( outerProduct( shift(ftmp_2,
FORWARD,
mu), rho) );
67 ds_u[
mu][rb[0]] = prefactor *
u[
mu] * utmp_1;
72 ftmp_2[rb[0]] = Gamma(1<<
mu)*rho;
76 utmp_1[rb[1]] = -traceSpin( outerProduct( shift(ftmp_2,
FORWARD,
mu),
phi) );
79 ftmp_2[rb[0]] = Gamma(1<<
mu)*sigma;
80 ftmp_2[rb[0]] += sigma;
83 utmp_1[rb[1]] += traceSpin( outerProduct( shift(ftmp_2,
FORWARD,
mu),
psi) );
84 ds_u[
mu][rb[1]] = prefactor *
u[
mu] * utmp_1;
92 multi1d<LatticeColorMatrix> & ds_u,
93 const LatticeFermion& X) {
105 M.deriv(ds_u, X, Y,
MINUS);
108 multi1d<LatticeColorMatrix> F_tmp(
Nd);
110 M.deriv(F_tmp, Y, X,
PLUS);
115 ds_u[
mu] += F_tmp[
mu];
116 ds_u[
mu] *= Real(-1);
124 int main(
int argc,
char *argv[])
130 const int nrow_arr[] = {2, 2, 2, 2};
131 multi1d<int> nrow(
Nd);
133 Layout::setLattSize(nrow);
137 multi1d<LatticeColorMatrix>
u(
Nd);
140 XMLReader config_xml;
146 XMLFileWriter xml_out(
"./XMLDAT");
147 push(xml_out,
"t_prec_wilson_force");
149 multi1d<LatticeColorMatrix>
p(
Nd);
150 multi1d<LatticeFermion>
phi(1);
155 Real betaMC = Real(5.7);
158 multi1d<int> boundary(
Nd);
173 multi1d<LatticeColorMatrix> dsdu_1(
Nd);
174 multi1d<LatticeColorMatrix> dsdu_2(
Nd);
197 push(xml_out,
"dsdu");
198 write(xml_out,
"dsdu_1", dsdu_1[
mu]);
199 write(xml_out,
"dsdu_2", dsdu_2[
mu]);
202 LatticeColorMatrix dsdu_diff=dsdu_1[
mu] - dsdu_2[
mu];
204 Double sum_diff=norm2(dsdu_diff);
205 QDPIO::cout <<
"Mu = " <<
mu <<
" Sum Diff=" << sum_diff << std::endl;
207 push(xml_out,
"ForceDiff");
209 write(xml_out,
"dsdu_diff", dsdu_diff);
Primary include file for CHROMA in application codes.
Even-odd preconditioned linear operator.
Even-odd preconditioned Wilson fermion action.
EvenOddPrecConstDetLinearOperator< T, P, Q > * linOp(Handle< FermState< T, P, Q > > state) const
Produce a linear operator for this action.
virtual FermState< T, P, Q > * createState(const Q &q) const
Given links (coordinates Q) create the state needed for the linear operators.
Class for counted reference semantics.
General Wilson-Dirac dslash.
Concrete class for all gauge actions with simple boundary conditions.
void write(XMLWriter &xml, const std::string &path, const AsqtadFermActParams ¶m)
Writer parameters.
void taproj(LatticeColorMatrix &a)
Take the traceless antihermitian projection of a color matrix.
void gaugeStartup(XMLReader &gauge_file_xml, XMLReader &gauge_xml, multi1d< LatticeColorMatrix > &u, Cfg_t &cfg)
Initialize the gauge fields.
void apply(T &chi, const T &psi, enum PlusMinus isign, int cb) const
General Wilson-Dirac dslash.
Asqtad Staggered-Dirac operator.
static multi1d< LatticeColorMatrix > u
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > const multi1d< Real > & Mass
push(xml_out,"Condensates")
void initialize(int *argc, char ***argv)
Chroma initialisation routine.
void finalize(void)
Chroma finalization routine.
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
FloatingPoint< double > Double
Gauge configuration structure.
int main(int argc, char *argv[])
void funky_new_dsdu(const EvenOddPrecLinearOperator< LatticeFermion, multi1d< LatticeColorMatrix > > &M, multi1d< LatticeColorMatrix > &ds_u, const LatticeFermion &X)
void prec_wilson_dsdu(const EvenOddPrecWilsonFermAct &S, const Real &Mass, multi1d< LatticeColorMatrix > &ds_u, Handle< const ConnectState > state, const LatticeFermion &psi)