From 7e419aee266fa9bebf0cd112ebf8e75352680938 Mon Sep 17 00:00:00 2001 From: ysyapa Date: Fri, 18 Aug 2023 21:36:09 +0000 Subject: [PATCH] Increase krylovdim and check convergence --- Hamiltonian.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Hamiltonian.jl b/Hamiltonian.jl index 324346c..3be10f3 100644 --- a/Hamiltonian.jl +++ b/Hamiltonian.jl @@ -134,8 +134,8 @@ function eig(H::Hamiltonian{T}, levels::Int; resonances = !H.hermitian)::Tuple{V x₀ = CUDA.rand(Complex{T}, vectorDims(H)...) synchronize() end - evals, evecs, info = eigsolve(H, x₀, levels, resonances ? :LI : :SR; ishermitian = H.hermitian, tol = tolerance, krylovdim = levels * 2) - resonances || info.converged < levels && throw(error("Not enough convergence")) # don't check convergence for resonances + evals, evecs, info = eigsolve(H, x₀, levels, resonances ? :LI : :SR; ishermitian = H.hermitian, tol = tolerance, krylovdim = levels * 4) + info.converged < levels && throw(error("Not enough convergence")) if H.hermitian evals = real.(evals) end if H.mode == gpu_cutensor # to avoid possible GPU memory leak CUDA.reclaim()