13 namespace PgGaugeActEnv
45 XMLReader paramtop(xml_in, path);
51 QDPIO::cerr <<
"Error reading XML: " << e << std::endl;
76 QDPIO::cerr <<
"PgGaugeAct::staple() - not converted from szin" << std::endl;
99 LatticeColorMatrix tmp_0;
100 LatticeColorMatrix
tmp_1;
101 LatticeColorMatrix
tmp_2;
102 LatticeColorMatrix
tmp_3;
103 LatticeColorMatrix tmp_4;
104 LatticeColorMatrix tmp_5;
106 multi1d<int> fdir(
Nd);
108 const multi1d<LatticeColorMatrix>&
u =
state->getLinks();
117 Real coeff_tmp = Real(-1)*Real(
coeff)/(Real(2*Nc));
126 for(
int j=0,
k=0;
k <
Nd;
k++)
132 for(
int cb=0;
cb < 2;
cb++)
136 tmp_5[rb[1-
cb]] = tmp_0 * coeff_tmp;
138 for(
int k=0;
k <
Nd-2;
k++)
157 tmp_5[rb[
cb]] = tmp_0 * coeff_tmp;
158 for(
int k=0;
k <
Nd-2;
k++)
176 tmp_0[rb[1-
cb]] = adj(
u[
nu]) *
u[
mu];
178 for(
int k=0;
k <
Nd-2;
k++)
199 tmp_5[rb[
cb]] = tmp_0 * coeff_tmp;
200 for(
int k=0;
k <
Nd-2;
k++)
244 const multi1d<LatticeColorMatrix>&
u =
state->getLinks();
246 LatticeColorMatrix tmp_0;
247 LatticeColorMatrix
tmp_1;
248 LatticeColorMatrix
tmp_2;
249 LatticeReal lgimp =
zero;
254 QDPIO::cerr <<
"Parallelogram implemented only for Nd==4" << std::endl;
258 for(
int dir = 0; dir <
Nd; ++dir)
264 for(
int mu0 = 0; mu0 < 2; ++mu0)
270 for(
int nu0 = 0; nu0 <= 2; ++nu0)
272 if (nu0 == mu0)
continue;
278 for(
int rho0 = mu0+1; rho0 <= 2; ++rho0)
280 if (rho0 == nu0)
continue;
286 for(
int cb = 0;
cb < 2; ++
cb)
304 tmp_0[rb[
cb]] = adj(
u[rho]) *
tmp_2;
318 lgimp[rb[
cb]] += real(trace(adj(
tmp_1) * tmp_0));
332 if (
mu >= dir)
mu =
mu + 1;
333 if (
nu >= dir)
nu =
nu + 1;
334 if (rho >= dir) rho = rho + 1;
336 for(
int cb = 0;
cb < 2; ++
cb)
372 lgimp[rb[
cb]] += real(trace(adj(
u[rho]) * tmp_0));
377 S_pg *= -
coeff / Real(Nc);
Primary include file for CHROMA library code.
Abstract base class for gauge actions.
virtual const GaugeBC< multi1d< LatticeColorMatrix >, multi1d< LatticeColorMatrix > > & getGaugeBC() const
Return the gauge BC object for this action.
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.
Class for counted reference semantics.
Parallelogram gauge action.
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.
void deriv(multi1d< LatticeColorMatrix > &result, const Handle< GaugeState< P, Q > > &state) const
Compute dS/dU.
LatticeColorMatrix tmp_tot
All gauge create-state method.
Fermion action factories.
void read(XMLReader &xml, const std::string &path, AsqtadFermActParams ¶m)
Read parameters.
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)
Callback.
bool registerAll()
Register all the factories.
static bool registered
Local registration flag.
Asqtad Staggered-Dirac operator.
static multi1d< LatticeColorMatrix > u
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > state
FloatingPoint< double > Double
Parallelgram gauge action.