-
Notifications
You must be signed in to change notification settings - Fork 100
Gauge Measurements
The Wilson plaquette action is defined as the averaged sum of the real part of the trace of all 1x1 plaquettes, and a plaquette U_{mu,nu}(x)
is an ordered and oriented product of gauge links U_{mu}(x)
defined at a lattice point x
.
x+nu--<--x+mu+nu
| |
v ^
| |
C_{mu}(x) = x--->---x+mu
Computing this number using QUDA is trivial. After properly initialising and configuring QUDA to your specifications, pass a 3 dimensional double to the interface function:
void plaqQuda(double plaq[3]);
and QUDA will populate the array with the following:
plaq[0] = plaq3.x; //Plaquette average
plaq[1] = plaq3.y; //Purely spatial plaquette average
plaq[2] = plaq3.z; //Purely temporal plaquette average
Another action definition is the clover action. This is similar to the Wilson action in that it is made up of plaquettes, but now there are 4:
F_{mu,nu}(x) = 1/8[U_{mu,nu}(x)+U_{mu,nu}(x-mu)+U_{mu,nu}(x-nu)+U_{mu,nu}(x-mu-nu) -
(U_{mu,nu}^dag(x)+U_{mu,nu}^dag(x-mu)+U_{mu,nu}^dag(x-nu)+U_{mu,nu}^dag(x-mu-nu))]
To compute a lattice observable such as the energy from the clover action, simply call the QUDA interface function
double energyQuda();
One can define a topological charge for the lattice as:
Q(x) = 1/(32*pi*pi) * (Re Tr[F_{1,0}(x) - F_{3,2}(x)] + Re Tr[F_{3,0}(x) - F_{2,1}(x)] - Re Tr[F_{2,0}(x) - F_{3,1}(x)])
Which is computed via either of the QUDA interface functions
double qChargeQuda();
double qChargeDensityQuda(void *h_qDensity);
Each will return the topological charge value, and the second will allocate memory for an array of Q(x)
, the topological charge at each lattice site. This can be useful for eta prime computations.