46 return ( (i-j)*(i-k)*(i-l)*(j-k)*(j-l)*(k-l)/12 );
61 trace.allocate(m_field->m_size);
68 MPI_Allreduce(&plaq, &plaq, 1, MPI_DOUBLE, MPI_SUM, Parallel::cartCoordComm());
69 MPI_Allreduce(&energy, &energy, 1, MPI_DOUBLE, MPI_SUM, Parallel::cartCoordComm());
70 MPI_Allreduce(&topc, &topc, 1, MPI_DOUBLE, MPI_SUM, Parallel::cartCoordComm());
85 for(
int mu = 0; mu < 4; mu++){
86 for(
int nu = mu+1; nu < 4; nu++){
88 shiftmu = shift((*m_field)[nu], mu, 1);
89 shiftnu = shift((*m_field)[mu], nu, 1);
92 clovers[mu][nu] = (*m_field)[mu];
93 clovers[mu][nu] *= shiftmu;
94 clovers[mu][nu] *= adj(shiftnu);
95 clovers[mu][nu] *= adj((*m_field)[nu]);
98 tempmm = adj(shiftnu);
99 tempmm *= adj((*m_field)[nu]);
100 tempmm *= (*m_field)[mu];
105 tempmp *= adj(shiftmu);
106 tempmp *= adj((*m_field)[mu]);
107 tempmp *= (*m_field)[nu];
110 temppm = adj((*m_field)[mu]);
111 temppm *= (*m_field)[nu];
113 temppm *= adj(shiftmu);
116 plaqSum += sum(clovers[mu][nu]);
117 clovers[mu][nu] += shift(shift(tempmm, mu, -1), nu, -1);
118 clovers[mu][nu] -= shift(tempmp, nu, -1);
119 clovers[mu][nu] -= shift(temppm, mu, -1);
146 clovers[mu][nu] -= adj(clovers[mu][nu]);
147 for(
int site = 0; site < clovers[mu][nu].sites; site++){
148 double tr = clovers[mu][nu].at(site).imagTrace()/3.0;
149 for(
int i = 1; i < 18; i+=8)
150 clovers[mu][nu].at(site).mat[i] -= tr;
154 energy += sum(realTrace((clovers[mu][nu]*clovers[mu][nu])));
160 for(
int nu = 1; nu < 4; nu++){
166 topc -= sum(realTrace((clovers[mu][nu]*clovers[rho][sig])));
168 topc -= sum(realTrace((clovers[mu][nu]*adj(clovers[sig][rho]))));
170 plaq = plaqSum.realTrace() / 18.0 / m_field->m_size[0] / m_field->m_size[1] / m_field->m_size[2] / m_field->m_size[3] / Parallel::activeProcs();
171 topc /= ( 16*16*M_PI*M_PI );
Contains the definition of the Lattice class.
int leviCivit(int i, int j, int k, int l)
levi-civita symbol evaluator
Contains the definition of the Observable prototype.
Class that represents the QCD field as an array of 4 SU3 lattices.
Contains the definition of the SuperObs class.
void superGatherResults()
MPI reduces the results of the sublattices for alll observables.
void compute()
computes the plaquette, the energy density and the topological charge on the lattice ...
void initObservable(GluonField *field)
initializer of the SuperObs class
Utilities for parallelization.
Basic library to implement SU3 matrix arithmetics and functions.
SuperObs()
constructor of the SuperObs class
Prototype for the Observable class group.