All Projects → akio-tomiya → LatticeQCD.jl

akio-tomiya / LatticeQCD.jl

Licence: MIT license
A native Julia code for lattice QCD with dynamical fermions in 4 dimension.

Programming Languages

julia
2034 projects

Projects that are alternatives of or similar to LatticeQCD.jl

gpt
A Python toolkit for lattice field theory, quantum computing, and machine learning
Stars: ✭ 60 (-29.41%)
Mutual labels:  lattice-gauge-theory, lattice-field-theory, lattice-qcd
l2hmc-qcd
Application of the L2HMC algorithm to simulations in lattice QCD.
Stars: ✭ 33 (-61.18%)
Mutual labels:  monte-carlo, hmc, lattice-qcd
julia-NotepadPlusPlus
Julia language support for Notepad++
Stars: ✭ 34 (-60%)
Mutual labels:  julia-language, julialang
Julia
The Julia Programming Language
Stars: ✭ 37,497 (+44014.12%)
Mutual labels:  hpc, julia-language
GlobalSensitivity.jl
Robust, Fast, and Parallel Global Sensitivity Analysis (GSA) in Julia
Stars: ✭ 30 (-64.71%)
Mutual labels:  julia-language, julialang
FaceDetection.jl
A face detection algorithm using Viola-Jones' rapid object detection framework written in Julia
Stars: ✭ 13 (-84.71%)
Mutual labels:  julia-language, julialang
deoplete-julia
deoplete.nvim source for julia. Providing julia Syntax Completions for julia, in Neovim (deprecated for julia 0.6+)
Stars: ✭ 12 (-85.88%)
Mutual labels:  julia-language, julialang
OmniSci.jl
Julia client for OmniSci GPU-accelerated SQL engine and analytics platform
Stars: ✭ 22 (-74.12%)
Mutual labels:  julia-language, julialang
ECharts.jl
Julia package for the Apache ECharts v4 visualization library
Stars: ✭ 80 (-5.88%)
Mutual labels:  julia-language, julialang
Corpuscles.jl
Julia package for particle physics
Stars: ✭ 25 (-70.59%)
Mutual labels:  hep, particle-physics
decaylanguage
Package to parse decay files, describe and convert particle decays between digital representations.
Stars: ✭ 34 (-60%)
Mutual labels:  hep, particle-physics
SpinMonteCarlo.jl
Markov chain Monte Carlo solver for lattice spin systems implemented by Julialang
Stars: ✭ 35 (-58.82%)
Mutual labels:  monte-carlo, julialang
FstFileFormat.jl
Julia bindings for the fst format
Stars: ✭ 17 (-80%)
Mutual labels:  julia-language, julialang
Julia
Algorithms implemented in the Julia programming language. We're collaborating with the Humans of Julia community!
Stars: ✭ 216 (+154.12%)
Mutual labels:  julia-language, julialang
BeautifulMakie
https://lazarusa.github.io/BeautifulMakie/
Stars: ✭ 281 (+230.59%)
Mutual labels:  julia-language, julialang
pylhe
Lightweight Python interface to read Les Houches Event (LHE) files
Stars: ✭ 29 (-65.88%)
Mutual labels:  hep, particle-physics
DynamicHMCExamples.jl
Examples for Bayesian inference using DynamicHMC.jl and related packages.
Stars: ✭ 33 (-61.18%)
Mutual labels:  julia-language, julialang
Julia-sublime
Julia syntax highlighting for Sublime Text
Stars: ✭ 106 (+24.71%)
Mutual labels:  julia-language, julialang
DataFrames
Welcome to DataFrames.jl with Bogumił Kamiński
Stars: ✭ 106 (+24.71%)
Mutual labels:  julia-language, julialang
IterTools.jl
Common functional iterator patterns
Stars: ✭ 124 (+45.88%)
Mutual labels:  julia-language, julialang

LatticeQCD.jl

CI

LatticeQCD.jl

This code enabales you to perform lattice QCD calculations! A native Julia code for Lattice QCD.

demo

Tutorial

You can start it in Google Colab

Quick start

You can start lattice QCD in 5 steps!

