@@ -119,15 +119,16 @@ function _mcsolve_generate_statistics(sol, i, states, expvals_all, jump_times, j
119119 return jump_which[i] = sol_i. prob. p. jump_which
120120end
121121
122- function _mcsolve_make_Heff_QobjEvo (H:: QuantumObject , c_ops)
123- c_ops isa Nothing && return QobjEvo (H)
124- return QobjEvo (H - 1im * mapreduce (op -> op' * op, + , c_ops) / 2 )
122+ function _mcsolve_make_H_eff (H:: QuantumObject , c_ops)
123+ # this will be convert to QobjEvo in sesolveProblem (avoid extra ScalarOperator)
124+ c_ops isa Nothing && return H
125+ return H - 1im * mapreduce (op -> op' * op, + , c_ops) / 2
125126end
126- function _mcsolve_make_Heff_QobjEvo (H:: Tuple , c_ops)
127+ function _mcsolve_make_H_eff (H:: Tuple , c_ops)
127128 c_ops isa Nothing && return QobjEvo (H)
128129 return QobjEvo ((H... , - 1im * mapreduce (op -> op' * op, + , c_ops) / 2 ))
129130end
130- function _mcsolve_make_Heff_QobjEvo (H:: QuantumObjectEvolution , c_ops)
131+ function _mcsolve_make_H_eff (H:: QuantumObjectEvolution , c_ops)
131132 c_ops isa Nothing && return H
132133 return H + QobjEvo (mapreduce (op -> op' * op, + , c_ops), - 1im / 2 )
133134end
@@ -221,7 +222,7 @@ function mcsolveProblem(
221222
222223 tlist = convert (Vector{_FType (ψ0)}, tlist) # Convert it to support GPUs and avoid type instabilities for OrdinaryDiffEq.jl
223224
224- H_eff_evo = _mcsolve_make_Heff_QobjEvo (H, c_ops)
225+ H_eff = _mcsolve_make_H_eff (H, c_ops)
225226
226227 if e_ops isa Nothing
227228 expvals = Array {ComplexF64} (undef, 0 , length (tlist))
@@ -267,11 +268,11 @@ function mcsolveProblem(
267268 params... ,
268269 )
269270
270- return mcsolveProblem (H_eff_evo , ψ0, tlist, params2, jump_callback; kwargs2... )
271+ return mcsolveProblem (H_eff , ψ0, tlist, params2, jump_callback; kwargs2... )
271272end
272273
273274function mcsolveProblem (
274- H_eff_evo :: QuantumObjectEvolution {DT1,OperatorQuantumObject} ,
275+ H_eff :: AbstractQuantumObject {DT1,OperatorQuantumObject} ,
275276 ψ0:: QuantumObject{DT2,KetQuantumObject} ,
276277 tlist:: AbstractVector ,
277278 params:: NamedTuple ,
@@ -285,11 +286,11 @@ function mcsolveProblem(
285286 haskey (kwargs2, :callback ) ? merge (kwargs2, (callback = CallbackSet (cb1, cb2, kwargs2. callback),)) :
286287 merge (kwargs2, (callback = CallbackSet (cb1, cb2),))
287288
288- return sesolveProblem (H_eff_evo , ψ0, tlist; params = params, kwargs2... )
289+ return sesolveProblem (H_eff , ψ0, tlist; params = params, kwargs2... )
289290end
290291
291292function mcsolveProblem (
292- H_eff_evo :: QuantumObjectEvolution {DT1,OperatorQuantumObject} ,
293+ H_eff :: AbstractQuantumObject {DT1,OperatorQuantumObject} ,
293294 ψ0:: QuantumObject{DT2,KetQuantumObject} ,
294295 tlist:: AbstractVector ,
295296 params:: NamedTuple ,
@@ -309,7 +310,7 @@ function mcsolveProblem(
309310 haskey (kwargs2, :callback ) ? merge (kwargs2, (callback = CallbackSet (cb1, cb2, kwargs2. callback),)) :
310311 merge (kwargs2, (callback = CallbackSet (cb1, cb2),))
311312
312- return sesolveProblem (H_eff_evo , ψ0, tlist; params = params, kwargs2... )
313+ return sesolveProblem (H_eff , ψ0, tlist; params = params, kwargs2... )
313314end
314315
315316@doc raw """
0 commit comments