Collection of codes with Tensors Networks. (work in progress)
Author: Vittorio Vitale
Acknowledgements: Alessandro Santini (https://github.com/alessandro-santini)
Packages Needed:
- Distributed (for parallel computing)
- TensorOperations
- KrylovKit
- LinearAlgebra
- LsqFit for Long-range Hamiltonians
- RandomMatrices for Haar random unitaries
- JLD2, FileIO and NPZ for handling file saving/reading
- ITensors for AutoMPO
Running "julia setup.jl" installs all the packages needed.
- Particular types of MPS:
- Random
- GHZ
- Null
- Functions for contractions of mps
- Functions for reshaping the mps moving the orthogonality center
- Functions for constructing reduced density matrices from mps
Tutorial:
- A=MPS() initializes an empty A MPS "object".
- Initialize!(A,*args) builds the particular MPS of choice.
- Ex: Initialize!(A,d,D,L) inizializes an empty MPS with
- bond dimension D,
- local dimension d,
- length L.
- Equivalently one can call MPS(*args)
- Ex: Initialize!(A,d,D,L) inizializes an empty MPS with
- Transverse Field Ising Chain
- XXZ for spin S=1/2
- XXZ for spin S=1
- Cluster Ising Model (XZX +YY)
- Long Range Ising model
- Modelization of [Brydges et al., Science (2019)] experiment
- J1-J2 model on a square lattice
Tutorial:
- W=MPO() initializes an empty W MPO "object".
- Initialize!(W,*args) builds the particular MPO of choice.
- Ex: Initialize!("XXZ S=1",W,J,h,L); inizializes an MPO with for the XXZ chain of length L with spin S=1:
- J and h are two parameters in the MPO,
- bond dimension and local dimension are automatically handled.
- Equivalently one can call MPO(s::String,*args)
- Ex: Initialize!("XXZ S=1",W,J,h,L); inizializes an MPO with for the XXZ chain of length L with spin S=1:
- one site dmrg
- two sites dmrg
- contraction routines needed
Tutorial:
- two_sites_dmrg!(A,W,sweeps;chimax=2048,tol=1e-15) calls the two-sites dmrg routine
- A is an initial mps that can be just called as A=MPS(),
- W is the MPO one wants to diagonalize,
- sweeps set the number of sweeps (back and forth) along the mps in the optimization,
- chimax set the maximum bond dimension if needed, default is chimax=128.
time_evo.jl contains all the necessary for doing a time-dependent variational principle algorithm or a trotterized evolution
- tdvp routines and contractions
- trotterized evolution given two qubits gates
- evolution with two qubits random unitaries
- measurement depending on the local magnetization
- routines for handling the evolution together with the tdvp in tdvp.jl
- routines for calculating observables on different trajectories in parallel