2424# # the rest of the SciMLOperators will just use lazy tensor (and prompt a warning)
2525_spre (A:: MatrixOperator , Id:: AbstractMatrix ) = MatrixOperator (_spre (A. A, Id))
2626_spre (A:: ScaledOperator , Id:: AbstractMatrix ) = ScaledOperator (A. λ, _spre (A. L, Id))
27- _spre (A:: AddedOperator , Id:: AbstractMatrix ) = mapreduce ( op -> _spre (op, Id), + , A. ops)
27+ _spre (A:: AddedOperator , Id:: AbstractMatrix ) = AddedOperator ( map ( op -> _spre (op, Id), A. ops) )
2828function _spre (A:: AbstractSciMLOperator , Id:: AbstractMatrix )
2929 _lazy_tensor_warning (" spre" , A)
3030 return kron (Id, A)
3131end
3232
3333_spost (B:: MatrixOperator , Id:: AbstractMatrix ) = MatrixOperator (_spost (B. A, Id))
3434_spost (B:: ScaledOperator , Id:: AbstractMatrix ) = ScaledOperator (B. λ, _spost (B. L, Id))
35- _spost (B:: AddedOperator , Id:: AbstractMatrix ) = mapreduce ( op -> _spost (op, Id), + , B. ops)
35+ _spost (B:: AddedOperator , Id:: AbstractMatrix ) = AddedOperator ( map ( op -> _spost (op, Id), B. ops) )
3636function _spost (B:: AbstractSciMLOperator , Id:: AbstractMatrix )
3737 _lazy_tensor_warning (" spost" , B)
3838 return kron (transpose (B), Id)
@@ -43,7 +43,7 @@ _liouvillian(H::MT, Id::AbstractMatrix) where {MT<:Union{AbstractMatrix,Abstract
4343 - 1im * (_spre (H, Id) - _spost (H, Id))
4444_liouvillian (H:: MatrixOperator , Id:: AbstractMatrix ) = MatrixOperator (_liouvillian (H. A, Id))
4545_liouvillian (H:: ScaledOperator , Id:: AbstractMatrix ) = ScaledOperator (H. λ, _liouvillian (H. L, Id))
46- _liouvillian (H:: AddedOperator , Id:: AbstractMatrix ) = mapreduce ( op -> _liouvillian (op, Id), + , H. ops)
46+ _liouvillian (H:: AddedOperator , Id:: AbstractMatrix ) = AddedOperator ( map ( op -> _liouvillian (op, Id), H. ops) )
4747
4848# intrinsic lindblad_dissipator
4949function _lindblad_dissipator (O:: MT , Id:: AbstractMatrix ) where {MT<: Union{AbstractMatrix,AbstractSciMLOperator} }
@@ -166,7 +166,7 @@ function liouvillian(
166166) where {DT,OpType<: Union{OperatorQuantumObject,SuperOperatorQuantumObject} }
167167 L = liouvillian (H, Id_cache)
168168 if ! (c_ops isa Nothing)
169- # sum all the Qobj first
169+ # sum all the (time-independent) c_ops first
170170 c_ops_ti = filter (op -> isa (op, QuantumObject), c_ops)
171171 if ! isempty (c_ops_ti)
172172 L += mapreduce (op -> lindblad_dissipator (op, Id_cache), + , c_ops_ti)
0 commit comments