Quandary implements an optimization solver for open and closed optimal quantum control. The underlying quantum dynamics model open or closed quantum systems, using either Schroedinger's equation for a state vector (closed), or Lindblad master equation for a density matrix (open). The control problem aims to find control pulses that drive the system to a desired target, such as a target unitary solution operator or to a predefined target state. Quandary targets deployment on High-Performance Computing platforms, offering various levels for parallelization using the message passing paradigm.
It is advised to look at the user guide in doc/
, describing the underlying mathematical models, their implementation and usage in Quandary.
Feel free to reach out to Stefanie Guenther [guenther5@llnl.gov] for any question you may have.
This project relies on Petsc [https://petsc.org/release/] to handle (parallel) linear algebra. Optionally Slepsc [https://slepc.upv.es] can be used to solve some eigenvalue problems if desired (e.g. for the Hessian...)
Required: Install Petsc:
Check out [https://petsc.org/release/] for the latest installation guide. On MacOS, you can also brew install petsc
. As a quick start, you can also try the below:
tar -xf petsc-<version>.tar.gz
cd petsc-<version>
./configure
. Please check [https://petsc.org/release/install/install_tutorial] for optional arguments. For example,
./configure --prefix=/YOUR/INSTALL/DIR --with-debugging=0 --with-fc=0 --with-cxx=mpicxx --with-cc=mpicc COPTFLAGS='-O3' CXXOPTFLAGS='-O3'
./configure
reports on how to set the PETSC_DIR
and PETSC_ARCH
variables
export PETSC_DIR=/YOUR/INSTALL/DIR
export PETSC_ARCH=/YOUR/ARCH/PREFIX
LD_LIBRARY_PATH
:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PETSC_DIR/$PETSC_ARCH/lib
Optional: Install Slepsc
Petc is already installed on LLNL LC machines, see here [https://hpc.llnl.gov/software/mathematical-software/petsc]. It is located at '/usr/tce/packages/petsc/
export PETSC_DIR=/usr/tce/packages/petsc/<version>
(check the folder name for version number)export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PETSC_DIR/lib
The 'PETSC_ARCH' variable is not needed in this case.
Depending on your setup, you might need to load some additional modules, such as openmpi, e.g. as so:
module load openmpi
Adapt the beginning of the 'Makefile' to set the path to your Petsc (and possibly Slepsc, python path, and fitpackpp) installation, if not exported. Then,
make cleanup
to clean the build directory. (Note the up in cleanup.)make quandary
to build the code (or 'make -j quandary' for faster build using multiple threads)It is advised to add Quandary to your PATH
, e.g.
export PATH=$PATH:/path/to/quandary/
Optional: To run Quandary from within a Python environment, you should have a working python interpreter with numpy and matplotlib installed. Then, append Quandary's location to your PYTHONPATH
, e.g. with
export PYTHONPATH=$PYTHONPATH:/path/to/quandary/
and have a look into the examples.The code builds into the executable quandary
. It takes one argument being the name of the test-case's configuration file. The file config_template.cfg
, lists all possible configuration options. The configuration file is filled with comments that should help users set up their test case and match the options to the description in the user guide. Also compare the examples folder.
./quandary config_template.cfg
mpirun -np 4 ./quandary config_template.cfg --quiet
Quandary is an open source project that is under heavy development. Contributions in all forms are very welcome, and can be anything from new features to bugfixes, documentation, or even discussions. Contributing is easy, work on your branch, create a pull request to master when you're good to go and the regression tests in 'tests/' pass.
Quandary is distributed under the terms of the MIT license. All new contributions must be made under this license. See LICENSE, and NOTICE, for details.
SPDX-License-Identifier: MIT