|
11 | 11 | psi0 = kron(fock(N, 0), fock(2, 0)) |
12 | 12 | t_l = LinRange(0, 1000, 1000) |
13 | 13 | e_ops = [a_d * a] |
14 | | - sol = sesolve(H, psi0, t_l, e_ops = e_ops, progress_bar = Val(false)) |
| 14 | + prob = sesolveProblem(H, psi0, t_l, e_ops = e_ops, progress_bar = Val(false)) |
| 15 | + sol = sesolve(prob) |
15 | 16 | sol2 = sesolve(H, psi0, t_l, progress_bar = Val(false)) |
16 | 17 | sol3 = sesolve(H, psi0, t_l, e_ops = e_ops, saveat = t_l, progress_bar = Val(false)) |
17 | 18 | sol_string = sprint((t, s) -> show(t, "text/plain", s), sol) |
| 19 | + @test prob.f.f isa MatrixOperator |
18 | 20 | @test sum(abs.(sol.expect[1, :] .- sin.(η * t_l) .^ 2)) / length(t_l) < 0.1 |
19 | 21 | @test length(sol.times) == length(t_l) |
20 | 22 | @test length(sol.states) == 1 |
|
55 | 57 | e_ops = [a_d * a] |
56 | 58 | psi0 = basis(N, 3) |
57 | 59 | t_l = LinRange(0, 100, 1000) |
58 | | - sol_me = mesolve(H, psi0, t_l, c_ops, e_ops = e_ops, progress_bar = Val(false)) |
| 60 | + prob_me = mesolveProblem(H, psi0, t_l, c_ops, e_ops = e_ops, progress_bar = Val(false)) |
| 61 | + sol_me = mesolve(prob_me) |
59 | 62 | sol_me2 = mesolve(H, psi0, t_l, c_ops, progress_bar = Val(false)) |
60 | 63 | sol_me3 = mesolve(H, psi0, t_l, c_ops, e_ops = e_ops, saveat = t_l, progress_bar = Val(false)) |
| 64 | + prob_mc = mcsolveProblem(H, psi0, t_l, c_ops, e_ops = e_ops, progress_bar = Val(false)) |
61 | 65 | sol_mc = mcsolve(H, psi0, t_l, c_ops, ntraj = 500, e_ops = e_ops, progress_bar = Val(false)) |
62 | 66 | sol_mc2 = mcsolve( |
63 | 67 | H, |
|
93 | 97 | sol_me_string = sprint((t, s) -> show(t, "text/plain", s), sol_me) |
94 | 98 | sol_mc_string = sprint((t, s) -> show(t, "text/plain", s), sol_mc) |
95 | 99 | sol_sse_string = sprint((t, s) -> show(t, "text/plain", s), sol_sse) |
| 100 | + @test prob_me.f.f isa MatrixOperator |
| 101 | + @test prob_mc.f.f isa ScaledOperator # TODO: can be optimized as MatrixOperator |
96 | 102 | @test sum(abs.(sol_mc.expect .- sol_me.expect)) / length(t_l) < 0.1 |
97 | 103 | @test sum(abs.(sol_mc2.expect .- sol_me.expect)) / length(t_l) < 0.1 |
98 | 104 | @test sum(abs.(vec(expect_mc_states_mean) .- vec(sol_me.expect))) / length(t_l) < 0.1 |
|
230 | 236 |
|
231 | 237 | @testset "Type Inference mesolve" begin |
232 | 238 | coef(p, t) = exp(-t) |
233 | | - ad_t = QobjEvo(((a', coef),)) |
| 239 | + ad_t = QobjEvo(a', coef) |
234 | 240 | @inferred mesolveProblem(H, ψ0, tlist, c_ops, e_ops = e_ops, progress_bar = Val(false)) |
235 | 241 | @inferred mesolveProblem(H, ψ0, [0, 10], c_ops, e_ops = e_ops, progress_bar = Val(false)) |
236 | 242 | @inferred mesolveProblem( |
|
0 commit comments