Projective Hamiltonian

Local projective Hamiltonian for DMRG or TDVP sweeps.

FiniteMPS.SimpleProjectiveHamiltonianType
mutable struct SimpleProjectiveHamiltonian{N} <: AbstractProjectiveHamiltonian
	El::LocalLeftTensor
 	Er::LocalRightTensor
 	H::NTuple{N, AbstractLocalOperator}
 	cache::Vector{<:AbstractTensorMap}
end

Concrete type of simple (i.e. El, H and Er define a single interaction term) N-site projective Hamiltonian.

Fields

El::LocalLeftTensor
Er::LocalRightTensor

Left and right environment tensors.

H::NTuple{N, AbstractLocalOperator}

The N local operators in Hamiltonian that define the interaction term.

cache::Vector{<:AbstractTensorMap}

A cache to store the intermediate tensors when the projective Hamiltonian acts on a state, which will be freed when the object is finalized.

Constructors

SimpleProjectiveHamiltonian(El::LocalLeftTensor, Er::LocalRightTensor, H::AbstractLocalOperator...)

Construct a simple projective Hamiltonian from El, Er and H, where N is automatically deduced from the length of H.

source
FiniteMPS.CompositeProjectiveHamiltonianType
mutable struct CompositeProjectiveHamiltonian{L} <: AbstractProjectiveHamiltonian
	PH::Vector{SimpleProjectiveHamiltonian{L}}
	E₀::Float64
end

Concrete type of composite projective Hamiltonian, which is a collection of simple projective Hamiltonians.

Fields

PH::Vector{SimpleProjectiveHamiltonian{L}}

A vector that stores all contained simple projective Hamiltonians.

E₀::Float64

The energy offset. The projective Hamiltonian actually acts on a state as H - E₀, usually used to avoid numerical unstableness in Krylov methods.

Constructors

CompositeProjectiveHamiltonian(El::SparseLeftTensor, Er::SparseRightTensor, H::NTuple{L, SparseMPOTensor}, E₀::Float64 = 0.0)

Construct a composite projective Hamiltonian from the sparse left and right tensors El, Er and H, which directly provided by a SparseEnvironment.

source
FiniteMPS.IdentityProjectiveHamiltonianType
struct IdentityProjectiveHamiltonian{N} <: AbstractProjectiveHamiltonian
	El::SimpleLeftTensor
	Er::SimpleRightTensor
	si::Vector{Int64}
end

Special type to deal with the cases which satisfy ⟨Ψ₁|Id|Ψ₂⟩ == ⟨Ψ₁|Ψ₂⟩, thus the environment is a 2-layer simple one.

Fields

El::SimpleLeftTensor
Er::SimpleRightTensor

Left and right environment tensors.

si::Vector{Int64}

A length-2 vector to label the starting and ending sites of the projective Hamiltonian.

Constructors

IdentityProjectiveHamiltonian(El::SimpleLeftTensor, Er::SimpleRightTensor, si::Vector{Int64})

Construct a projective Hamiltonian that corresponds to an identity operator, where the sites are deduced from si.

source
FiniteMPS.action!Function
action!(x::AbstractMPSTensor,
	PH::AbstractProjectiveHamiltonian,
	TO::Union{TimerOutput, Nothing} = nothing) -> x

In-place action of the projective Hamiltonian, write PH * x to x.

action!(y::AbstractMPSTensor,
	x::AbstractMPSTensor,
	PH::AbstractProjectiveHamiltonian,
	TO::Union{TimerOutput, Nothing} = nothing) -> y

In-place action of the projective Hamiltonian, write PH * x to y with x unmodified.

source
FiniteMPS.actionFunction
action(x::AbstractMPSTensor,
	PH::AbstractProjectiveHamiltonian,
	TO::Union{TimerOutput, Nothing} = nothing) -> PH * x

Compute the action of the projective Hamiltonian on the MPS tensor PH * x with x unmodified.

source