CHROMA
plaq_gaugeact.cc
Go to the documentation of this file.
1 /*! \file
2  * \brief Plaquette gauge action
3  */
4 
5 #include "chromabase.h"
10 #include "meas/glue/mesplq.h"
11 
12 
13 namespace Chroma
14 {
15 
16  namespace PlaqGaugeActEnv
17  {
19  multi1d<LatticeColorMatrix> >* createGaugeAct(XMLReader& xml,
20  const std::string& path)
21  {
22  return new PlaqGaugeAct(CreateGaugeStateEnv::reader(xml, path),
23  PlaqGaugeActParams(xml, path));
24  }
25 
26  const std::string name = "PLAQ_GAUGEACT";
27 
28  //! Local registration flag
29  static bool registered = false;
30 
31  //! Register all the factories
32  bool registerAll()
33  {
34  bool success = true;
35  if (! registered)
36  {
37  success &= TheGaugeActFactory::Instance().registerObject(name, createGaugeAct);
38  registered = true;
39  }
40  return success;
41  }
42  }
43 
44 
45  PlaqGaugeActParams::PlaqGaugeActParams(XMLReader& xml_in, const std::string& path)
46  {
47  XMLReader paramtop(xml_in, path);
48 
49  try
50  {
51  // Want a multi2d read here, but this is not supported currently in chroma.
52  // I'll go ahead and hack by reading Nd rows or columns. Yuk, because I
53  // doubt anybody will use this part of the code.
54  coeffs.resize(Nd,Nd);
55 
56  XMLReader coefftop(paramtop, "coeffs");
57  for(int i=0; i < Nd; ++i)
58  {
59  std::ostringstream os;
60  os << "elem[" << i+1 << "]";
61 
62  multi1d<Real> cc;
63  read(coefftop, os.str(), cc);
64  coeffs[i] = cc;
65  }
66 
67 // read(paramtop, "coeffs", coeffs);
68  }
69  catch( const std::string& e ) {
70  QDPIO::cerr << "Error reading XML: " << e << std::endl;
71  QDP_abort(1);
72  }
73  }
74 
75 
76  void read(XMLReader& xml, const std::string& path, PlaqGaugeActParams& p)
77  {
78  PlaqGaugeActParams tmp(xml, path);
79  p=tmp;
80  }
81 
82 
83 // A multi2d xml write doesn't exist at this moment.
84 // void write(XMLWriter& xml, const std::string& path, const PlaqGaugeActParams& p)
85 // {
86 // push(xml, path);
87 // write(xml, "coeffs", p.coeffs);
88 // pop(xml);
89 // }
90 
91 
92  // Internal initializer
93  void PlaqGaugeAct::init(const Real& coeff, const AnisoParam_t& aniso)
94  {
95  START_CODE();
96 
97  param.coeffs.resize(Nd,Nd);
98  param.coeffs = zero;
99 
100  int t_dir;
101  Real coeff_t = coeff;
102  Real coeff_s = coeff;
103 
104  if (aniso.anisoP)
105  {
106  t_dir = aniso.t_dir;
107  coeff_t *= aniso.xi_0;
108  coeff_s /= aniso.xi_0;
109  }
110  else
111  {
112  t_dir = -1;
113  }
114 
115  for(int mu = 0; mu < Nd; ++mu)
116  {
117  for(int nu = mu+1; nu < Nd; ++nu)
118  {
119  if( mu == t_dir || nu == t_dir )
120  {
121  // Temporal Plaquette in either mu or nu direction
122  param.coeffs[mu][nu] = coeff_t;
123  }
124  else {
125  // Spatial Plaquette
126  param.coeffs[mu][nu] = coeff_s;
127  }
128 
129  param.coeffs[nu][mu] = param.coeffs[mu][nu];
130  }
131  }
132 
133  END_CODE();
134  }
135 
136 
137  // Internal initializer
138  void PlaqGaugeAct::init(const Real& coeff_s,
139  const Real& coeff_t,
140  const AnisoParam_t& aniso)
141  {
142  START_CODE();
143 
144  param.coeffs.resize(Nd,Nd);
145  param.coeffs = zero;
146 
147  int t_dir = (aniso.anisoP) ? aniso.t_dir : -1;
148 
149  for(int mu = 0; mu < Nd; ++mu)
150  {
151  for(int nu = mu+1; nu < Nd; ++nu)
152  {
153  if( mu == t_dir || nu == t_dir )
154  {
155  // Temporal Plaquette in either mu or nu direction
156  param.coeffs[mu][nu] = coeff_t;
157  if( aniso.anisoP ) {
158  param.coeffs[mu][nu] *= aniso.xi_0;
159  }
160 
161  }
162  else {
163  // Spatial Plaquette
164  param.coeffs[mu][nu] = coeff_s;
165  if( aniso.anisoP ) {
166  param.coeffs[mu][nu] /= aniso.xi_0;
167  }
168  }
169 
170  param.coeffs[nu][mu] = param.coeffs[mu][nu];
171  }
172  }
173 
174  END_CODE();
175  }
176 
177 
178  //! Compute staple
179  /*!
180  * \param u_mu_staple result ( Write )
181  * \param state gauge field ( Read )
182  * \param mu direction for staple ( Read )
183  * \param cb subset on which to compute ( Read )
184  */
185  void
186  PlaqGaugeAct::staple(LatticeColorMatrix& u_mu_staple,
187  const Handle< GaugeState<P,Q> >& state,
188  int mu, int cb) const
189  {
190  START_CODE();
191 
192  const multi1d<LatticeColorMatrix>& u = state->getLinks();
193 
194  u_mu_staple = zero;
195  LatticeColorMatrix tmp1, tmp2;
196  LatticeColorMatrix u_nu_mu;
197 
198  for(int nu=0; nu < Nd; ++nu)
199  {
200  if( nu == mu ) continue;
201 
202  u_nu_mu = shift(u[nu],FORWARD,mu);
203 
204  // +forward staple
205  tmp1[rb[cb]] = u_nu_mu * adj(shift(u[mu],FORWARD,nu));
206  tmp2[rb[cb]] = tmp1 * adj(u[nu]);
207 
208  u_mu_staple[rb[cb]] += param.coeffs[mu][nu] * tmp2;
209 
210  // +backward staple
211  tmp1[rb[cb]] = adj(shift(u_nu_mu,BACKWARD,nu)) * adj(shift(u[mu],BACKWARD,nu));
212  tmp2[rb[cb]] = tmp1 * shift(u[nu],BACKWARD,nu);
213 
214  u_mu_staple[rb[cb]] += param.coeffs[mu][nu] * tmp2;
215  }
216 
217  // NOTE: a heatbath code should be responsible for resetting links on
218  // a boundary. The staple is not really the correct place.
219 
220  END_CODE();
221  }
222 
223 
224  //! Compute staple
225  /*!
226  * \param u_mu_staple result ( Write )
227  * \param state gauge field ( Read )
228  * \param mu direction for staple ( Read )
229  * \param cb subset on which to compute ( Read )
230  */
231  void
232  PlaqGaugeAct::stapleSpatial(LatticeColorMatrix& u_mu_staple,
233  const Handle< GaugeState<P,Q> >& state,
234  int mu, int cb, int t_dir) const
235  {
236  START_CODE();
237 
238  u_mu_staple = zero;
239  if( mu == t_dir ) return; // Short circuit.
240 
241  const multi1d<LatticeColorMatrix>& u = state->getLinks();
242 
243  for(int nu=0; nu<Nd; nu++)
244  {
245  if( (nu != mu) && (nu != t_dir) )
246  {
247  // nu is spatial
248  // anisotropic lattice, time-like staple
249  // +forward staple
250  u_mu_staple[rb[cb]]+=
251  shift(u[nu],FORWARD,mu)*
252  shift(adj(u[mu]),FORWARD,nu)*adj(u[nu])*
253  param.coeffs[mu][nu];
254  // +backward staple
255  u_mu_staple[rb[cb]]+=
256  shift(shift(adj(u[nu]),FORWARD,mu),BACKWARD,nu)*
257  shift(adj(u[mu]),BACKWARD,nu)*
258  shift(u[nu],BACKWARD,nu)*
259  param.coeffs[mu][nu];
260  }
261  }
262 
263  END_CODE();
264  }
265 
266 
267  //! Compute staple
268  /*!
269  * \param u_mu_staple result ( Write )
270  * \param state gauge field ( Read )
271  * \param mu direction for staple ( Read )
272  * \param cb subset on which to compute ( Read )
273  */
274  void
275  PlaqGaugeAct::stapleTemporal(LatticeColorMatrix& u_mu_staple,
276  const Handle< GaugeState<P,Q> >& state,
277  int mu, int cb, int t_dir) const
278  {
279  START_CODE();
280 
281  // This bit of code was taken from chroma/lib/update/heatbath/u_staple.cc
282  // Supposedly it works.
283 
284  const multi1d<LatticeColorMatrix>& u = state->getLinks();
285  u_mu_staple = zero;
286 
287  for(int nu=0; nu<Nd; nu++)
288  {
289  bool doit_mu_is_time;
290  bool doit_nu_is_time;
291 
292  doit_mu_is_time = ( mu == t_dir ) && (nu != t_dir); // true for ts plaquettes
293  doit_nu_is_time = ( nu == t_dir ) && (mu != t_dir); // true for st plaquettes
294 
295  if( doit_mu_is_time || doit_nu_is_time )
296  {
297  // anisotropic lattice, time-like staple
298  // +forward staple
299  u_mu_staple[rb[cb]]+=
300  shift(u[nu],FORWARD,mu)*
301  shift(adj(u[mu]),FORWARD,nu)*adj(u[nu])*
302  param.coeffs[mu][nu];
303  // +backward staple
304  u_mu_staple[rb[cb]]+=
305  shift(shift(adj(u[nu]),FORWARD,mu),BACKWARD,nu)*
306  shift(adj(u[mu]),BACKWARD,nu)*
307  shift(u[nu],BACKWARD,nu)*
308  param.coeffs[mu][nu];
309  }
310  }
311 
312  END_CODE();
313  }
314 
315 
316 
317  //! Computes the derivative of the fermionic action respect to the link field
318  /*!
319  * | dS
320  * ds_u -- | ---- ( Write )
321  * | dU
322  *
323  * \param ds_u result ( Write )
324  * \param state gauge field ( Read )
325  */
326  void
327  PlaqGaugeAct::deriv(multi1d<LatticeColorMatrix>& ds_u,
328  const Handle< GaugeState<P,Q> >& state) const
329  {
330  START_CODE();
331 
332  ds_u.resize(Nd);
333 
334  LatticeColorMatrix tmp_0;
335  LatticeColorMatrix tmp_1;
336  LatticeColorMatrix tmp_2;
337 
338  const multi1d<LatticeColorMatrix>& u = state->getLinks();
339 
340  ds_u = zero;
341 
342  for(int mu = 0; mu < Nd; mu++)
343  {
344  for(int nu=mu+1; nu < Nd; nu++)
345  {
346  for(int cb=0; cb < 2; cb++)
347  {
348  tmp_0[rb[cb]] = shift(u[mu], FORWARD, nu)*shift(adj(u[nu]), FORWARD, mu);
349  tmp_0[rb[cb]] *= param.coeffs[mu][nu]; // c[mu][nu] = c[nu][mu]
350  tmp_1[rb[cb]] = tmp_0*adj(u[mu]);
351  tmp_2[rb[cb]] = u[nu]*tmp_1;
352  ds_u[nu][rb[cb]] += tmp_2;
353  ds_u[mu][rb[cb]] += adj(tmp_2);
354  ds_u[mu][rb[1-cb]] += shift(tmp_1, BACKWARD, nu)*shift(u[nu], BACKWARD, nu);
355  tmp_1[rb[cb]] = adj(u[nu])*u[mu];
356  ds_u[nu][rb[1-cb]] += shift(adj(tmp_0),BACKWARD,mu)*shift(tmp_1, BACKWARD, mu);
357  }
358  }
359 
360  // It is 1/(4Nc) to account for normalisation relevant to fermions
361  // in the taproj, which is a factor of 2 different from the
362  // one used here.
363  ds_u[mu] *= Real(-1)/(Real(2*Nc));
364  }
365 
366 #if 0
367  ds_u.resize(Nd);
368  ds_u =zero;
369 
370  const multi1d<LatticeColorMatrix>& u = state->getLinks();
371 
372  for(int mu=0; mu < Nd; mu++)
373  {
374  LatticeColorMatrix G;
375  G = zero;
376 
377  for(int nu = mu+1; nu < Nd; nu++)
378  {
379  LatticeColorMatrix up_staple;
380  LatticeColorMatrix down_staple;
381 
382  LatticeColorMatrix tmp_1;
383  LatticeColorMatrix tmp_2;
384 
385  tmp_1 = shift( u[nu], FORWARD, mu);
386  tmp_2 = shift( u[mu], FORWARD, nu);
387 
388  up_staple = tmp_1*adj(tmp_2)*adj(u[nu]);
389  down_staple = adj(tmp_1)*adj(u[mu])*u[nu];
390 
391  G += up_staple + shift(down_staple, BACKWARD, nu);
392  }
393 
394  ds_u[mu] = u[mu]*G;
395  }
396 
397  // Pure Gauge factor (-coeff/Nc and a factor of 2 because of the forward
398  // and backward staple of the force)
399  for(int mu=0; mu < Nd; mu++) {
400  ds_u[mu] *= Real(-param.coeff)/(Real(2*Nc));
401  }
402 #endif
403 
404  // Zero the force on any fixed boundaries
405  getGaugeBC().zero(ds_u);
406 
407  END_CODE();
408  }
409 
410 
411  //! compute spatial dS/dU given a time direction
412  void
413  PlaqGaugeAct::derivSpatial(multi1d<LatticeColorMatrix>& ds_u,
414  const Handle< GaugeState<P,Q> >& state,
415  int t_dir) const
416  {
417  START_CODE();
418 
419  ds_u.resize(Nd);
420 
421  LatticeColorMatrix tmp_0;
422  LatticeColorMatrix tmp_1;
423  LatticeColorMatrix tmp_2;
424 
425  const multi1d<LatticeColorMatrix>& u = state->getLinks();
426 
427  ds_u = zero;
428 
429  for(int mu = 0; mu < Nd; mu++)
430  {
431  for(int nu=mu+1; nu < Nd; nu++)
432  {
433  // Pick out spatial plaquettes only
434  if( (mu != t_dir) && (nu != t_dir) )
435  {
436  for(int cb=0; cb < 2; cb++)
437  {
438  tmp_0[rb[cb]] = shift(u[mu], FORWARD, nu)*shift(adj(u[nu]), FORWARD, mu);
439  tmp_0[rb[cb]] *= param.coeffs[mu][nu]; // c[mu][nu] = c[nu][mu]
440  tmp_1[rb[cb]] = tmp_0*adj(u[mu]);
441  tmp_2[rb[cb]] = u[nu]*tmp_1;
442  ds_u[nu][rb[cb]] += tmp_2;
443  ds_u[mu][rb[cb]] += adj(tmp_2);
444  ds_u[mu][rb[1-cb]] += shift(tmp_1, BACKWARD, nu)*shift(u[nu], BACKWARD, nu);
445  tmp_1[rb[cb]] = adj(u[nu])*u[mu];
446  ds_u[nu][rb[1-cb]] += shift(adj(tmp_0),BACKWARD,mu)*shift(tmp_1, BACKWARD, mu);
447  }
448  }
449  }
450 
451  // It is 1/(4Nc) to account for normalisation relevant to fermions
452  // in the taproj, which is a factor of 2 different from the
453  // one used here.
454  ds_u[mu] *= Real(-1)/(Real(2*Nc));
455 
456  }
457 
458  // Zero the force on any fixed boundaries
459  getGaugeBC().zero(ds_u);
460 
461  END_CODE();
462 
463  }
464 
465  //! compute spatial dS/dU given a time direction
466  void
467  PlaqGaugeAct::derivTemporal(multi1d<LatticeColorMatrix>& ds_u,
468  const Handle< GaugeState<P,Q> >& state,
469  int t_dir) const
470  {
471  START_CODE();
472 
473  ds_u.resize(Nd);
474 
475  LatticeColorMatrix tmp_0;
476  LatticeColorMatrix tmp_1;
477  LatticeColorMatrix tmp_2;
478 
479  const multi1d<LatticeColorMatrix>& u = state->getLinks();
480 
481  ds_u = zero;
482 
483  for(int mu = 0; mu < Nd; mu++)
484  {
485  for(int nu=mu+1; nu < Nd; nu++)
486  {
487  // Pick out temporal plaquettes only
488  if( (mu == t_dir) || (nu == t_dir) )
489  {
490  for(int cb=0; cb < 2; cb++)
491  {
492  tmp_0[rb[cb]] = shift(u[mu], FORWARD, nu)*shift(adj(u[nu]), FORWARD, mu);
493  tmp_0[rb[cb]] *= param.coeffs[mu][nu]; // c[mu][nu] = c[nu][mu]
494  tmp_1[rb[cb]] = tmp_0*adj(u[mu]);
495  tmp_2[rb[cb]] = u[nu]*tmp_1;
496  ds_u[nu][rb[cb]] += tmp_2;
497  ds_u[mu][rb[cb]] += adj(tmp_2);
498  ds_u[mu][rb[1-cb]] += shift(tmp_1, BACKWARD, nu)*shift(u[nu], BACKWARD, nu);
499  tmp_1[rb[cb]] = adj(u[nu])*u[mu];
500  ds_u[nu][rb[1-cb]] += shift(adj(tmp_0),BACKWARD,mu)*shift(tmp_1, BACKWARD, mu);
501  }
502  }
503  }
504 
505  // It is 1/(4Nc) to account for normalisation relevant to fermions
506  // in the taproj, which is a factor of 2 different from the
507  // one used here.
508  ds_u[mu] *= Real(-1)/(Real(2*Nc));
509  }
510 
511  // Zero the force on any fixed boundaries
512  getGaugeBC().zero(ds_u);
513 
514  END_CODE();
515  }
516 
517 
518  // Get the gauge action
519  //
520  // S = -(coeff/(Nc) Sum Re Tr Plaq
521  //
522  // w_plaq is defined in MesPlq as
523  //
524  // w_plaq =( 2/(V*Nd*(Nd-1)*Nc)) * Sum Re Tr Plaq
525  //
526  // so
527  // S = -coeff * (V*Nd*(Nd-1)/2) w_plaq
528  // = -coeff * (V*Nd*(Nd-1)/2)*(2/(V*Nd*(Nd-1)*Nc))* Sum Re Tr Plaq
529  // = -coeff * (1/(Nc)) * Sum Re Tr Plaq
530 
531  Double
533  {
534  START_CODE();
535 
536  Double S_pg = zero;
537 
538  // Handle< const GaugeState<P,Q> > u_bc(createState(u));
539  // Apply boundaries
540  const multi1d<LatticeColorMatrix>& u = state->getLinks();
541 
542  // Compute the average plaquettes
543  for(int mu=1; mu < Nd; ++mu)
544  {
545  for(int nu=0; nu < mu; ++nu)
546  {
547  /* tmp_0 = u(x+mu,nu)*u_dag(x+nu,mu) */
548  /* tmp_1 = tmp_0*u_dag(x,nu)=u(x+mu,nu)*u_dag(x+nu,mu)*u_dag(x,nu) */
549  /* wplaq_tmp = tr(u(x,mu)*tmp_1=u(x,mu)*u(x+mu,nu)*u_dag(x+nu,mu)*u_dag(x,nu)) */
550  Double tmp =
551  sum(real(trace(u[mu]*shift(u[nu],FORWARD,mu)*adj(shift(u[mu],FORWARD,nu))*adj(u[nu]))));
552 
553  S_pg += tmp * Double(param.coeffs[mu][nu]);
554  }
555  }
556 
557  // Normalize
558  S_pg *= Double(-1)/Double(Nc);
559 
560  END_CODE();
561 
562  return S_pg;
563  }
564 
565 
566  //! Compute the spatial part of the action given a time direction
568  {
569  START_CODE();
570 
571  Double S_pg = zero;
572 
573  // Handle< const GaugeState<P,Q> > u_bc(createState(u));
574  // Apply boundaries
575  const multi1d<LatticeColorMatrix>& u = state->getLinks();
576 
577  // Compute the average plaquettes
578  for(int mu=1; mu < Nd; ++mu)
579  {
580  for(int nu=0; nu < mu; ++nu)
581  {
582  /* tmp_0 = u(x+mu,nu)*u_dag(x+nu,mu) */
583  /* tmp_1 = tmp_0*u_dag(x,nu)=u(x+mu,nu)*u_dag(x+nu,mu)*u_dag(x,nu) */
584  /* wplaq_tmp = tr(u(x,mu)*tmp_1=u(x,mu)*u(x+mu,nu)*u_dag(x+nu,mu)*u_dag(x,nu)) */
585  if( (nu != t_dir) && (mu != t_dir) )
586  {
587  Double tmp =
588  sum(real(trace(u[mu]*shift(u[nu],FORWARD,mu)*adj(shift(u[mu],FORWARD,nu))*adj(u[nu]))));
589 
590  S_pg += tmp * Double(param.coeffs[mu][nu]);
591  }
592  }
593  }
594 
595  // Normalize
596  S_pg *= Double(-1)/Double(Nc);
597 
598  END_CODE();
599 
600  return S_pg;
601 
602  }
603 
604  //! Compute the temporal part of the action given a time direction
606  {
607  START_CODE();
608 
609  Double S_pg = zero;
610 
611  // Handle< const GaugeState<P,Q> > u_bc(createState(u));
612  // Apply boundaries
613  const multi1d<LatticeColorMatrix>& u = state->getLinks();
614 
615  // Compute the average plaquettes
616  for(int mu=1; mu < Nd; ++mu)
617  {
618  for(int nu=0; nu < mu; ++nu)
619  {
620  /* tmp_0 = u(x+mu,nu)*u_dag(x+nu,mu) */
621  /* tmp_1 = tmp_0*u_dag(x,nu)=u(x+mu,nu)*u_dag(x+nu,mu)*u_dag(x,nu) */
622  /* wplaq_tmp = tr(u(x,mu)*tmp_1=u(x,mu)*u(x+mu,nu)*u_dag(x+nu,mu)*u_dag(x,nu)) */
623  if( (nu == t_dir) || (mu == t_dir) )
624  {
625  Double tmp =
626  sum(real(trace(u[mu]*shift(u[nu],FORWARD,mu)*adj(shift(u[mu],FORWARD,nu))*adj(u[nu]))));
627 
628  S_pg += tmp * Double(param.coeffs[mu][nu]);
629  }
630  }
631  }
632 
633  // Normalize
634  S_pg *= Double(-1)/Double(Nc);
635 
636  END_CODE();
637 
638  return S_pg;
639 
640  }
641 
642 }
643 
Primary include file for CHROMA library code.
Abstract base class for gauge actions.
Definition: gaugeact.h:25
virtual const GaugeBC< multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > & getGaugeBC() const
Return the gauge BC object for this action.
Definition: gaugeact.h:46
virtual void zero(P &ds_u) const =0
Zero some gauge-like field in place on the masked links.
Support class for fermion actions and linear operators.
Definition: state.h:74
Class for counted reference semantics.
Definition: handle.h:33
void init(const Real &coeff, const AnisoParam_t &aniso)
Hide assignment.
void derivSpatial(multi1d< LatticeColorMatrix > &result, const Handle< GaugeState< P, Q > > &state, int t_dir) const
compute spatial dS/dU given a time direction
void derivTemporal(multi1d< LatticeColorMatrix > &result, const Handle< GaugeState< P, Q > > &state, int t_dir) const
compute spatial dS/dU given a time direction
void staple(LatticeColorMatrix &result, const Handle< GaugeState< P, Q > > &state, int mu, int cb) const
Compute staple.
Double S(const Handle< GaugeState< P, Q > > &state) const
Compute the actions.
Double spatialS(const Handle< GaugeState< P, Q > > &state, int t_dir) const
Compute the spatial part of the action given a time direction.
void deriv(multi1d< LatticeColorMatrix > &result, const Handle< GaugeState< P, Q > > &state) const
Compute dS/dU.
void stapleTemporal(LatticeColorMatrix &result, const Handle< GaugeState< P, Q > > &state, int mu, int cb, int t_dir) const
Compute staple.
PlaqGaugeActParams param
Double temporalS(const Handle< GaugeState< P, Q > > &state, int t_dir) const
Compute the temporal part of the action given a time direction.
void stapleSpatial(LatticeColorMatrix &result, const Handle< GaugeState< P, Q > > &state, int mu, int cb, int t_dir) const
Compute staple.
static T & Instance()
Definition: singleton.h:432
int mu
Definition: cool.cc:24
int nu
Definition: cool.cc:25
All gauge create-state method.
Gauge create state factory.
Fermion action factories.
void read(XMLReader &xml, const std::string &path, AsqtadFermActParams &param)
Read parameters.
LatticeColorMatrix tmp_2
Definition: meslate.cc:51
LatticeColorMatrix tmp_1
Definition: meslate.cc:50
Nd
Definition: meslate.cc:74
Double tmp2
Definition: mesq.cc:30
Handle< CreateGaugeState< multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > > reader(XMLReader &xml_in, const std::string &path)
Helper function for the CreateGaugeState readers.
GaugeAction< multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > * createGaugeAct(XMLReader &xml, const std::string &path)
static bool registered
Local registration flag.
const std::string name
bool registerAll()
Register all the factories.
multi1d< LatticeColorMatrix > G
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
static multi1d< LatticeColorMatrix > u
LatticeFermion tmp
Definition: mespbg5p_w.cc:36
int i
Definition: pbg5p_w.cc:55
START_CODE()
int cb
Definition: invbicg.cc:120
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
Definition: pbg5p_w.cc:28
Double zero
Definition: invbicg.cc:106
FloatingPoint< double > Double
Definition: gtest.h:7351
::std::string string
Definition: gtest.h:1979
Plaquette gauge action.
#define FORWARD
Definition: primitives.h:82
#define BACKWARD
Definition: primitives.h:83
Double sum
Definition: qtopcor.cc:37
Parameters for anisotropy.
Definition: aniso_io.h:24
Parameter structure.
Definition: plaq_gaugeact.h:26
PlaqGaugeActParams()
Base Constructor.
Definition: plaq_gaugeact.h:28