Perform local updates
At the lowest-level of abstraction, TenNetLib.jl allows for updating the StateEnvsTTN
for each sites manually.
Skip this part if you want to avoid lower-level abstraction.
TenNetLib.update_position!
— Methodfunction update_position!(sysenv::StateEnvsTTN, solver, node::Int2;
time_step::Union{Float64, ComplexF64, Nothing},
normalize::Bool,
maxdim::Int,
mindim::Int,
cutoff::Float64,
svd_alg::String,
kwargs...)
Moves the orthogonality center to pos
and update StateEnvsTTN at position pos
by solver
.
Arguments:
sysenv::StateEnvsTTN
solver
: Solver for update. Currently onlyeig_solver
is supported.pos::Int
: Position of the node to be updated.
Named arguments and their default values:
time_step::Union{Float64, ComplexF64, Nothing} = nothing
: Time step for future functionality.normalize::Bool = true
: Whether to normalize after update.maxdim::Int = typemax(Int)
: Maximum bond dimension after SVD truncation.mindim::Int = 1
: Minimum bond dimension after SVD truncation.cutoff::Float64 = Float64_threshold()
: Cutoff for SVD truncation.svd_alg::String = "divide_and_conquer"
.
Named arguments for solver
and their default values:
See the documentation of KrylovKit.jl.
ishermitian::Bool = true
.solver_tol::Float64 = 1E-14
.solver_krylovdim::Int = 5
.solver_maxiter::Int = 2
.solver_outputlevel::Int = 0
: Seeverbosity
in KrylovKit.jl.solver_eager::Bool = false
.solver_check_convergence::Bool = false
.
Return values:
::Float64
: Energy.
TenNetLib.jl implements the subspace expansion method described in SciPost Phys. Lect. Notes 8 (2019) to increase the bond dimension between two neighboring nodes.
TenNetLib.subspace_expand!
— Methodfunction subspace_expand!(psi::TTN, node::Int2, nextnode::Int2,
max_expand_dim::Int, noise::Float64)
Enlarges the bond domension between node
and nextnode
by max_expand_dim
using the subspace expansion. The parameter noise
controls stength of the perturbation.