22 multi1d<LatticeColorMatrix> & ds_u,
24 const LatticeFermion&
psi)
30 Real prefactor = Real(1)/(4*(Real(
Nd) +
Mass));
32 LatticeColorMatrix utmp_1=
zero;
34 LatticeFermion rho=
zero;
35 LatticeFermion sigma=
zero;;
37 LatticeFermion ftmp_2;
45 const multi1d<LatticeColorMatrix>&
u =
state->getLinks();
61 ftmp_2[rb[1]] = Gamma(1<<
mu) *
psi;
67 utmp_1[rb[0]] = -traceSpin( outerProduct( shift(ftmp_2,
FORWARD,
mu), sigma) );
71 ftmp_2[rb[1]] = Gamma(1<<
mu) *
phi;
75 utmp_1[rb[0]] += traceSpin( outerProduct( shift(ftmp_2,
FORWARD,
mu), rho) );
80 ds_u[
mu][rb[0]] = prefactor *
u[
mu] * utmp_1;
85 ftmp_2[rb[0]] = Gamma(1<<
mu)*rho;
89 utmp_1[rb[1]] = -traceSpin( outerProduct( shift(ftmp_2,
FORWARD,
mu),
phi) );
92 ftmp_2[rb[0]] = Gamma(1<<
mu)*sigma;
93 ftmp_2[rb[0]] += sigma;
96 utmp_1[rb[1]] += traceSpin( outerProduct( shift(ftmp_2,
FORWARD,
mu),
psi) );
97 ds_u[
mu][rb[1]] = prefactor *
u[
mu] * utmp_1;
102 int main(
int argc,
char *argv[])
108 const int nrow_arr[] = {2, 2, 2, 2};
109 multi1d<int> nrow(
Nd);
111 Layout::setLattSize(nrow);
115 multi1d<LatticeColorMatrix>
u(
Nd);
118 XMLReader config_xml;
126 push(xml_out,
"t_monomial");
132 multi1d<LatticeColorMatrix> > >
138 XMLReader paramtop(param_in,
"/MonomialTest");
141 read(paramtop,
"Monomial", S_w);
144 QDPIO::cerr <<
"Error reading XML" << std::endl;
150 multi1d<LatticeColorMatrix>
p(
Nd);
159 S_w->refreshInternalFields(gauge_state);
162 multi1d<LatticeColorMatrix> dsdq(
Nd);
163 S_w->dsdq(dsdq, gauge_state);
166 Double monomial_S = S_w->S(gauge_state);
167 QDPIO::cout <<
"monomial_S = " << monomial_S << std::endl;
171 EvenOddPrecTwoFlavorWilsonFermMonomial& S_down =
dynamic_cast<EvenOddPrecTwoFlavorWilsonFermMonomial&
>(*S_w);
174 const LatticeFermion&
phi = S_down.debugGetPhi();
176 LatticeFermion X=
zero;
178 S_down.debugGetX(X, gauge_state);
193 Double my_S = innerProductReal(
phi,X, M->subset());
194 QDPIO::cout <<
"My S = " << my_S << std::endl;
197 multi1d<LatticeColorMatrix> dsdq2(
Nd);
207 push(xml_out,
"dsdu");
208 write(xml_out,
"dsdu_1", dsdq[
mu]);
209 write(xml_out,
"dsdu_2", dsdq2[
mu]);
212 LatticeColorMatrix dsdu_diff=dsdq[
mu] - dsdq2[
mu];
214 Double sum_diff=norm2(dsdu_diff);
215 QDPIO::cout <<
"Mu = " <<
mu <<
" Sum Diff=" << sum_diff << std::endl;
217 push(xml_out,
"ForceDiff");
219 write(xml_out,
"dsdu_diff", dsdu_diff);
Primary include file for CHROMA in application codes.
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.
const multi1d< LatticeColorMatrix > & getQ(void) const
Class for counted reference semantics.
General Wilson-Dirac dslash.
void read(XMLReader &xml, const std::string &path, AsqtadFermActParams ¶m)
Read parameters.
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.
bool registerAll()
Register all the factories.
bool registerAll()
Register all the factories.
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.
std::string getXMLInputFileName()
Get input file name.
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
XMLFileWriter & getXMLOutputInstance()
Get xml output instance.
const WilsonTypeFermAct< multi1d< LatticeFermion > > & S_f
FloatingPoint< double > Double
Gauge configuration structure.
bool linkage_hack()
To insure linking of code, place the registered code flags here.
int main(int argc, char *argv[])
void prec_wilson_dsdu(const EvenOddPrecWilsonFermAct &S, const Real &Mass, multi1d< LatticeColorMatrix > &ds_u, Handle< const ConnectState > state, const LatticeFermion &psi)
Old dsdu routine.