This is a C++ library to numerically solve the Schroedinger equation for
The code is under the GNU General Public License; see the accompagnying license
file for the lawyer text.
The current status in brief:
- you can solve the Schroedinger and the Liouville-von-Neumann equations;
switching can be done with few lines of code
- multiple coupled equations can be solved
- Lindblad and Redfield dissipation is implemented
- only equally-spaced grids / plane wave expansions are implemented
- operators are defined for harmonic and Morse oscillators
- Various ODE propagators as well as the Chebychev polynomial method are implemented
Also, there is some optimization lacking for complex Hamiltonians etc.
Naturally, we plan to extend this in the nearer future.
To be able to compile the code at all, you need the following:
* a compiler that implements the C++-11 standard.
One of the later g++ (around version 4.7) or CLang++ version 3.2 should be fine.
* the tensor library that we use
- clone it via git from https://github.com/juanjosegarciaripoll/tensor.git
- compile and install it (usual autoconf setup)
- note that you will need to enable FFTW support, which also requires the fftw libraries
(run the configure script with "--with-fftw")
* the boost libraries from http://www.boost.org
- You need at least boost version 1.56
* googlemock 1.7.0 for compiling the tests
(also googletest, but this is included in googlemock)
- get it from https://github.com/google/googletest
* doxygen if you want to build the documentation ("make build-doc")
Compilation and getting started
To compile the code, copy the file "Makefile.config.template" to Makefile.config,
modify the settings in there, and type "make".
This will build the code and all tests, and run all tests.
To get a feeling for the code, have a look at the demos under Demos/ and the
acceptance tests under test/acceptance. These are explicitly meant as templates
for real calculations (as well as complex tests in the latter case to check
that the code is correct). Especially for the demos, also have a look at the
Makefiles, these can be used for your calculations with minimal adjustments
(mainly WAVEPACKET_TOPDIR has to be set to the proper path)
Furthermore, there are some basic tutorials on the wiki
You can also build the documentation using "make build-doc". This requires
doxygen, and constructs a documentation in the directory ./built-doc. The
constructed documentation details the available classes grouped into modules
(operators, grids etc.). If you do not build the doxygen documentation, you can
also find the information as comments in the header files.