Coder Social home page Coder Social logo

hmvege / glac Goto Github PK

View Code? Open in Web Editor NEW
6.0 1.0 1.0 135.21 MB

A code for generating SU(3) Yang-Mills gauge configurations and applying gradient flow.

Home Page: http://hmvege.github.io/GLAC/html/index.html

License: MIT License

QMake 0.34% C++ 77.92% C 0.24% Python 20.87% Objective-C 0.49% Shell 0.14%
lattice qcd lqcd hpc

glac's Introduction

GLAC - Gluonic Action

Lattice Quantum Chromo Dynamics program for generating pure gauge field configurations and applying gradient flow on them. Created by Hans Mathias Mamen Vege at UiO(University of Oslo).

Action density of the gauge field

The action density of a gauge field. Created using LatViz, a program developed by Mathias M. Vege and Giovanni Pederiva.

Program folder structure

  • GLAC contains main program.
  • config_folder contains parameter-files for different runs.
  • docs contains the documentation of GLAC.
  • scripts contains various scripts, mostly written in Python, which has been used during development.
  • JobRenamer.py is a script for renaming Slurm .out output files.
  • multiJobSetup.py is script for starting multiple jobs.
  • createJobs.py is the main script for generating .json configuration files for GLAC, as well as submitting files to either Torque or Slurm.

Installation

Compile with following libraries(these should be available at most HPC cluster, should run without any problems):

GNU/4.9
OpenMPI/1.10.0
Qt/5.6.2

To compile, run the following inside the build folder:

qmake ../GLAC/GLAC.pro
make

A (short) guide to GLAC

To run GLAC through its Python interface, you will for the moment being have to use python 2.7.

Example:

python createJobs.py load weinberg_config.py -s slurm -bf {base directory}

This will automatically create a job script and submit it to the cluster the script is running on.

-s {system} specifies the run system. Either Slurm, Torque or local.

-bf {base_directory} is the full path leading up to where to output directory is situated. This would be the scratch space or wherever you want to store the output data. createJobs.py will automatically setup all relevant folders in a following structure,

{base directory}/
├── output/
│   └── {run-name}/
│   │   ├── field_configurations/
│   │   │   └── {field configurations generated}.bin
│   │   ├── flow_observables/
│   │   │   └── {observables}/
│   │   │   │   └── {observable output files for each flow time}.dat
│   │   ├── observables/
│   │   │   └── {non-flowed observable data}.dat
│   │   └── scalar_fields/
│   │   │   └── {observables}/
│   │   │   │   └── {the observables for the entire lattice}.bin
└── input/
│   └── {run-name}.json

If you need help, type -h, and you will get additional command line arguments.

python createJobs.py -h

If you want to perform a dryrun(i.e. no permanent change is performed), run:

python createJobs.py --dryrun load weinberg_config.py -bf {base directory}

This will then print out every detail of the run, without submitting the job. Useful for double check the settings without actually submitting.

For a more extensive guide to GLAC, see the examples folder. For more implementation specific details, see the GLAC Documentation.

Additional resources

  • The analysis code used for this thesis program can be seen in LatticeAnalyser.
  • To generate visualizations of the topological charge or energy, we used a program called LatViz.
  • A list of the Slurm commands can be found here. A list of the Torque commands can be found here. A Rosetta stone for going between Slurm and Torque can be seen here.
  • To read .json-files, we make use of the highly recommended json reader provided here.

Todo list and future goals.

Aspirational goals and todo's that could/should be implemented.

Todo's

  • Add check in createJobs.py such that when loading a single gauge configurations and generating new ones, we make sure that no previous gauge configurations of the names we will generates exist in the provided folder. Do this perhaps for observables as well.
  • Add unit tests for the Action derivatives. Test through validation testing.
  • Add unit tests for the observables. Test through validation testing.
  • Add unit tests for remaining lattice methods and make sure they match their equivalent SU3 unit tests or similar.
  • Add unit tests for the SU3 matrix exponential methods. Compare with output from known source.
  • Add performance timing for the flow method.
  • Investigate ways of allocating the cubes for sharing at the beginning of a program. Will need to have the performance timing method implemented to check if this helps.

Note: validation testing has been performed, and has shown the action, the observables, the SU3 exp method and the flow to be correct. Only need to implement this into a larger framework in either createJobs.py or an external script.

Future goals

  • Implement the Luscher-Weisz action.
  • Implement the option of calculating the field strength tensor with the plaquette.
  • Implement O(a^4) error correction for the field strength tensor.
  • Implement O(a^6) error correction for the field strength tensor.
  • Implement a better method for selecting the observables to run for.
  • Clean up the observables selection. Currently quite confusing names for the observables as well as a convoluted way of selecting observables.

glac's People

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

gharib85

glac's Issues

Refactor launch script

The launch script is messy and outdated, and should thus be refactored.

  • Refactor code(clean up, modularize)
  • Introduce setup.py
  • Switch out argparse with Click

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.