Open apkille opened 3 months ago
It shouldn't create any ambiguities to add that method, so go ahead :+1:
this might be related https://github.com/qojulia/QuantumOptics.jl/issues/298
@krastanov to build off our discussion in person: a workaround is assigning the cached drho
to the p
parameter of the ODEProblem object, which prevents us from caching at each time step if we use OrdinaryDiffEq.jl directly. So we don't have to define any new methods. For example, using dmaster_h!
which is already a part of the public API, we have
using QuantumOptics, OrdinaryDiffEq
b = FockBasis(5)
psi0 = fockstate(b, 4)
rho0 = dm(psi0)
tmp = copy(rho0)
H = number(b)
J = [destroy(b), create(b)]
Jdagger = dagger.(J)
rates = [0.7, 0.5]
f!(drho, rho, p, t) = timeevolution.dmaster_h!(drho, H, J, Jdagger, rates, rho, p)
prob = ODEProblem(f!, rho0, (0.0, 1.0), tmp)
sol = solve(prob, DP5(); save_everystep=false)
In several of the master functions, e.g.,
dmaster_h!
, a cached copy ofdrho
is required as input:Presumably, this is to improve performance of solvers such as
timeevolution.master
. However, this feels excessive if we don't want to use the corresponding solver, and instead create an ODE problem directly with our density operators anddmaster_h!
. For example, it would be great if we could define an in-place method without the cache input, sayThis is a natural interface that I'm aiming for with all of the recent broadcasting work (#404, https://github.com/qojulia/QuantumOpticsBase.jl/pull/172). Do the QO maintainers have any comments or oppositions to defining such a method in QO.jl?