Skip to content

Releases: leespen1/QuantumGateDesign.jl

Release 0.2.0

20 Sep 09:32
Compare
Choose a tag to compare
Release 0.2.0 Pre-release
Pre-release

We are publishing a new release to highlight some of the changes made to the package over the last couple months.

Changes

First and foremost, the documentation of this package has been greatly improved. Please read it at https://leespen1.github.io/QuantumGateDesign.jl/dev/. Explanations of the workflow, examples, and docstrings and argument lists for some of the most important functions are now in the documentation.

Significant performance improvements have been made, mainly having to do with type stability and memory allocation. I would also note that testing has been done only on Julia 1.9, because previously during development while using Julia 1.10, some of the mul! functions from the LinearAlgebra library were allocating memory for vectors, which was a huge detriment to performance.

There is now an API for using preconditioners when solving Schrodinger's equation and the adjoint equation.

Future Work

The next release will focus on improving the documentation even further, improving the organization and readability of the source code, improved tools for easily plotting results, and generally improving the stability of the package so that it is ready for "production use."

Contact

If you have any questions about the package (or suggestions), please contact Spencer Lee at leespen1@msu.edu.

Hermite Optimal Control v0.1.0 - Multiple Controls

30 Nov 04:14
Compare
Choose a tag to compare

Can now handle multiple controls, and do the gradient calculation using discrete adjoint, finite difference, and forced methods. This is a big milestone, as now we work with multiple qubit gates.

Needs to be tested more thoroughly, but for now the gradients all seem to agree with those of past stable versions of the package (which only had single controls). And when using two controls with the same parameters and control hamiltonians, the two halves of the gradient are the same, which is a good sign (though nowhere near an exhaustive test of correctness).

Next release will focus on continuous integration tests:

  • Convergence and gradient agreement tests need to be updated to work with new structures
  • Want to have a test which compares history, lambda history, and gradients for a fixed problem, with the solutions hard-coded and stored based on results from a previous stable version of the code. That way we can easily see if anything has changed. Could also compare to qutp results
  • Long functions should be split up more to make testing easier (would have saved me a headache if I could have done the adjoint evolution more readily and independently).

Documentation should also be improved, now that I have most of the desired functionality implemented. And some variables and functions (utvt, uttvtt, etc) need to be renamed for clarity.