1.Download a Julia binary from Julialang.org. Set a path to the binary of Julia.

2.In Julia REPL, push "]" key to enter the package mode and type

add LatticeQCD

and "return" key. Press "backspace" key ( "delete" key for mac) to exit the package mode. You can get the latest version via add LatticeQCD#master.

(All dependence will be solved automatically)

3.Include the package with

using LatticeQCD

4.Make a parameter file with wizard,

run_wizard()

Choose parameters as you want!

5.Start simulation with created your parameter file!

 run_LQCD("my_parameters.jl")

You'll get results!

Of cource, you can write/modify a parameter file by yourself.

Enjoy life with lattice QCD.

To see our demonstration above, execute,

using Plots
using LatticeQCD 
demo()

it takes time before showing up the window.

What is supported?

We support 4 dimensional euclidean spacetime.

  • Wizard for making parameters
  • Gauge field
    • Optimized SU(2), SU(3)
    • General SU(N)
    • General gauge action = plaquette + rect + etc action
  • Fermions
    • Wilson/Wilson-clover (2 flavors)
    • Staggered fermion (1-8 tastes ~ flavors)
  • Configuration generation algorithms
    • Cold/Hot start for SU(N). One instanton configuration for SU(2)
    • Heatbath for SU(N) & overrelaxation for a general gauge action
    • Quenched HMC with SU(N) for a general gauge action
    • HMC (2 flavor Wilson/Clover) with SU(N) with a general gauge action
    • HMC (4 taste staggered fermions) with SU(N) with a general gauge action
    • RHMC (any flavor staggered) with SU(N) for a general gauge action*
    • SU(N) stout smeared dynamical fermions (experimental)
    • Fermion integrated HMC with a general gauge action
    • Self-learning Monte-Carlo with a general action (ref. this paper )
    • Self-learning HMC with plaquette action
  • Measurements
    • Plaquette
    • Polyakov loop
    • Chiral condensates (Wilson, Wilson-Clover, staggered)
    • Momentum projected pion correlator (Wilson, Wilson-Clover fermion, staggered)
    • Topological charge(plaquette and clover definition)
    • Load & measurement mode (load and measure all configurations in a directory)
  • Smearing
    • APE, stout (This will be public)
    • Gradient flow for a generic action (experimental)
  • I/O for configurations
    • ILDG format
    • JLD format (default binary file for Julia, one of HDF5)

*If you specified other than Nf=4, 8 with the staggered fermion HMC, RHMC is automatically used. For a machine with the apple silicon, Nf=1-8 is avalable.

Parallelazation have not supported yet.

USAGE/User interface

We support following two user interfaces

  1. Julia REPL interface (For beginners, just after the lattice QCD textbook)
  2. Genral interface (Experience with another code, for batch job, customised purpose)

Usage 1 was already explained.

For Usage 2, in Julia REPL, push "]" key to enter the package mode and type

add LatticeQCD

Then, LatticeQCD.jl is installed on your machine.

The "PARAMETER_FILE" can be created through the wizard. To use the wizard on the shell, you write the following code (& save as wizard.jl):

using LatticeQCD
run_wizard()

Then, you can run the wizard:

julia wizard.jl

You write the following code (& save as run.jl):

using LatticeQCD
run_LQCD(ARGS[1])

Then, you can execute like

julia run.jl PARAMETER_FILE

then, you get results though standard I/O.

Purpose of the code

We develop this code to achive following things:

  1. Good portability (If one has Julia, this code is runnable. All dependences are under control.)
  2. Easy to start/ pedagogical (start in 10 minutes)
  3. Suite (configuration generation with and without fermions, and measurements)
  4. Easy to modify (Good for prototyping)
  5. Compatitive speed with Fortran 90 codes

This is the first open source Julia code for lattice QCD. High performance is out of our scope.

How has it been tested?

We compared results to following papers/codes

Reference

We refer "Lattice Tool Kit" https://nio-mon.riise.hiroshima-u.ac.jp/LTK/ written in Fortran 90.

Acknowledgement

If you write a paper using this package, please refer this code.

E.g. This work is in part based on LatticeQCD.jl (https://github.com/akio-tomiya/LatticeQCD.jl).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].