From c66b57c349e900f51fbc65b40b584339f87ebf07 Mon Sep 17 00:00:00 2001 From: christoph Date: Mon, 22 Jul 2024 16:02:02 +0200 Subject: [PATCH] properly pass the kwarg rates to the function spectrum --- src/timecorrelations.jl | 12 +++++++----- test/test_timecorrelations.jl | 14 +++++++++++++- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/timecorrelations.jl b/src/timecorrelations.jl index d156275d..fbf1e5da 100644 --- a/src/timecorrelations.jl +++ b/src/timecorrelations.jl @@ -132,13 +132,14 @@ function spectrum(omega_samplepoints, H::AbstractOperator, J, op; rho0=tensor(basisstate(H.basis_l, 1), dagger(basisstate(H.basis_r, 1))), tol=1e-4, - rho_ss=steadystate.master(H, J; tol=tol, rho0=rho0)[end][end], + rates=nothing, + rho_ss=steadystate.master(H, J; rates=rates, tol=tol, rho0=rho0)[end][end], kwargs...) domega = minimum(diff(omega_samplepoints)) dt = 2*pi/abs(omega_samplepoints[end] - omega_samplepoints[1]) T = 2*pi/domega tspan = [0.:dt:T;] - exp_values = correlation(tspan, rho_ss, H, J, dagger(op), op, kwargs...) + exp_values = correlation(tspan, rho_ss, H, J, dagger(op), op; rates=rates, kwargs...) S = 2dt.*fftshift(real(fft(exp_values))) return omega_samplepoints, S end @@ -146,16 +147,17 @@ end function spectrum(H::AbstractOperator, J, op; rho0=tensor(basisstate(H.basis_l, 1), dagger(basisstate(H.basis_r, 1))), tol=1e-4, - rho_ss=steadystate.master(H, J; tol=tol)[end][end], + rates=nothing, + rho_ss=steadystate.master(H, J; rates=rates, tol=tol)[end][end], kwargs...) - tspan, exp_values = correlation(rho_ss, H, J, dagger(op), op, tol=tol, kwargs...) + tspan, exp_values = correlation(rho_ss, H, J, dagger(op), op; rates=rates, tol=tol, kwargs...) dtmin = minimum(diff(tspan)) T = tspan[end] - tspan[1] tspan = Float64[0.:dtmin:T;] n = length(tspan) omega = mod(n, 2) == 0 ? [-n/2:n/2-1;] : [-(n-1)/2:(n-1)/2;] omega .*= 2pi/T - return spectrum(omega, H, J, op; tol=tol, rho_ss=rho_ss, kwargs...) + return spectrum(omega, H, J, op; tol=tol, rates=rates, rho_ss=rho_ss, kwargs...) end diff --git a/test/test_timecorrelations.jl b/test/test_timecorrelations.jl index a421a911..d9de6f6c 100644 --- a/test/test_timecorrelations.jl +++ b/test/test_timecorrelations.jl @@ -72,4 +72,16 @@ omegaFFT, SFFT = timecorrelations.correlation2spectrum(tspan, exp_values) tspan[5] = tspan[4] @test_throws ArgumentError timecorrelations.correlation2spectrum(tspan, exp_values) -end # testset +# tests kwarg rates +J5 = [embed(basis, 1, sm), embed(basis, 1, sp), embed(basis, 2, destroy(fockbasis))] +rates5 = [γ, 0.5γ, κ] +exp_values5 = timecorrelations.correlation(tspan, ρ₀, H, J5, dagger(op), op; rates=rates5) +@test abs(exp_values[end] - exp_values5[end] ) < 1e-8 + +omega5, S5 = timecorrelations.spectrum(omega_sample, H, J5, op; rho_ss=ρ₀, rates=rates5) +@test abs(sum(S .- S5)) < 1e-8 + +omega5_2, S5_2 = timecorrelations.spectrum(H, J5, op; rates=rates, tol=1e-3) +@test abs(sum(S2 .- S5_2)) < 1e-8 + +end # testset \ No newline at end of file