Projective Hamiltonian
Local projective Hamiltonian for DMRG or TDVP sweeps.
FiniteMPS.AbstractProjectiveHamiltonian
— Type abstract type AbstractProjectiveHamiltonian
Abstract type of all projective Hamiltonian.
FiniteMPS.SimpleProjectiveHamiltonian
— Typemutable 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
.
FiniteMPS.CompositeProjectiveHamiltonian
— Typemutable 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
.
FiniteMPS.IdentityProjectiveHamiltonian
— Typestruct 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
.
FiniteMPS.action!
— Functionaction!(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.
FiniteMPS.action
— Functionaction(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.