The QEngine is a numerical quantum simulation and optimization library written in the C++ programming language. This library collects the previous efforts of simulation and optimization from our research group.
In addition to being used for research, QEngine will be available to students and developers, allowing a wide range of possibilities for new and exciting projects to come.
A lot of code has been written by researchers and students, to achieve a variety of goals. Given the backgrounds of people involved in the project, a unified platform did not make much sense: physicists tend to be experts in MATLAB or low-level languages such as C and Fortran. Our data scientists are experts in Python and R. This leads to a certain amount of duplicate code and makes maintenance harder. The QEngine is meant to solve this issue by providing a common library with a simple API. It will be a central infrastructure for numerical simulations of quantum mechanics for our research. To allow other researchers to benefit from our efforts, the QEngine will is publicly available.
The current first version of the QEngine allows for simulation of the one-dimensional Schrödinger equation for single and two particle systems. It allows for simulation of n level quantum systems, Bose-Hubbard type systems and Bose-Einstein condensates described by the one-dimensional Gross-Pitaevskii Equation.
In addition to the efficient simulation of quantum mechanics, the QEngine contains a suite of optimization-algorithms, allowing for quantum optimal control. This includes the traditional quantum optimal control algorithms like GRAPE-algorithms, as well as newer ones, such as the GROUP-algorithm.
We chose to write the QEngine in C++ instead of other languages due to its inherent efficiency, which is a strict requirement for the software. Wide applicability is enabling us to use it in many areas of our theoretical physics research.