-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
7 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,17 +1,18 @@ | ||
# MERA.jl | ||
|
||
MERA.jl provides Julia implementations of some basic [Multiscale Entaglement Renormalization Ansatz](https://arxiv.org/abs/quant-ph/0610099) algorithms. It only implements infinite, translation invariant MERAs. At the moment it has implementations of both ternary and binary MERAs, with functions for doing energy minimization, evaluating expectation values, and computing scaling dimensions. | ||
MERA.jl provides Julia implementations of some basic [Multiscale Entaglement Renormalization Ansatz](https://arxiv.org/abs/quant-ph/0610099) [algorithms](https://arxiv.org/abs/0707.1454). It only implements infinite, translation invariant MERAs. At the moment it has implementations of both ternary and binary MERAs, with functions for doing energy minimization, evaluating local expectation values, and computing scaling dimensions. | ||
|
||
MERA.jl makes extensive use of [TensorKit](https://github.com/Jutho/TensorKit.jl), and uses it to support global internal symmetries, both Abelian and non-Abelian. | ||
|
||
## Usage | ||
|
||
The type system is based on `GenericMERA{T} where T <: Layer`, and `TernaryMERA = GenericMERA{TernaryLayer}` and `BinaryMERA = GenericMERA{BinaryLayer}`. | ||
|
||
The file `src/genericmera.jl` implements functions that are independent of the exact type of MERA. `src/ternarylayer.jl` and `src/binarylayer.jl` provide the details of things like ascending/descending superoperators, that depend on the specific MERA. `src/tensortools.jl` supplies some functions for TensorKit objects such as `TensorMap`s and vector spaces that the rest of the package needs. | ||
|
||
The folder `demo` has a script and supporting files for it, that runs energy minimization on either the Ising or the XXZ model, and computes scaling dimensions and entanglement entropies from the resulting MERA. The best way to get going is to clone this repo, navigate to its folder, open a Julia prompt and do | ||
The folder `demo` has a script `demo.jl`, that runs energy minimization on either the Ising or the XXZ model (your choice), and computes scaling dimensions and entanglement entropies from the resulting MERA. The best way to get going is to clone this repo, navigate to its folder, open a Julia prompt and do | ||
``` | ||
]activate . | ||
include("demo/demo.jl") | ||
``` | ||
|
||
`demo.jl` writes to disk the MERAs it creates, by default in a folder called `JLMdata`. Another script, `demo/demo_refine.jl`, can be used to load these files, optimize the MERA further for better convergence, and write them back to disk. If I would need high quality results for a given bond dimension, I would first generate a decent starting point using `demo.jl`, which builds the MERA up by slowly increasing bond dimension, and then use `demo_refine.jl` to push for proper convergence. Both of these scripts use `demo/demo_tools.jl`, which deals with creating Hamiltonians, writing to and reading from disk, and gradually increasing bond dimension during an optimization. | ||
|
||
The actual library is obviously in `src`. The type system is based on a an abstract type `GenericMERA{T} where T <: Layer`, and its concrete subtypes `TernaryMERA = GenericMERA{TernaryLayer}` and `BinaryMERA = GenericMERA{BinaryLayer}`. The file `src/genericmera.jl` implements functions that are independent of the exact type of MERA. `src/ternarylayer.jl` and `src/binarylayer.jl` provide the details of things like ascending/descending superoperators, that depend on the specific MERA. `src/tensortools.jl` supplies some functions for TensorKit objects such as `TensorMap`s and vector spaces that the rest of the package needs. | ||
|