JuliaQuantum | News | Projects | Community | Resources
Hello everyone,
During the past few weeks we have made some decent progress and here is a gist of updates :
All the PR’s from the previous blog post are now in, which implies we have support for
a. Solver expmv
from both the packages ExpmV.jl
and Expokit.jl
b. Liouville von Neumann Equation types and constructs.
In addition to the above we have support for Lindblad Master Equation and most of the blog post would be about the related constructs.
There have also been few additions to QuBase.jl
a. From the previous blog, the PR on vec
is now in.
b. We had a fix on multiplication, PR, we had spotted this as we were testing out Lindblad based examples.
c. PR has been opened to support Base.complex
function for QuArray (this requirement was spotted while working on ODE related solvers)
To begin with, Lindblad Master Equation type QuLindbladMasterEq
has fields lindblad
, hamiltonian
and collapse_ops
which are the
lindblad operator, hamiltonian and the collapse operators of the system. The lindblad operator is constructed from the function lindblad_op
which accepts the hamiltonain and vector. The vector here is of type Any
and we still have some design issues which will be summarized at the
end, it would be great to hear from the community on the possibilities of solving these. The liouvillian_op
is constructed from lindblad_op
by passing an empty array to the vector parameter. The reason for caching Lindblad operator in type construct is that we do not need to construct it
over and over again by the use of operator
or other means, this turns out to be advantageous for time-independent hamiltonian cases. This is
also consistent with the QuLiouvillevonNeumannEq
type where we cache the liouvillian
in the type construct itself. The two issues we
currently have are the following :
a. Design of time dependent and time independent lindblad operator constructs, we need to think of ways to support time-dependent nature. b. Promotion rule for collapse operators, as of now we cannot construct something like
c_ops_1 = [sigmax, sigmay]
c_ops_2 = [sigmax, lowerop(2)]
We need to have promotion rules to support such kind of constructions.
Moving on, we have added the additional constructs for QuPropagator
which accepts
QuLindbladMasterEq
and AbstractQuMatrix
.AbstractQuMatrix
and Vector{AbstractQuMatrix}
, constructs a QuLindbladMasterEq
from AbstractQuMatrix
and Vector{AbstractQuMatrix}
.We have worked on porting Jaynes Cummings by QuTiP to Julia. We would like to thank QuTiP developers for having shared the notebook, below are both the versions
We have also done benchmarking analysis for various solvers using the package BenchmarkLite.jl
. We have added the code under perf
in the repo which has the
benchmarking analysis for Jaynes Cummings model and Quantum Harmonic Oscillator. The results have been presented in the notebook, but there is still a need to refine it.
A quick summary on the PR’s :
BenchmarkLite.jl
On QuBase, we have an open PR on adding Base.complex
to QuArray.
The next targets would be to start working on the implementation of Quantum Monte Carlo Wavefunction method and then extend the current framework to support parallelization techniques.