PFFRGSolver
Pseudofermion functional renormalization group solver
Science Score: 77.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 5 DOI reference(s) in README -
✓Academic publication links
Links to: arxiv.org, aps.org, zenodo.org -
✓Committers with academic emails
3 of 8 committers (37.5%) from academic institutions -
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (15.5%) to scientific vocabulary
Repository
Pseudofermion functional renormalization group solver
Basic Info
Statistics
- Stars: 29
- Watchers: 1
- Forks: 3
- Open Issues: 15
- Releases: 7
Metadata Files
README.md
PFFRGSolver.jl 
Pseudo-Fermion Functional Renormalization Group Solver
(Julia v1.5 and higher)
Introduction
The package PFFRGSolver.jl aims at providing an efficient, state-of-the-art multiloop solver for functional renormalization group equations of quantum lattice spin models in the pseudo-fermion representation. It is currently applicable to spin models described by Hamiltonians of the form
which can be defined on a variety of pre-implemented two and three dimensional lattices. Internally, PFFRGSolver.jl first computes a reduced representation of the lattice by employing space group symmetries before initializing the renormalization group flow with the bare couplings or, optionally, a solution of the regularized parquet equations, to which the multiloop truncated FRG converges by construction. The RG equations are integrated using the Bogacki-Shampine method with adaptive step size control. In each stage of the flow, real-space spin-spin correlations are computed from the flowing vertices. For a more detailed discussion of the method and its implementation see https://arxiv.org/abs/2011.01269.
Installation
The package can be installed with the Julia package manager by switching to package mode in the REPL (with ]) and using
julia
pkg> add PFFRGSolver
Citation
If you use PFFRGSolver.jl in your work, please acknowledge the package accordingly and cite our preprint
D. Kiese, T.Müller, Y. Iqbal, R. Thomale and S. Trebst, "Multiloop functional renormalization group approach to quantum spin systems", arXiv:2011.01269 (2020)
A suitable bibtex entry is
@misc{kiese2020multiloop,
title={Multiloop functional renormalization group approach to quantum spin systems},
author={Dominik Kiese and Tobias M\"uller and Yasir Iqbal and Ronny Thomale and Simon Trebst},
year={2020},
eprint={2011.01269},
archivePrefix={arXiv},
primaryClass={cond-mat.str-el}
}
Running calculations
In order to simulate e.g. the nearest-neighbor Heisenberg antiferromagnet on the square lattice for a lattice truncation L = 3 simply do
julia
using PFFRGSolver
launch!("/path/to/output", "square", 3, "heisenberg", "su2", [1.0])
The FRG solver allows for more fine grained control over the calculation by various keyword arguments. The full reference can be obtained via ?launch!. Currently available lattices and models can be obtained in verbose form with lattice_avail() and model_avail().
Post-processing data
Each calculation generates two output files "/path/to/output_obs" and "/path/to/output_cp" in the HDF5 format, containing observables measured during the RG flow and checkpoints with full vertex data respectively.
The so-obtained real space spin-spin correlations are usually converted to structure factors (or susceptibilities) via a Fourier transform to momentum space, to investigate the ground state predicted by pf-FRG. In the following, example code is provided for computing the momentum (and Matsubara frequency) resolved structure factor for the full FRG flow, as well as a single cutoff, for Heisenberg models on the square lattice.
```julia using PFFRGSolver using HDF5
generate 50 x 50 momentum space discretization within first Brillouin zone of the square lattice
rx = (-1.0 * pi, 1.0 * pi) ry = (-1.0 * pi, 1.0 * pi) rz = (0.0, 0.0) k = get_momenta(rx, ry, rz, (50, 50, 0))
open observable file and output file to save structure factor
filein = h5open("/path/to/outputobs", "r") fileout = h5open("/path/to/outputsf", "cw")
compute structure factor for the full flow
computestructurefactorflow!(filein, file_out, k, "diag")
read so-computed structure factor with its frequency mesh at cutoff Λ = 1.0 from file_out
m, s = readstructurefactor(file_out, 1.0, "diag")
read so-computed static structure factor flow at momentum with largest amplitude with respect to reference scale Λ = 1.0
ref = readreferencemomentum(fileout, 1.0, "diag") Λ, s = readstructurefactorflowatmomentum(file_out, ref, "diag")
read lattice data and real space correlations with their frequency mesh at cutoff Λ = 1.0 from file_in
l, r = readlattice(filein) m, χ = readχ(filein, 1.0, "diag")
compute static structure factor at cutoff Λ = 1.0
s = computestructurefactor(χ[:, 1], k, l, r)
close HDF5 files
close(filein) close(fileout) ```
Vertex data can be accessed by reading checkpoints from "/path/to/output_cp" like
```julia using PFFRGSolver using HDF5
open checkpoint file of FRG solver
file = h5open("/path/to/output_cp", "r")
load checkpoint at cutoff Λ = 1.0
Λ, dΛ, m, a = read_checkpoint(file, 1.0)
close HDF5 file
close(file) ```
The solver generates (if parquet = true in the launch! command) at least two checkpoints, one with the converged parquet solution used as the initial condition for the FRG and one with the final result at the end of the flow. Additional checkpoints are either created according to a timer heuristic, which can be controlled with the ct and wt keywords in launch!, or via an explicit list of cutoffs (cps keyword).
Performance notes
The PFFRGSolver.jl package accelerates calculations by making use of Julia's built-in dynamical thread scheduling (Threads.@spawn). Even for small systems, the number of flow equations to be integrated is quite tremendous and parallelization is vital to achieve acceptable run times. We recommend to launch Julia with multiple threads whenever PFFRGSolver.jl is used, either by setting up the respective enviroment variable export JULIA_NUM_THREADS=$nthreads or by adding the -t flag when opening the Julia REPL from the terminal i.e. julia -t $nthreads.
If you are using the package in an HPC environment, make sure that the precompile cache is generated for that CPU architecture on which production runs are performed, as the LoopVectorizations.jl dependency of the solver will unlock compiler optimizations based on the respective hardware.
SLURM Interface
Calculations with PFFRGSolver.jl on small to medium sized systems can usually be done locally with a low number of threads. However, when the number of loops is increased and high resolution is required, calculations can become quite time consuming and it is advisable to make use of a computing cluster if available. PFFRGSolver.jl exports a few commands, to help people setting up simulations on clusters utilizing the SLURM workload manager (integration for other systems is plannned for future versions). Example code for a rough scan of the phase diagram of the J1-J2 Heisenberg model on the square lattice (with L = 6) is given below.
```julia using PFFRGSolver
make new folder and add launcher files for a rough scan of the phase diagram
mkdir("j1j2_square")
for j2 in [0.0, 0.2, 0.4, 0.6, 0.8, 1.0] savelauncher!("j1j2square/j2$(j2).jl", "j2$(j2)", "square", 6, "heisenberg", "su2", [1.0, j2], numσ = 50, numΩ = 30, numν = 20, numχ = 10) end
set up SLURM parameters as dictionary
sbatchargs = Dict(["account" => "myaccount", "nodes" => "1", "ntasks" => "1", "cpus-per-task" => "8", "time" => "04:00:00", "partition" => "my_partition"])
generate job files
makerepository!("j1j2square", "/path/to/julia/exe", sbatch_args) ```
The jobs subsequently can be submitted using
bash
for FILE in j1j2_square/*/*.job; do sbatch $FILE; done
After having submitted and run the jobs, results can be gathered in "j1j2_square/finished" with the collect_repository! command. Note that simulations, which could not be finished in time, have their overwrite flag in the respective launcher file set to false by collect_repository!. As such they can just be resubmitted and will continue calculations from the last available checkpoint.
Literature
For further reading on technical aspects of (multiloop) pf-FRG see
- [1] https://journals.aps.org/prb/abstract/10.1103/PhysRevB.81.144410
- [2] https://journals.aps.org/prb/abstract/10.1103/PhysRevB.96.045144
- [3] https://journals.aps.org/prb/abstract/10.1103/PhysRevB.97.064416
- [4] https://journals.aps.org/prb/abstract/10.1103/PhysRevB.97.035162
- [5] https://arxiv.org/abs/2011.01268
Owner
- Name: Dominik Kiese
- Login: dominikkiese
- Kind: user
- Location: New York City, NY, United States
- Company: Center for Computational Quantum Physics, Flatiron Institute, New York
- Repositories: 2
- Profile: https://github.com/dominikkiese
Citation (CITATION)
If you use PFFRGSolver.jl, please acknowledge the package accordingly and cite our preprint
D. Kiese, T.Müller, Y. Iqbal, R. Thomale and S. Trebst, "Multiloop functional renormalization group approach to quantum spin systems", arXiv:2011.01269 (2020)
A suitable bibtex entry is:
@misc{kiese2020multiloop,
title={Multiloop functional renormalization group approach to quantum spin systems},
author={Dominik Kiese and Tobias M\"uller and Yasir Iqbal and Ronny Thomale and Simon Trebst},
year={2020},
eprint={2011.01269},
archivePrefix={arXiv},
primaryClass={cond-mat.str-el}
}
GitHub Events
Total
- Watch event: 1
- Push event: 4
Last Year
- Watch event: 1
- Push event: 4
Committers
Last synced: almost 3 years ago
All Time
- Total Commits: 421
- Total Committers: 8
- Avg Commits per committer: 52.625
- Development Distribution Score (DDS): 0.359
Top Committers
| Name | Commits | |
|---|---|---|
| Dominik Kiese | d****e@t****e | 270 |
| Tobias Müller | t****r@p****e | 69 |
| dominikkiese | 4****e@u****m | 55 |
| Lasse Gresi | l****a@g****m | 8 |
| github-actions[bot] | 4****]@u****m | 7 |
| Tobias Müller | 4****r@u****m | 7 |
| LoctusTM | 4****M@u****m | 3 |
| Lasse Gresista | g****a@t****e | 2 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 7 months ago
All Time
- Total issues: 45
- Total pull requests: 46
- Average time to close issues: 17 days
- Average time to close pull requests: 22 days
- Total issue authors: 4
- Total pull request authors: 4
- Average comments per issue: 0.49
- Average comments per pull request: 1.91
- Merged pull requests: 43
- Bot issues: 0
- Bot pull requests: 1
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- tobiaslcmueller (31)
- dominikkiese (12)
- lgresista (1)
- JuliaTagBot (1)
Pull Request Authors
- dominikkiese (30)
- tobiaslcmueller (13)
- lgresista (3)
- github-actions[bot] (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
- Total downloads: unknown
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 6
juliahub.com: PFFRGSolver
Pseudofermion functional renormalization group solver
- Documentation: https://docs.juliahub.com/General/PFFRGSolver/stable/
- License: MIT
-
Latest release: 0.5.0
published about 4 years ago
Rankings
Dependencies
- actions/cache v1 composite
- actions/checkout v2 composite
- julia-actions/julia-buildpkg v1 composite
- julia-actions/julia-runtest v1 composite
- julia-actions/setup-julia v1 composite
- JuliaRegistries/TagBot v1 composite
- julia-actions/RegisterAction latest composite