Simulating Yang-Mills on the lattice
LatticeGPU.YM.GaugeParm
— Type struct GaugeParm{T,G,N}
Structure containning the parameters of a pure gauge simulation. These are:
- beta: Type
T
. The bare coupling of the simulation - c0: Type
T
. LatticeGPU supports the simulation of gauge actions made of 1x1 Wilson Loops and 2x1 Wilson loops. The parameter c0 defines the coefficient on the simulation of the 1x1 loops. Some common choices are:- c0=1: Wilson plaquette action
- c0=5/3: Tree-level improved Lüscher-Weisz action.
- c0=3.648: Iwasaki gauge action
- cG: Tuple (
T
,T
). Boundary improvement parameters. - ng:
Int64
. Rank of the gauge group. - Ubnd: Boundary field for SF boundary conditions
LatticeGPU.YM.YMworkspace
— Type struct YMworkspace{T}
Structure containing memory workspace that is resused by different routines in order to avoid allocating/deallocating time. The parameter T
represents the precision of the simulation (i.e. single/double). The structure contains the following components
- GRP: Group being simulated
- ALG: Corresponding Algebra
- PRC: Precision (i.e.
T
) - frc1: Algebra field with natural indexing.
- frc2: Algebra field with natural indexing.
- mom: Algebra field with natural indexing.
- U1: Group field with natural indexing.
- cm: Complex field with lexicographic indexing.
- rm: Real field with lexicographic indexing.
LatticeGPU.YM.ztwist
— Function function ztwist(gp::GaugeParm{T,G}, lp::SpaceParm{N,M,B,D}[, ipl])
Returns the twist factor. If a plane index is passed, returns the twist factor as a complex{T}. If this is not provided, returns a tuple, containing the factor of each plane.
Gauge actions and forces
Routines to compute the gauge action.
LatticeGPU.YM.gauge_action
— Functionfunction gauge_action(U, lp::SpaceParm, gp::GaugeParm, ymws::YMworkspace)
Returns the value of the gauge action for the configuration U. The parameters eta
and c0
are taken from the gp
structure.
Routines to compute the force derived from gauge actions.
LatticeGPU.YM.force_gauge
— Functionfunction force_gauge(ymws::YMworkspace, U, gp::GaugeParm, lp::SpaceParm)
Computes the force deriving from an improved action with parameter c0
, without the prefactor 1/g0^2, and assign it to the workspace force ymws.frc1
Force field refresh
Algebra fields with natural indexing can be randomized.
LatticeGPU.YM.randomize!
— Function function randomize!(f, lp::SpaceParm, ymws::YMworkspace)
Given an algebra field with natural indexing, this routine sets the components to random Gaussian distributed values. If SF boundary conditions are used, the force at the boundaries is set to zero.
Basic observables
Some basic observable.
LatticeGPU.YM.plaquette
— Function function plaquette(U, lp::SpaceParm, gp::GaugeParm, ymws::YMworkspace)
Computes the average plaquette for the configuration U
.
HMC simulations
Integrating the EOM
LatticeGPU.MD.IntrScheme
— Type struct IntrScheme{N, T}
Integrator for the molecular dynamics.
LatticeGPU.MD.leapfrog
— Function leapfrog(::Type{T}, eps, ns)
Leapfrog integrator with eps
stepsize and ns
steps.
LatticeGPU.MD.omf2
— Function omf2(::Type{T}, eps, ns)
Second order Omelyan integrator with eps
stepsize and ns
steps.
LatticeGPU.MD.omf4
— Function omf4(::Type{T}, eps, ns)
Fourth order Omelyan integrator with eps
stepsize and ns
steps.
LatticeGPU.YM.MD!
— Function function MD!(mom, U, int::IntrScheme, lp::SpaceParm, gp::GaugeParm, ymws::YMworkspace)
Performs the integration of a molecular dynamics trajectory starting from the momentum field mom
and the configuration U
according to the integrator described by int
.
HMC algorithm
LatticeGPU.YM.hamiltonian
— Function function hamiltonian(mom, U, lp::SpaceParm, gp::GaugeParm, ymws::YMworkspace)
Returns the Energy $H = \frac{p^2}{2}+S[U]$, where the momenta field is given by mom
and the configuration by U
.
LatticeGPU.YM.HMC!
— Function HMC!(U, int::IntrScheme, lp::SpaceParm, gp::GaugeParm, ymws::YMworkspace; noacc=false)
Performs a HMC step (molecular dynamics integration and accept/reject step). The configuration U
is updated ans function returns the energy violation and if the configuration was accepted in a tuple.