DMRG

ITensors.dmrgFunction
dmrg(H::MPO,psi0::MPS,sweeps::Sweeps;kwargs...)

Use the density matrix renormalization group (DMRG) algorithm to optimize a matrix product state (MPS) such that it is the eigenvector of lowest eigenvalue of a Hermitian matrix H, represented as a matrix product operator (MPO). The MPS psi0 is used to initialize the MPS to be optimized, and the sweeps object determines the parameters used to control the DMRG algorithm.

Returns:

  • energy::Float64 - eigenvalue of the optimized MPS
  • psi::MPS - optimized MPS

Optional keyword arguments:

  • outputlevel::Int = 1 - larger outputlevel values make DMRG print more information and 0 means no output
  • observer - object implementing the Observer interface which can perform measurements and stop DMRG early
  • write_when_maxdim_exceeds::Int - when the allowed maxdim exceeds this value, begin saving tensors to disk to free memory in large calculations
source
dmrg(Hs::Vector{MPO},psi0::MPS,sweeps::Sweeps;kwargs...)

Use the density matrix renormalization group (DMRG) algorithm to optimize a matrix product state (MPS) such that it is the eigenvector of lowest eigenvalue of a Hermitian matrix H. The MPS psi0 is used to initialize the MPS to be optimized, and the sweeps object determines the parameters used to control the DMRG algorithm.

This version of dmrg accepts a representation of H as a Vector of MPOs, Hs = [H1,H2,H3,...] such that H is defined as H = H1+H2+H3+... Note that this sum of MPOs is not actually computed; rather the set of MPOs [H1,H2,H3,..] is efficiently looped over at each step of the DMRG algorithm when optimizing the MPS.

Returns:

  • energy::Float64 - eigenvalue of the optimized MPS
  • psi::MPS - optimized MPS
source
dmrg(H::MPO,Ms::Vector{MPS},psi0::MPS,sweeps::Sweeps;kwargs...)

Use the density matrix renormalization group (DMRG) algorithm to optimize a matrix product state (MPS) such that it is the eigenvector of lowest eigenvalue of a Hermitian matrix H, subject to the constraint that the MPS is orthogonal to each of the MPS provided in the Vector Ms. The orthogonality constraint is approximately enforced by adding to H terms of the form w|M1><M1| + w|M2><M2| + ... where Ms=[M1,M2,...] and w is the "weight" parameter, which can be adjusted through the optional weight keyword argument. The MPS psi0 is used to initialize the MPS to be optimized, and the sweeps object determines the parameters used to control the DMRG algorithm.

Returns:

  • energy::Float64 - eigenvalue of the optimized MPS
  • psi::MPS - optimized MPS
source