The ATUS-2 package is a collection of C++ programs designed to solve the non linear Schrödinger equation, especially the Gross--Pitaevskii equation. ATUS-2 is developed at ZARM (Center of Applied Space Technology and Microgravity, University of Bremen) and is supported by the German Space Agency (DLR) with funds provided by the Federal Ministry of Economics and Technology BMWi) due to an enactment of the German Bundestag under Grant No. DLR 50WM0942, 50WM1042, 50WM1342, 50WM1642.
The main purpose of ATUS-2 is to conduct numerical simulations of atom interferometers with Bose--Einstein condensates (BEC). At the moment the following light-matter interactions are supported for single as well as double species BECs (BEC-mixtures): Bragg, double Bragg and Raman. It solves the Cauchy initial value problem for the Gross--Pitaevskii equation.
The solvers are based on C++ template classes which are located in the include folder. These are instantiated for up to three spatial dimensions. Based on the form of the non linearity N the wave function can have an arbitrary number of internal degrees of freedom. All available programs are controlled through xml parameter files.
The code utilizes OpenMP and MPI for parallel computing.
- make, cmake
- gcc, g++, gfortran
- Modules (recommended)
- doxygen (optional)
- Steel Bank Common Lisp (recommended for install and generate-xml script)
- gnuplot
- Paraview (optional)
The following packages are required and will be installed via the install script:
- openmpi 3.1.3
- gnu gsl 2.5
- muparser 2.2.6.1
- fftw 3.3.8
- lis 2.0.17
- vtk 8.1.1
- hdf5 1.10.1
The following third party packages are included in the source tree:
- pugixml (http://pugixml.org/)
- String Toolkit (http://www.partow.net/programming/strtk/index.html)
- CXXOPTS (https://github.com/jarro2783/cxxopts)
It is highly recommended to use our install script which downloads all required packages and installs everything in $HOME/local/ by default. In order to run this script Steel Bank Common Lisp (sbcl) is required.
Further we recommended the use of environmental modules (http://modules.sourceforge.net/) for setting up all paths. Modules should be available via your Linux distribution. The install script also generates module files which are located in $HOME/local/modules. The search paths for the module files needs to be extended by adding your path to $MODULEPATH of your shell.
The binaries are installed in $HOME/bin. Make sure that this folder is added to $PATH of your shell.
The generate-xml.lisp script can be used to generate xml configuration files. It will automatically nondimensionalize the given parameters.
Change to the sub folder xml/double_slit.
gen_psi_0 runme.xml
rt_solver runme.xml
Run the gnuplot script via: gnuplot plotall.gnuplot.
This script generates jpeg files of all stored intermediate time steps.
Change to the sub folder xml/bragg.
Run gen_psi_0 gauss.xml; this generates the initial wave function for the first internal state.
Run gen_psi_0 zero.xml; this generates the initial wave function for the second internal state.
Run bragg bragg_ad.xml
This command propagates the initial wave functions. It consists of two phases: The first is with Laser-matter interaction enabled; the second is free propagation. This generates binary output files.
Now the result can inspected with gnuplot.
The following gnuplot command
plot "<gpo3 7100.000_1.bin" w l
plots the final result of the last time step using the pipe program gpo3. By default the density is plotted.
The file Rabi_1_0.txt contains the Rabi oscillations. This can also be viewed with gnuplot.
Change to the sub folder xml/groundstate.
Run sobmin groundstate.xml.
Use the following gnuplot commands
set pm3d map splot "<gpo3 final.bin"
Change to the sub folder xml/groundstate.
Run sobmin_2 groundstate_2.xml.
Use the following gnuplot command
p "<gpo3 final_1.bin" w l, "<gpo3 final_2.bin" w l