/TensorTrack

Tensor network algorithms in MATLAB

Primary LanguageMATLABMIT LicenseMIT

Documentation Status CI codecov License: MIT DOI


Logo

An open-source tensor network library for MATLAB.
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Contributing
  5. License
  6. Contact
  7. Acknowledgments

About The Project

This is a package which aims to efficiently implement the various elementary algorithms that arise in the context of tensor networks. Currently, this includes:

  • Various basic and utility tensor operations, such as creation routines, various linear algebra routines (norms, traces, overlaps, ...), index permutations, ...
  • Tensor contraction routines, both pairwise as well as through a network contraction routine.
  • Tensor factorizations, such as QR, LQ and polar decompositions, eigendecompositions and singular value decompositions.
  • Solver algorithms for eigen systems and linear systems.

Additionally, these tensors support a general global symmetries, in which case both memory and CPU usage are optimized. The framework is able to support both Abelian and non-Abelian symmetries, as well as symmetry groups with multiplicities, which can have bosonic or fermionic braiding rules. The design of the algorithms is chosen such that the inclusion of symmetries should not alter the code after the creation of the tensors. Currently, the following symmetries are implemented:

  • Z(N)
  • U1
  • A4
  • SU(N)
  • O2
  • Fermionic Z2
  • Direct product groups

(back to top)

Getting Started

Requirements

This project depends on the following:

Installation

  1. Clone the repo into a local folder.
git clone https://github.com/quantumghent/TensorTrack.git mylocalfolder
  1. Add the folder and subfolders to your MATLAB path.
  • Via the MATLAB UI: Home > Environment > Set Path > Add with Subfolders > mylocalfolder/src
  • Via the MATLAB Command Window:
    addpath(genpath('mylocalfolder/src'))
    

By default, the path is reset every time you close the application. You can permanently add this package to the path by calling savepath.

  1. Precompile the necessary mex files. Within the MATLAB Command Window, call:
GetMD5
uninit

(back to top)

Usage

For examples, please refer to the Documentation

(back to top)

Contributing

Contributions as well as feature requests are greatly appreciated.

If you have a suggestion that would make this project better, please do not hesitate to open an issue with the tag "enhancement". Alternatively, you could also fork the repo and create a pull request:

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Don't forget to give the project a star! Thanks again!

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

Lukas Devos - lkdvos - Lukas.Devos@ugent.be

Lander Burgelman - leburgel - Lander.Burgelman@ugent.be

Project Link: https://github.com/quantumghent/TensorTrack

(back to top)

Acknowledgments

This project has been made possible through the work of the following people:

(back to top)