|
144 | 144 | "reltol = $(sol_sse.reltol)\n" |
145 | 145 |
|
146 | 146 | # Time-Dependent Hamiltonian |
| 147 | + # ssesolve is slow to be run on CI. It is not removed from the test because it may be useful for testing in more powerful machines. |
| 148 | + |
147 | 149 | N = 10 |
148 | 150 | a = tensor(destroy(N), qeye(2)) |
149 | 151 | σm = tensor(qeye(N), sigmam()) |
150 | 152 | σz = tensor(qeye(N), sigmaz()) |
151 | 153 | ω = 1.0 |
152 | | - ωd = 1.05 |
| 154 | + ωd = 1.02 |
153 | 155 | Δ = ω - ωd |
154 | | - F = 0.01 |
| 156 | + F = 0.05 |
155 | 157 | g = 0.1 |
156 | | - γ = 0.01 |
157 | | - nth = 0.05 |
| 158 | + γ = 0.1 |
| 159 | + nth = 0.001 |
158 | 160 |
|
159 | 161 | # Time Evolution in the drive frame |
160 | 162 |
|
|
163 | 165 | e_ops = [a' * a, σz] |
164 | 166 |
|
165 | 167 | ψ0 = tensor(basis(N, 0), basis(2, 1)) |
166 | | - tlist = range(0, 10 / γ, 1000) |
| 168 | + tlist = range(0, 2 / γ, 1000) |
| 169 | + |
| 170 | + rng = MersenneTwister(12) |
167 | 171 |
|
168 | 172 | sol_se = sesolve(H, ψ0, tlist, e_ops = e_ops, progress_bar = Val(false)) |
169 | 173 | sol_me = mesolve(H, ψ0, tlist, c_ops, e_ops = e_ops, progress_bar = Val(false)) |
170 | | - sol_mc = mcsolve(H, ψ0, tlist, c_ops, ntraj = 500, e_ops = e_ops, progress_bar = Val(false)) |
171 | | - sol_sse = ssesolve(H, ψ0, tlist, c_ops, ntraj = 500, e_ops = e_ops, progress_bar = Val(false)) |
| 174 | + sol_mc = mcsolve(H, ψ0, tlist, c_ops, ntraj = 500, e_ops = e_ops, progress_bar = Val(false), rng = rng) |
| 175 | + # sol_sse = ssesolve(H, ψ0, tlist, c_ops, ntraj = 500, e_ops = e_ops, progress_bar = Val(false), rng = rng) |
172 | 176 |
|
173 | 177 | # Time Evolution in the lab frame |
174 | 178 |
|
|
182 | 186 |
|
183 | 187 | sol_se_td = sesolve(H_td, ψ0, tlist, e_ops = e_ops, progress_bar = Val(false), params = p) |
184 | 188 | sol_me_td = mesolve(H_td, ψ0, tlist, c_ops, e_ops = e_ops, progress_bar = Val(false), params = p) |
185 | | - sol_mc_td = mcsolve(H_td, ψ0, tlist, c_ops, ntraj = 500, e_ops = e_ops, progress_bar = Val(false), params = p) |
186 | | - sol_sse_td = ssesolve(H_td, ψ0, tlist, c_ops, ntraj = 500, e_ops = e_ops, progress_bar = Val(false), params = p) |
| 189 | + sol_mc_td = mcsolve( |
| 190 | + H_td, |
| 191 | + ψ0, |
| 192 | + tlist, |
| 193 | + c_ops, |
| 194 | + ntraj = 500, |
| 195 | + e_ops = e_ops, |
| 196 | + progress_bar = Val(false), |
| 197 | + params = p, |
| 198 | + rng = rng, |
| 199 | + ) |
| 200 | + # sol_sse_td = ssesolve(H_td, ψ0, tlist, c_ops, ntraj = 500, e_ops = e_ops, progress_bar = Val(false), params = p, rng = rng) |
187 | 201 |
|
188 | 202 | @test sol_se.expect ≈ sol_se_td.expect atol = 1e-6 * length(tlist) |
189 | 203 | @test sol_me.expect ≈ sol_me_td.expect atol = 1e-6 * length(tlist) |
190 | 204 | @test sol_mc.expect ≈ sol_mc_td.expect atol = 1e-2 * length(tlist) |
191 | | - @test sol_sse.expect ≈ sol_sse_td.expect atol = 1e-2 * length(tlist) |
| 205 | + # @test sol_sse.expect ≈ sol_sse_td.expect atol = 1e-2 * length(tlist) |
192 | 206 |
|
193 | 207 | H_td2 = QobjEvo(H_td) |
194 | 208 | L_td = QobjEvo(H_td, type = SuperOperator, f = liouvillian) |
|
204 | 218 | params = p, |
205 | 219 | ) |
206 | 220 | sol_me_td2 = mesolve(L_td, ψ0, tlist, c_ops, e_ops = e_ops, progress_bar = Val(false), params = p) |
207 | | - sol_mc_td2 = mcsolve(H_td2, ψ0, tlist, c_ops, ntraj = 500, e_ops = e_ops, progress_bar = Val(false), params = p) |
208 | | - sol_sse_td2 = |
209 | | - ssesolve(H_td2, ψ0, tlist, c_ops, ntraj = 500, e_ops = e_ops, progress_bar = Val(false), params = p) |
| 221 | + sol_mc_td2 = mcsolve( |
| 222 | + H_td2, |
| 223 | + ψ0, |
| 224 | + tlist, |
| 225 | + c_ops, |
| 226 | + ntraj = 500, |
| 227 | + e_ops = e_ops, |
| 228 | + progress_bar = Val(false), |
| 229 | + params = p, |
| 230 | + rng = rng, |
| 231 | + ) |
| 232 | + # sol_sse_td2 = |
| 233 | + # ssesolve(H_td2, ψ0, tlist, c_ops, ntraj = 500, e_ops = e_ops, progress_bar = Val(false), params = p, rng = rng) |
210 | 234 |
|
211 | 235 | @test sol_se.expect ≈ sol_se_td2.expect atol = 1e-6 * length(tlist) |
212 | 236 | @test sol_me.expect ≈ sol_me_td2.expect atol = 1e-6 * length(tlist) |
213 | 237 | @test sol_mc.expect ≈ sol_mc_td2.expect atol = 1e-2 * length(tlist) |
214 | | - @test sol_sse.expect ≈ sol_sse_td2.expect atol = 1e-2 * length(tlist) |
| 238 | + # @test sol_sse.expect ≈ sol_sse_td2.expect atol = 1e-2 * length(tlist) |
215 | 239 |
|
216 | 240 | @testset "Type Inference mesolve" begin |
217 | 241 | @inferred mesolveProblem(H, ψ0, tlist, c_ops, e_ops = e_ops, progress_bar = Val(false)) |
|
233 | 257 | end |
234 | 258 |
|
235 | 259 | @testset "Type Inference mcsolve" begin |
236 | | - @inferred mcsolveEnsembleProblem(H, ψ0, tlist, c_ops, ntraj = 500, e_ops = e_ops, progress_bar = Val(false)) |
237 | | - @inferred mcsolve(H, ψ0, tlist, c_ops, ntraj = 500, e_ops = e_ops, progress_bar = Val(false)) |
238 | | - @inferred mcsolve(H, ψ0, tlist, c_ops, ntraj = 500, progress_bar = Val(true)) |
239 | | - @inferred mcsolve(H, ψ0, [0, 10], c_ops, ntraj = 500, progress_bar = Val(false)) |
| 260 | + @inferred mcsolveEnsembleProblem( |
| 261 | + H, |
| 262 | + ψ0, |
| 263 | + tlist, |
| 264 | + c_ops, |
| 265 | + ntraj = 5, |
| 266 | + e_ops = e_ops, |
| 267 | + progress_bar = Val(false), |
| 268 | + rng = rng, |
| 269 | + ) |
| 270 | + @inferred mcsolve(H, ψ0, tlist, c_ops, ntraj = 5, e_ops = e_ops, progress_bar = Val(false), rng = rng) |
| 271 | + @inferred mcsolve(H, ψ0, tlist, c_ops, ntraj = 5, progress_bar = Val(true), rng = rng) |
| 272 | + @inferred mcsolve(H, ψ0, [0, 10], c_ops, ntraj = 5, progress_bar = Val(false), rng = rng) |
240 | 273 | @inferred mcsolve( |
241 | 274 | H, |
242 | 275 | tensor(Qobj(zeros(Int64, N)), Qobj([0, 1])), |
243 | 276 | tlist, |
244 | 277 | c_ops, |
245 | | - ntraj = 500, |
| 278 | + ntraj = 5, |
| 279 | + progress_bar = Val(false), |
| 280 | + rng = rng, |
| 281 | + ) |
| 282 | + @inferred mcsolve( |
| 283 | + H, |
| 284 | + ψ0, |
| 285 | + tlist, |
| 286 | + (a, a'), |
| 287 | + e_ops = (a' * a, a'), |
| 288 | + ntraj = 5, |
| 289 | + progress_bar = Val(false), |
| 290 | + rng = rng, |
| 291 | + ) # We test the type inference for Tuple of different types |
| 292 | + @inferred mcsolve( |
| 293 | + H_td, |
| 294 | + ψ0, |
| 295 | + tlist, |
| 296 | + c_ops, |
| 297 | + ntraj = 5, |
| 298 | + e_ops = e_ops, |
246 | 299 | progress_bar = Val(false), |
| 300 | + params = p, |
| 301 | + rng = rng, |
247 | 302 | ) |
248 | | - @inferred mcsolve(H, ψ0, tlist, (a, a'), e_ops = (a' * a, a'), ntraj = 500, progress_bar = Val(false)) # We test the type inference for Tuple of different types |
249 | | - @inferred mcsolve(H_td, ψ0, tlist, c_ops, ntraj = 500, e_ops = e_ops, progress_bar = Val(false), params = p) |
250 | 303 | end |
251 | 304 |
|
252 | 305 | @testset "Type Inference ssesolve" begin |
|
256 | 309 | ψ0, |
257 | 310 | tlist, |
258 | 311 | c_ops_tuple, |
259 | | - ntraj = 500, |
| 312 | + ntraj = 5, |
260 | 313 | e_ops = e_ops, |
261 | 314 | progress_bar = Val(false), |
| 315 | + rng = rng, |
262 | 316 | ) |
263 | | - @inferred ssesolve(H, ψ0, tlist, c_ops_tuple, ntraj = 500, e_ops = e_ops, progress_bar = Val(false)) |
264 | | - @inferred ssesolve(H, ψ0, tlist, c_ops_tuple, ntraj = 500, progress_bar = Val(true)) |
265 | | - @inferred ssesolve(H, ψ0, [0, 10], c_ops_tuple, ntraj = 500, progress_bar = Val(false)) |
| 317 | + @inferred ssesolve( |
| 318 | + H, |
| 319 | + ψ0, |
| 320 | + tlist, |
| 321 | + c_ops_tuple, |
| 322 | + ntraj = 5, |
| 323 | + e_ops = e_ops, |
| 324 | + progress_bar = Val(false), |
| 325 | + rng = rng, |
| 326 | + ) |
| 327 | + @inferred ssesolve(H, ψ0, tlist, c_ops_tuple, ntraj = 5, progress_bar = Val(true), rng = rng) |
| 328 | + @inferred ssesolve(H, ψ0, [0, 10], c_ops_tuple, ntraj = 5, progress_bar = Val(false), rng = rng) |
266 | 329 | @inferred ssesolve( |
267 | 330 | H, |
268 | 331 | tensor(Qobj(zeros(Int64, N)), Qobj([0, 1])), |
269 | 332 | tlist, |
270 | 333 | c_ops_tuple, |
271 | | - ntraj = 500, |
| 334 | + ntraj = 5, |
272 | 335 | progress_bar = Val(false), |
| 336 | + rng = rng, |
273 | 337 | ) |
274 | | - @inferred ssesolve(H, ψ0, tlist, c_ops_tuple, ntraj = 500, e_ops = (a' * a, a'), progress_bar = Val(false)) # We test the type inference for Tuple of different types |
| 338 | + @inferred ssesolve( |
| 339 | + H, |
| 340 | + ψ0, |
| 341 | + tlist, |
| 342 | + c_ops_tuple, |
| 343 | + ntraj = 5, |
| 344 | + e_ops = (a' * a, a'), |
| 345 | + progress_bar = Val(false), |
| 346 | + rng = rng, |
| 347 | + ) # We test the type inference for Tuple of different types |
275 | 348 | @inferred ssesolve( |
276 | 349 | H_td, |
277 | 350 | ψ0, |
278 | 351 | tlist, |
279 | 352 | c_ops_tuple, |
280 | | - ntraj = 500, |
| 353 | + ntraj = 5, |
281 | 354 | e_ops = e_ops, |
282 | 355 | progress_bar = Val(false), |
283 | 356 | params = p, |
| 357 | + rng = rng, |
284 | 358 | ) |
285 | 359 | end |
286 | 360 |
|
|
0 commit comments