Projective Hamiltonian
Local projective Hamiltonian for DMRG or TDVP sweeps.
FiniteMPS.AbstractProjectiveHamiltonian — Type abstract type AbstractProjectiveHamiltonianAbstract type of all projective Hamiltonian.
FiniteMPS.SimpleProjectiveHamiltonian — Typemutable struct SimpleProjectiveHamiltonian{N} <: AbstractProjectiveHamiltonian
El::LocalLeftTensor
Er::LocalRightTensor
H::NTuple{N, AbstractLocalOperator}
cache::Vector{<:AbstractTensorMap}
endConcrete type of simple (i.e. El, H and Er define a single interaction term) N-site projective Hamiltonian.
Fields
El::LocalLeftTensor
Er::LocalRightTensorLeft 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
endConcrete 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₀::Float64The 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}
endSpecial type to deal with the cases which satisfy ⟨Ψ₁|Id|Ψ₂⟩ == ⟨Ψ₁|Ψ₂⟩, thus the environment is a 2-layer simple one.
Fields
El::SimpleLeftTensor
Er::SimpleRightTensorLeft 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) -> xIn-place action of the projective Hamiltonian, write PH * x to x.
action!(y::AbstractMPSTensor,
x::AbstractMPSTensor,
PH::AbstractProjectiveHamiltonian,
TO::Union{TimerOutput, Nothing} = nothing) -> yIn-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 * xCompute the action of the projective Hamiltonian on the MPS tensor PH * x with x unmodified.