36 #include "Math/latticemath.h" 37 #include "Utils/latticeunits.h" 39 #include "Utils/clusterspecifier.h" 50 PureGauge::PureGauge(
double beta){
52 m_staplesLattice =
new GluonField(Parallel::latticeSubSize());
53 m_constPart =
new GluonField(Parallel::latticeSubSize());
54 m_omega.allocate(Parallel::latticeSubSize());
55 trace.allocate(Parallel::latticeSubSize());
56 LatticeUnits::initialize(m_beta);
71 for(
int nu = 0; nu < 4; nu++){
73 shiftmu = shift((*
m_lat)[nu],mu,1);
75 tempStaple *= adj( shift((*
m_lat)[mu],nu,1));
76 tempStaple *= adj( (*
m_lat)[nu]);
77 m_omega += tempStaple;
79 tempStaple = adj(shiftmu);
80 tempStaple *= adj( (*
m_lat)[mu]);
81 tempStaple *= (*m_lat)[nu];
83 m_omega += shift(tempStaple, nu, -1);
96 m_omega = adj(m_omega) * (adj((*
m_lat)[mu]));
97 m_omega = (adj(m_omega)-m_omega);
99 for(
int site = 0; site < m_omega.sites; site++){
100 double tr = m_omega.at(site).imagTrace()/3.0;
101 for(
int i = 1; i < 18; i+=8)
102 m_omega.at(site).mat[i] -= tr;
104 for(
int i = 0; i < 18; i+=2){
105 double temp = m_omega.at(site).mat[i];
106 m_omega.at(site).mat[i] = -m_omega.at(site).mat[i+1]*0.5;
107 m_omega.at(site).mat[i+1] = temp*0.5;
115 void PureGauge::computeStaplez(
GluonField* lattice){
Implementation of a class to perform arithmetics between links.
Class that represents the QCD field as an array of 4 SU3 lattices.
double compute(int x, int y, int z, int t, int mu, SU3 &newLink)
Computes the action difference around a given link for a suggested move.
Lattice< SU3 > computeDerivative(int mu)
Computes the derivative of all links along the given direction.
GluonField * m_lat
The GluonField object the action is linked to.
Utilities for parallelization.
void setToZero(Lattice< SU3 > &su3lat)
sets a lattice object to all zero matrices
void computeStaples(int mu)
Computes the staples along the given directionfor all links in the given direction.
Field< SU3, 4 > GluonField
Contains the definition of the PureGauge action derived class.