Skip to content

Export lattice gauge configurations to Mathematica and analyze.

License

Notifications You must be signed in to change notification settings

bvds/gauge-field-analyze

 
 

Repository files navigation

SU(N) gauge field analysis

This repository contains code to analyze SU(N) lattice gauge theory field configurations. The strategy is to look at 3 and 4 dimensions in the large N limit, paying special attention to saddle points of the action. It has three components:

  1. A number of Mathematica notebooks (gauge.nb being the central file) containing test code and a number of analyses.
  2. A Mathematica library mma-lib for analyzing gauge field configurations.
  3. C++ code for converting Chroma-generated gauge configurations into Mathematica format. See "gauge-analyze" below.
  4. C code for finding the saddle-point of a quadratic function, given the Hessian matrix, the gradient vector, and some number of linear constraints. See saddle-lib.

Chroma

The official release of chroma does not properly handle large N or 3 spacetime dimensions. Instead use my fork of chroma. Also, this fork includes an extension TRANS_GAUGEBC that sets fixed boundary conditions in two directions.

gauge-analyze

Install

Install QDP++ and packages autoconf and g++.

In the root directory, generate the configuration files:

autoreconf -f
automake --add-missing 

To get configuration options:

./configure --help

In particular, note the --with-qdp option. To build, one can create a separate build directory like this:

mkdir 3-3-build/ ; cd 3-3-build
../configure --with-qdp=/usr/local/qdp++/3-3/
make

Run

ganalyze [input_config] [output]
 - [input_config]  the QDP config stored in the SciDAC file format (.lime)
 - [output] name of the output file in Mathematica format

Converts a configuration stored in the SciDAC file format (also known as lime) to Mathematica-readable format.

The input file is generated by the purgaug program from chroma as discussed above. The program only runs for a single thread, non-parallel.

Example commands to generate gauge configurations and create an associated Mathematica input file:

cd ../data/3-3/
# create file periodic-16-28-in.xml
../../chroma/3-3-build/mainprogs/main/purgaug -i periodic-16-28-in.xml -o periodic-16-28-out.xml

Or, run in screen:

screen -S a -d -m ../../chroma/3-3-build/mainprogs/main/purgaug -i periodic-16.20.24-23.4-a-in.xml -o periodic-16.20.24-23.4-a-out.xml

Next:

../../gauge-field-analyze/3-3-build/programs/ganalyze periodic-16-28.ini.xml5 periodic-16-28-5.m

Or, if there is a lot of them:

perl -e 'for (1..100) {system "../../gauge-field-analyze/3-3-build/programs/ganalyze periodic-16-28.ini.xml$_ periodic-16-28-$_.m"}'
perl -e 'for (1..56) {$x=$_+56*0;system "../../gauge-field-analyze/3-4-build/programs/ganalyze periodic-16.20.24-51.44648478-a.ini.xml$_ periodic-16.20.24-51.44648478-$x.m"}'

Bibliography

MATLAB linear system solvers

To find stationary points of the action for some lattice configuration we need a Krylov space method for solving symmtric-indefinite singular (or incompatible) linear systems.

The MINRES-QLP algorithm can handle this case, however the associated MATLAB code contains some errors. Also, I cleaned up the code a bit:

  • Condition flag != flag0 (line 543) means that MINRES is never called.

  • Initialization error in minresxxxM (lines 746, 747)

  • Replace length(x)>0 with ~isempty(x)

  • Value of w_{k-3} (lines 557 to 559) is never used.

  • gamal3 is never used.

  • Initial value is overwritten: gamal2, u, and wl2.

  • Added explicit end to each function.

MATLAB versions:

Mathematica versions:

About

Export lattice gauge configurations to Mathematica and analyze.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Mathematica 97.9%
  • C 0.8%
  • TeX 0.6%
  • MATLAB 0.5%
  • C++ 0.1%
  • M4 0.1%