An open-source tensor network library for MATLAB.
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
Table of Contents
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
This project depends on the following:
- MATLAB version R2020b or newer
- Parallel Computing Toolbox
- Deep Learning Toolbox
- A C++ compiler compatible with your MATLAB version for MEX-file compilation.
- Clone the repo into a local folder.
git clone https://github.com/quantumghent/TensorTrack.git mylocalfolder
- 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
.
- Precompile the necessary mex files. Within the MATLAB Command Window, call:
GetMD5
uninit
For examples, please refer to the Documentation
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:
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Don't forget to give the project a star! Thanks again!
Distributed under the MIT License. See LICENSE.txt
for more information.
Lukas Devos - lkdvos - [email protected]
Lander Burgelman - leburgel - [email protected]
Project Link: https://github.com/quantumghent/TensorTrack
This project has been made possible through the work of the following people: