Skip to content
This repository has been archived by the owner on Aug 21, 2020. It is now read-only.

QuTiP interface in QuDynamics #38

Closed
amitjamadagni opened this issue Dec 19, 2015 · 4 comments
Closed

QuTiP interface in QuDynamics #38

amitjamadagni opened this issue Dec 19, 2015 · 4 comments

Comments

@amitjamadagni
Copy link
Member

QuTiP is a python package which has a solver framework as QuDynamics. It would be nice if we could support methods like mesolve, sesolve, mcsolve of QuTiP with QuDynamics framework in the background. This was discussed as a part of the GSoC 2015 proposal (the idea as mentioned by Qi) and here are the details :
JuliaQuantum/JuliaQuantum.github.io#20.

@acroy
Copy link
Contributor

acroy commented Dec 20, 2015

Could you give some more details about the functions, i.e., purpose, arguments and return values?

@amitjamadagni
Copy link
Member Author

I guess we could have something on the following lines, the purpose is to have a similar API as that of QuTiP supported by QuDynamics. Looking at the API documentation of mesolve which itself has the following parameters

mesolve(H, rho0, tlist, c_ops, e_ops, args={}, options=None, progress_bar=None)

The aim is to support a function with similar parameters, we could have something on the lines of

function qutip_mesolve(H::QuBase.AbstractQuArray, rho0::QuBase.AbstractQuArray, tlist::Vector .......)

# the function should could call the `QuPropagator` as follows, with method being obtained from          # options
qprop = QuPropagator(H, c_ops, rho, tlist, method())

# this could be  further used to compute the expectation values if given by `e_ops` or just return the     # evolved state at every time step

for (t,psi) in qprop:
            # do machinery
end

end

These were the initial ideas I had which could be further refined !

@acroy
Copy link
Contributor

acroy commented Dec 22, 2015

We can certainly have functions along the lines your propose. We have to be careful with the arguments though. It seems that H in QuTiP can be several different things and we have to decide if/how we support them. Moreover, we can't have different return types depending on the content (value) of e_ops, as this would be type in stable. However, we can have two versions mesolve(H, rho0, tlist, c_ops; keyw...) and mesolve(H, rho0, tlist, c_ops, e_ops; keyw...).

@amitjamadagni
Copy link
Member Author

Ref #41

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants