From d014b07135ce907c0d9ad536074a66af0eea6cb1 Mon Sep 17 00:00:00 2001 From: "Viral B. Shah" Date: Thu, 31 Dec 2020 15:39:34 -0500 Subject: [PATCH] Fix #118 --- Project.toml | 4 ++-- test/runtests.jl | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/Project.toml b/Project.toml index 09b9ebe..3306ee7 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "Arpack" uuid = "7d9fca2a-8960-54d3-9f78-7d1dccf2cb97" -version = "0.5.0" +version = "0.5.1" [deps] Arpack_jll = "68821587-b530-5797-8361-c406ea357684" @@ -9,7 +9,7 @@ LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" Logging = "56ddb016-857b-54e1-b83d-db4d58db5568" [compat] -Arpack_jll = "3.8" +Arpack_jll = "~3.5" julia = "1.3" [extras] diff --git a/test/runtests.jl b/test/runtests.jl index 6500efb..64f1709 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -333,3 +333,45 @@ let A = [1. 0. 0.; 0. 0. 0.; 0. 0. 0.] @test U'U ≈ I @test V'V ≈ I end + +# Problematic example from #118 +@testset "issue 118" begin + ωc = 1.2 + ωa = 0.9 + γ = 0.5 + κ = 1.1 + + sz = sparse(ComplexF64[1 0; 0 -1]) + sp = sparse(ComplexF64[0 1; 0 0]) + sm = sparse(collect(sp')) + ids = one(sz) + + a = sparse(diagm(1 => ComplexF64[sqrt(i) for i=1:10])) + ida = one(a) + + Ha = kron(ida, 0.5*ωa*sz) + Hc = kron(ωc*a'*a, ids) + Hint = sparse(kron(a', sm) + kron(a, sp)) + H = Ha + Hc + Hint + + Ja = kron(ida, sqrt(γ)*sm) + Jc = kron(sqrt(κ)*a, ids) + J = sqrt(2) .* [Ja, Jc] + Jdagger = adjoint.(J) + rates = 0.5 .* ones(length(J)) + + spre(x) = kron(one(x), x) + spost(x) = kron(permutedims(x), one(x)) + + L = spre(-1im*H) + spost(1im*H) + for i=1:length(J) + jdagger_j = rates[i]/2*Jdagger[i]*J[i] + L -= spre(jdagger_j) + spost(jdagger_j) + L += spre(rates[i]*J[i]) * spost(Jdagger[i]) + end + + for _=1:100 + d, rest = eigs(L, nev=2, which=:LR) + @test abs(d[1]) < 1e-9 + end +end