Source codes for implementation of the Kitaev Honeycomb model and related calculations.
This package was developed for research published in arXiv:2003.07280 .
-
examples/example.ipynb
Some basic examples of using built-in functions are demonstrated in examples/example.ipynb.
-
source/show.py
- a utility script to show .log file generated by netket, either gui or cui
- see more usages with ./show.log --help
-
source/honeycomb.py
- some utility functions which will be used in many other codes. It includes, get_graph(), get_hamiltonian(), exact_diag(), gs_energy(), rbm(), measure() and flip_spins().
- get_graph() is the most useful one. It generates an arbitary size honeycomb graph.
- get_hamiltonian() uses get_graph() to get the Hamiltonian for an arbitary size honeycomb model.
- after creating hamiltonian(by get_hamiltonian) and machine(derictly use netket), pass them into rbm() to train it.
- exact_diag() gets energy level by directly diagnolize. gs_energy() gets gs energy by the analytic formula.
- measure() is actually a lr=0 rbm().
- flip_spins() manages to flip a spin by modifing parameters of an rbm.
- This script is supposed to only be imported and used in other scripts. See contents of calc_gs.py as an example.
-
source/calc_gs.py
- use honeycomb.py to calc gs.
-
source_torch/honeycomb.py
- The conterpart of honeycomb.py in "source/honeycomb.py". Including
- gen_H(): generate a Hamiltonian. Used in rbm_2x2.py.
- add other varieties to support torch: gen_ops_npmat, gen_ops_torchsparse, gen_H_torchsparse, gen_shift_sym.
- The conterpart of honeycomb.py in "source/honeycomb.py". Including
-
source_torch/rbm_eig.py
- Exact diagnolize Hamiltonian
-
source_torch/rbm_2x2.py
- Scripts for 2x2 lattice.
- Esay to understand.
-
source_torch/rbm_3x3.py
- Scripts for 3x3 lattice.
- "Projection method" and "pre-train technology" are used.
-
source_torch/Full-36-14.275.pkl
- network data for an rbm which can achieve -14.275 for 3x3 honeycomb model.
-
source_torch/operators_3x3
- Operators for 3x3 lattice.
In order to cite this work, use the following:
```
@misc{noorm2020restricted,
title={Restricted Boltzmann machine representation for the groundstate and excited states of Kitaev Honeycomb model},
author={Mohammadreza Noormandipour and Youran Sun and Babak Haghighat},
year={2020},
eprint={2003.07280},
archivePrefix={arXiv},
primaryClass={cond-mat.dis-nn}
}
```
We tried both NetKet and PyTorch. PyTorch is easy to install but NetKet is not. To install NetKet, you can try
- Build the conda environment using
installation/environment.yml
and activate it:conda env create -f environment.yml conda activate tqc
- Install mpich and then
NetKet
:pip install netket
- Use the docker file docker_tqc.