Skip to content

Commit 81afcb6

Browse files
Minor changes to dfd_mesolve
1 parent ef8bf32 commit 81afcb6

File tree

1 file changed

+28
-27
lines changed

1 file changed

+28
-27
lines changed

src/time_evolution/time_evolution_dynamical.jl

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,19 @@ function _reduce_dims(
88
sel,
99
reduce,
1010
) where {T,N,DT<:Integer}
11-
rd = dims
12-
nd = length(rd)
13-
rd_new = zero(rd)
14-
rd_new[sel] .= reduce
15-
@. rd_new = rd - rd_new
11+
nd = length(dims)
12+
dims_new = zero(dims)
13+
dims_new[sel] .= reduce
14+
@. dims_new = dims - dims_new
1615

1716
if nd == 1
18-
ρmat = similar(QO, rd_new[1], rd_new[1])
19-
copyto!(ρmat, view(QO, 1:rd_new[1], 1:rd_new[1]))
17+
ρmat = similar(QO, dims_new[1], dims_new[1])
18+
copyto!(ρmat, view(QO, 1:dims_new[1], 1:dims_new[1]))
2019
else
21-
ρmat = reshape(QO, reverse!(repeat(rd, 2))...)
22-
ρmat2 = similar(QO, reverse!(repeat(rd_new, 2))...)
23-
copyto!(ρmat2, view(ρmat, reverse!(repeat([1:n for n in rd_new], 2))...))
24-
ρmat = reshape(ρmat2, prod(rd_new), prod(rd_new))
20+
ρmat = reshape(QO, reverse(vcat(dims, dims))...)
21+
ρmat2 = similar(QO, reverse(vcat(dims_new, dims_new))...)
22+
copyto!(ρmat2, view(ρmat, reverse!(repeat([1:n for n in dims_new], 2))...))
23+
ρmat = reshape(ρmat2, prod(dims_new), prod(dims_new))
2524
end
2625

2726
return ρmat
@@ -33,26 +32,25 @@ function _increase_dims(
3332
sel,
3433
increase,
3534
) where {T,N,DT<:Integer}
36-
rd = dims
37-
nd = length(rd)
38-
rd_new = MVector(zero(rd)) # Mutable SVector
39-
rd_new[sel] .= increase
40-
@. rd_new = rd + rd_new
35+
nd = length(dims)
36+
dims_new = MVector(zero(dims)) # Mutable SVector
37+
dims_new[sel] .= increase
38+
@. dims_new = dims + dims_new
4139

4240
if nd == 1
43-
ρmat = similar(QO, rd_new[1], rd_new[1])
44-
fill!(selectdim(ρmat, 1, rd[1]+1:rd_new[1]), 0)
45-
fill!(selectdim(ρmat, 2, rd[1]+1:rd_new[1]), 0)
46-
copyto!(view(ρmat, 1:rd[1], 1:rd[1]), QO)
41+
ρmat = similar(QO, dims_new[1], dims_new[1])
42+
fill!(selectdim(ρmat, 1, dims[1]+1:dims_new[1]), 0)
43+
fill!(selectdim(ρmat, 2, dims[1]+1:dims_new[1]), 0)
44+
copyto!(view(ρmat, 1:dims[1], 1:dims[1]), QO)
4745
else
48-
ρmat2 = similar(QO, reverse!(repeat(rd_new, 2))...)
49-
ρmat = reshape(QO, reverse!(repeat(rd, 2))...)
46+
ρmat2 = similar(QO, reverse(vcat(dims_new, dims_new))...)
47+
ρmat = reshape(QO, reverse(vcat(dims, dims))...)
5048
for i in eachindex(sel)
51-
fill!(selectdim(ρmat2, nd - sel[i] + 1, rd[sel[i]]+1:rd_new[sel[i]]), 0)
52-
fill!(selectdim(ρmat2, 2 * nd - sel[i] + 1, rd[sel[i]]+1:rd_new[sel[i]]), 0)
49+
fill!(selectdim(ρmat2, nd - sel[i] + 1, dims[sel[i]]+1:dims_new[sel[i]]), 0)
50+
fill!(selectdim(ρmat2, 2 * nd - sel[i] + 1, dims[sel[i]]+1:dims_new[sel[i]]), 0)
5351
end
54-
copyto!(view(ρmat2, reverse!(repeat([1:n for n in rd], 2))...), ρmat)
55-
ρmat = reshape(ρmat2, prod(rd_new), prod(rd_new))
52+
copyto!(view(ρmat2, reverse!(repeat([1:n for n in dims], 2))...), ρmat)
53+
ρmat = reshape(ρmat2, prod(dims_new), prod(dims_new))
5654
end
5755

5856
return ρmat
@@ -131,7 +129,9 @@ function _DFDIncreaseReduceAffect!(integrator)
131129

132130
resize!(integrator, size(L, 1))
133131
copyto!(integrator.u, mat2vec(ρt))
134-
return integrator.p = merge(internal_params, (L = L, e_ops = e_ops2, dfd_ρt_cache = similar(integrator.u)))
132+
integrator.p = merge(internal_params, (L = L, e_ops = e_ops2, dfd_ρt_cache = similar(integrator.u)))
133+
134+
return nothing
135135
end
136136

137137
function dfd_mesolveProblem(
@@ -241,6 +241,7 @@ function dfd_mesolve(
241241
ρt = map(
242242
i -> QuantumObject(
243243
vec2mat(sol.u[i]),
244+
type = Operator,
244245
dims = sol.prob.p.dim_list_evo[searchsortedlast(sol.prob.p.dim_list_evo_times, sol.t[i])],
245246
),
246247
eachindex(sol.t),

0 commit comments

Comments
 (0)