Methods and algorithms

Time evolution methods

TimeEvolutionPEPO.TEBDType
mutable struct TEBD{Alg<:TimeEvolutionPEPO.AbstractTruncationScheme} <: TimeEvolutionPEPO.AbstractTEBD

The time-evolving block decimation method for nearest-neighbour gate-based evolution.

FIELDS

  • compresstol::Float64: (default eps()) Peform a low-rank approximation according to this tolerance.

  • alg::TimeEvolutionPEPO.AbstractTruncationScheme: (default SimpleUpdate()) The truncation algorithm to be used.

  • verbose::Bool: deprec

See also: AxialTEBD, GlobalTEBD

source
TimeEvolutionPEPO.AxialTEBDType
struct AxialTEBD{TAlg} <: TimeEvolutionPEPO.AbstractTEBD

Axial version of TEBD formed from a sequence of Trotter gates in a staircase patterm split and contracted into a matrix product operator. Maintains translational invariance. Fields are the same as in TEBD.

See also: TEBD, GlobalTEBD

source
TimeEvolutionPEPO.GlobalTEBDType
struct GlobalTEBD{TAlg} <: TimeEvolutionPEPO.AbstractTEBD

Global version of TEBD formed from contracting both the horizontal and vertical matrix product operators from AxialTEBD together to from tensor network operator with 4 virtual bonds. Fields are the same as in TEBD.

See also: TEBD, AxialTEBD

source

Bond truncation

TimeEvolutionPEPO.SVDUType
mutable struct SVDU{G<:Union{NoGauge, MCF}} <: TimeEvolutionPEPO.AbstractSimpleTruncationScheme

The singular value decomposition method. No bond weights are absorbed when truncating resulting in much worse truncations than would be obtained using simple update, however this method does not require matrix inversions.

Fields

  • gauge::Union{NoGauge, MCF}: (default NoGauge()) Gauge fixing to be applied at the end of each time step.

  • reduce::Symbol: (default :pre) When to perform the rank reduction. Can be :pre, to do so before the application of each local gate, or :post for after.

  • zeta::Float64: (default Inf) Level of correlation length damping to apply after computing the bond weight.

See also: SimpleUpdate, NTU, FET.

source
TimeEvolutionPEPO.SimpleUpdateType
mutable struct SimpleUpdate{G<:Union{NoGauge, MCF}} <: TimeEvolutionPEPO.AbstractSimpleTruncationScheme

The simple update method (SU). At each truncation, the bond weights of the tensor network are absorbed, resulting improved truncations over SVDU. This method is fast and robust, but may provide inaccurate results when the correlation length of the state becomes large.

Fields

  • gauge::Union{NoGauge, MCF}: (default NoGauge()) Gauge fixing to be applied at the end of each time step.

  • reduce::Symbol: (default :pre) When to perform the rank reduction. Can be :pre, to do so before the application of each local gate, or :post for after.

  • zeta::Float64: (default Inf) Level of correlation length damping to apply after computing the bond weight.

See also: SVDU, NTU, FET.

source
TimeEvolutionPEPO.NTUType
mutable struct NTU{OAlg<:TimeEvolutionPEPO.AbstractIsometryOptimisation, G<:Union{NoGauge, MCF}} <: TimeEvolutionPEPO.AbstractTruncationScheme

The neighbourhood tensor update method. Performs worse than FET, however uses an environment that is Hermitian exactly, which may improve stabilty.

Fields

  • gauge::Union{NoGauge, MCF}: (default NoGauge()) Gauge fixing to be applied at the end of each time step.

  • optalg::TimeEvolutionPEPO.AbstractIsometryOptimisation: (default DZM()) Optimisation subroutine to employ.

  • rankreduce::Bool: (default true) Whether to use a rank reduction to obtain an initial guess for the isometries.

  • zeta::Float64: (default Inf) Level of correlation length damping to apply after computing the bond weight.

See also: SimpleUpdate, SVDU, FET.

source
TimeEvolutionPEPO.FETType
mutable struct FET{BAlg<:TensorRenormalizationGroups.AbstractBoundaryAlgorithm, OAlg<:TimeEvolutionPEPO.AbstractIsometryOptimisation, G<:Union{NoGauge, MCF}} <: TimeEvolutionPEPO.AbstractTruncationScheme

The full environment truncation method.

Fields

  • alg::TensorRenormalizationGroups.AbstractBoundaryAlgorithm

  • gauge::Union{NoGauge, MCF}: (default NoGauge()) Gauge fixing to be applied at the end of each time step.

  • optalg::TimeEvolutionPEPO.AbstractIsometryOptimisation: (default EVB()) Optimisation subroutine to employ.

  • rankreduce::Bool: (default false) Whether to use a rank reduction to obtain an initial guess for the isometries.

  • zeta::Float64: (default Inf) Level of correlation length damping to apply after computing the bond weight.

See also: SimpleUpdate, SVDU, NTU.

source

Isometry Optimization