It is very easy to perform the installation and execution of SUSY_LATTICE
. Below we provide the necessary steps on *nix systems.
- Download and unpack the code.
- Change the directory to
SUSY_LATTICE
. - Edit utilities.h to set the number of supercharges by (un)defining Q16, and lattice lengths LX, LY, LZ and T. Note: setting e.g. LX=1 allows study of corresponding dimensionally reduced model. Number of colors is given by NCOLOR. The compilation parameter FULLMATRIX allows one to compute the Pfaffian and fermion eigenvalues using full matrix code (for small lattices).
- Compile the code:
g++ -O *.cpp -o SUSY\_LATTICE -llapack -lblas
Setting the parameter SCALAREIG=0 in utilities.h allows compilation without the LAPACK and BLAS libraries at the expense of having no measurements of the (scalar) eigenvalues. Settingulimit -s unlimited
may be required when running with-DFULLMATRIX
- Modify the input parameters located in file
parameters
- Type
./SUSY_LATTICE &> log &
to run the code.
The output of the code is written to the following files in the working directory:
cgs
: Average number of conjugate gradient (CG) iterations (seeMCG_solver.cpp
).config
: File to read in containing the site, link and plaquette field configurations from a previous run (seeread_in.cpp
).corrlines
: Correlation function between Polyakov loops as function of spatial separation (seecorrlines.cpp
).data
: Boson (1st column) and fermion (2nd column) contributions to the total action (seemeasure.cpp
).config
: Site, link and plaquette field configurations stored as ASCII (seewrite_out.cpp
).eigenvalues
: Eigenvalues of\cUbar_a(x)\cU_a(x)
.N
real numbers for each lattice pointx
and directiona
(seemeasure.cpp
).hmc_test
:e^{-\Delta H}
from HMC test (seeupdate.cpp
).lines_s
: Spatial Wilson line (seemeasure.cpp
).lines_t
: Temporal Wilson line, a.k.a. the Polyakov loop (seemeasure.cpp
).log
: Log file.loops
: Wilson loops (seeloop.cpp
).scalars
:Tr[\cUbar_a(x)\cU_a(x)]
(seemeasure.cpp
).ulines_s
: The spatial Wilson line computed using the unitary part of the link (seemeasure.cpp
).ulines_t
: The Polyakov loop computed using the unitary part of the link (seemeasure.cpp
).
This is the list of files included in SUSY_LATTICE
with a brief description of their purpose.
-
action.cpp
: Compute the total action, fermionic and bosonic. -
corrlines.cpp
: Finds the traced product of the link matrices at various lattice sites. -
evolve_fields.cpp
: Leapfrog evolution algorithm. Also stores the fermion and boson forces for the next iteration. Ratio of fermion to boson time steps controlled by parameterSTEPS
. -
fermion_forces.cpp
: Computes the fermion kick to gauge link force. -
force.cpp
: Bosonic and pseudo-fermionic contribution to the force. -
kinetic_energy.cpp
: Computes the kinetic energy term in the Hamiltonian. -
line.cpp
: Computes the Polyakov lines. -
loop.cpp
: Computes the Wilson loops. -
matrix.cpp
: Builds the fermion matrix (sparse and full forms) and also computes the Pfaffian of the fermion operator. -
MCG_solver.cpp
: multi-mass CG solver needed for RHMC algorithm. -
measure.cpp
: Performs measurements on field configurations. Writes out scalar eigenvalues, Polyakov/Wilson loops and the action. -
my_gen.cpp
: Computes the$SU(N)$ generator matrices. -
obs.cpp
: Computes fermion and gauge actions. Also returns the unitary piece of the complex link field. -
read_in.cpp
: Reads in the previously generated field configurations -- fileconfig
. -
read_param.cpp
: Reads in the simulation parameters from a data file calledparameters
. -
setup.cpp
: Contains the partial fraction coefficients necessary to represent fractional power of fermion operator -- used by Remez algorithm. -
sym.cpp
: The main program - performs warm up on field configurations and commences measurement sweeps once the configurations are warmed up. -
unit.cpp
: Extracts the unitary piece of the complex gauge links. -
update.cpp
: Updates the field configurations based on RHMC algorithm. -
update_gauge_momenta.cpp
: Called byevolve_fields()
to change gauge momenta. -
update_gauge_field.cp
: Called byevolve_fields()
. -
utilities.cpp
: Utility functions. Contains constructors for site, link, plaquette fields, gauge fields, twist fermions etc. Edit to change number of supercharges and size of lattice dimensions. -
write_out.cpp
: Writes out the values of gauge and twist fermion fields.
There is a sample input parameter file called parameters
located in the SUSY_LATTICE
folder. These are the definitions of the parameters:
SWEEPS
: Total number of Monte Carlo time steps intended for taking measurement steps.THERM
: Total number of Monte Carlo time steps intended for thermalizing the field configurations.GAP
: The gap between measurement steps.LAMBDA
: The `t Hooft coupling.BETA
: Inverse temperature.BMASS
: A bosonic mass parameterFMASS
: A fermionic mass paramater. Need to set non-zero for PBC.DT
: The time step put in the integrator for leapfrog evolution.READIN
: Determines whether to read in the previously generated field configurations or not. The program will read in the previous configurations ifREADIN
is set to1
.