kestrelquantum / QuantumCollocation.jl

Quantum Optimal Control with Direct Collocation
MIT License
27 stars 7 forks source link

[Feature]: interface with QuantumOptics.jl #85

Closed aarontrowbridge closed 2 months ago

aarontrowbridge commented 4 months ago

Feature Description

It would be great to have the functionality to build QuantumSystems using operators from QuantumOptics.jl. This should be a very simple PR that adds a dependency for QuantumOptics and creates a method for QuantumSystem.

Implementation Guidelines

Importance

2

What does this feature affect?

Other information

No response

aarontrowbridge commented 3 months ago

I think this should potentially interface with QuantumToolbox.jl, if this is implemented using that we can close this issue.

maxwell04-wq commented 3 months ago

I'm currently working on this issue. However, I am stuck at implementing the quantum optics system, especially the Hamiltonians for the systems to be implemented. Can you please share a reference paper, article, etc. for help in the implementation?

So far, I understand that this problem can be solved using the Jaynes-Cummings model (which is already implemented here.

aarontrowbridge commented 3 months ago

So what we're looking for is really just a function that accepts operators, specifically Hermitian operators, defined in QuantumOptics.jl, extracts the data and creates a QuantumSystem object, something like:

function QuantumSystem(H_drift::Operator, H_drives::Vector{Operator})
    ...
    return QuantumSystem(data_from_H_drift, data_from_H_drives)
end
aarontrowbridge commented 3 months ago

Ideally the operators will be sparse matrices, see this method in quantum optics for getting sparse representations