[go: up one dir, main page]

Menu

Tree [107f32] v0.1.2 /
 History

HTTPS access


File Date Author Commit
 Demos 2016-12-27 Ulf Lorenz Ulf Lorenz [b1ff63] Task 64: added a demo that demonstrates the TIS...
 doc 2016-12-17 Ulf Lorenz Ulf Lorenz [9bd4ca] Task 66: Added some informational messages
 extern 2016-11-15 Ulf Lorenz Ulf Lorenz [bd5ae6] Task 66: added installation targets and some cl...
 include 2016-12-27 Ulf Lorenz Ulf Lorenz [b1ff63] Task 64: added a demo that demonstrates the TIS...
 src 2016-12-26 Ulf Lorenz Ulf Lorenz [1aa364] Task 64: upgraded the logger to log also eigens...
 template 2016-12-01 Ulf Lorenz Ulf Lorenz [44cc35] Task 66: Documentation updates
 test 2016-12-27 Ulf Lorenz Ulf Lorenz [f498eb] Task 64: added an acceptance test
 AUTHORS 2016-05-20 Ulf Lorenz Ulf Lorenz [c52249] updated misc files for release
 CMakeLists.txt 2016-12-17 Ulf Lorenz Ulf Lorenz [9bd4ca] Task 66: Added some informational messages
 GPL.txt 2013-03-22 Ulf Lorenz Ulf Lorenz [9f157e] added license files
 LICENSE 2016-11-11 Ulf Lorenz Ulf Lorenz [c8c805] Task 66: finished inclusion of googletest/googl...
 NEWS 2016-12-27 Ulf Lorenz Ulf Lorenz [107f32] Updated NEWS and README in preparation of the r...
 README 2016-12-27 Ulf Lorenz Ulf Lorenz [107f32] Updated NEWS and README in preparation of the r...
 WavePacketConfig.cmake 2016-11-21 Ulf Lorenz Ulf Lorenz [b5057d] Task 66: minor changes to package configuration...

Read Me

Description
===========

This is a C++ library to numerically solve the Schroedinger equation for
distinguishable particles.

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
- Some common operators are defined, in particular Cartesian kinetic energy and
  harmonic and Morse potentials.
- Various operators allow extension with user-defined functions (potentials and such,
  time-dependent laser fields), and complex operators can be composed from elementary
  ones (addition, multiplication)
- Several ODE propagators as well as the Chebychev polynomial method are implemented
- diagonalization of the Hamiltonian matrix to solve for eigenstates and -energies

Also, there is some optimization lacking for complex Hamiltonians etc.
Naturally, we plan to extend this in the nearer future.


System requirements
===================

To be able to compile the code at all, you need the following:

* CMake, at least version 3.5
* 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
      git clone https://github.com/juanjosegarciaripoll/tensor.git
      then 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")
    - you can also try out the mps-bundle, which may offer more convenient compilation
      git clone https://github.com/juanjosegarciaripoll/mps-bundle.git
* the boost libraries from http://www.boost.org
    - You need at least boost version 1.56
* doxygen if you want to build the documentation ("make build-doc") 


Compilation and getting started
===============================

Simple Installation
-------------------

Since version 0.1.2, WavePacket uses CMake for the setup of the build process.
Assuming you have all requirements installed in standard locations, you can
compile and install the library by the following steps. They assume
the wavepacket directory (where this file resides) to be ${WP_SRCDIR}.

1. Create a new build directory where the binary files will be placed
   (we do a so-called out-of-source build)
2. In the build directory, run "cmake ${WP_SRCDIR}"
3. In the build directory, run "make -j 4" (or however many cores you have).
   You can also build the documentation with "make build-doc"
4. Check that everything went ok by running "test/TestRunner"; all tests should be
   green (rarely, a test can fail by chance, then a rerun should be green, if you
   still have problems, drop a mail).
5. Install everything by running "make install"
   afterwards you can remove the build directory if you wish


Configuration
-------------

You can change various settings of the build process by defining variables to
your preferences. There are three ways to do so:

1. When you originally run cmake, add flags "-D<var>=<value>", for example
   cmake -DCMAKE_BUILD_TYPE=Debug ${WP_SRCDIR}
2. After running cmake once, run
   ccmake ${WP_SRCDIR}
   This fires up a textmode program where you can edit the variables and
   reconfigure/regenerate the build system by hitting "c", then "g".
   Some variables are marked as advanced, hit "t" to be able to edit them.
3. After running cmake once, run "cmake-gui" for a graphical interface for
   the editing of the variables.

The most important variables that you may wish to change:

* TENSOR_CONFIG
    the full path to the tensor-config script that was installed together
    with the tensor library. Only needed if you installed into an uncommon
    directory.
* Opt_BuildDemos
    If you set this to "OFF", the demos will not be built.
* CMAKE_INSTALL_PREFIX
    defines the root path where all the libraries and such will be installed.
    Default is "/usr/local"
* CMAKE_CXX_COMPILER
    the full path to the C++ compiler to use



First Steps
-----------

In the directory template/ you can find an example program with the CMake file
and documentation that can serve as a template to write and compile your own
programs. Several solutions can be found under the demos (everything below
directory Demos/), and in the acceptance tests under test/acceptance/. The
documentation also contains a small tutorial that should cover the basic
concepts of the library.

The documentation is also available online: 
http://wavepacket.sourceforge.net/cpp-doc/0.1.2/index.xhtml