Skip to content
Multipurpose ab initio MD program.
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
DOC Document code and minor cleanup. Jul 24, 2018
EWALD Fix compilation with OpenMP. May 25, 2017
INTERFACES TD-DFTB+ interface for adiabatic excited state dynamics Sep 15, 2018
NAB Fix compilation with OpenMP. May 25, 2017
SAMPLE FEATURE: Stop simulation when dE(S1-S0) drops below threshold Oct 4, 2018
UTILS UTILS/ job redistribution fix Apr 18, 2019
WATERMODELS Fix compilation with OpenMP. May 25, 2017
Makefile Document code and minor cleanup. Jul 24, 2018 SHAKE all H atoms. (turned on by nshake=-1) Sep 10, 2018
abin.F90 Minor stuff... Sep 18, 2018
analysis.F90 Abin now compiles with IFORT, but GLE restarts do not work. Aug 8, 2018
analyze_ext_2dho.f90 Allocate all arrays. No maximum values for particles, beads or shakes. Jul 13, 2014
analyze_ext_guillot.f90 Allocate all arrays. No maximum values for particles, beads or shakes. Jul 13, 2014
analyze_ext_template.f90 Clean up NAB files. Remove dependency on blas.a and arpack.a Feb 10, 2016
arrays.f90 Merge branch 'master' into sh_dynstep Jun 29, 2018
ekin.f90 Add conserved quantity for Langevin thermostat to restart. Jul 6, 2016
en_restraint.F90 en_restraint improvements (iterative procedure using predicted change… Nov 6, 2018
estimators.f90 NM transform according to i-Py. Needs more testing. Jun 11, 2016
fftw3.f90 User can choose whether to compile with NAB libs. Oct 2, 2015
fftw_interface.f90 Fix deallocation of fftw arrays. Jun 6, 2016
force_abin.f90 Minor copy edit Sep 13, 2018
force_bound.f90 Better file handling via module mod_files. Jan 20, 2016
force_cp2k.F90 MPI processes distributed over beads in CP2k int. May 25, 2017
force_terash.F90 Merge branch 'master' into sh_dynstep Jun 29, 2018
fortran.vim Add style config for vim Aug 16, 2018
interfaces.f90 Initial work on RESPA with reference potential. Jun 12, 2016
make.vars.example Cleanup MPI output and other small tweaks. Sep 4, 2017
mdstep.f90 en_restraint improvements (iterative procedure using predicted change… Nov 6, 2018
mini.dat This is the initial commit of the development branch of abin. May 27, 2014
minimizer.f90 Remove the and related nonsense. Jan 16, 2018
modules.f90 Minor printing modications Aug 16, 2018
nabinit_pme.c Add debug printing subroutine + minor stuff Aug 9, 2018
plumed.F90 Remove unused variables. Jun 29, 2018
potentials.f90 Fix compilation with older gfortran Jun 22, 2018
random.f90 Minor cleanup in prng. Implicit none FTW. Aug 9, 2018
transform.F90 Minor stuff... Sep 18, 2018
vimrc Add style config for vim Aug 16, 2018
vinit.f90 Document code and minor cleanup. Jul 24, 2018
water.f90 Ensure that TeraChem closes properly. Oct 3, 2015


  1. What is ABIN?

ABIN is a program for performing ab initio molecular dynamics. It was designed specifically to deal with quantum nuclear effects. It can do path integral simulations and also utilizes recently developed quantum thermostat based on General Langevin equation. It can also simulate non-adiabatic events using Surface-hoping algorithm.

The basic philosophy of this program is simple. While the program itself handles the propagation of the system according to the equations of motion, the forces and energies are taken from the external electronic structure program such as ORCA or TeraChem. The call to the chosen external program is handled via a simple shell script. Therefore, writing a new interface is rather straightforward and can be done without any changes to the ABIN code or ab initio code.

The code is provided under the GNU General Public License. A full text of the license can be found in the file LICENCE.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

A full documentation can be found in the folder DOC.


To compile the code, you need a gfortran and gcc compiler with a version at least 4.3. However, version 4.6 and higher is recommended. If your distribution does not have the required version of the compilers, it can be downloaded from this website: The site offers compiled binaries and required libraries so compilation is typically not needed.

For some features, you will also need to install the FFTW library. It is usually provided with your Linux distribution. It can also be downloaded here:

The compilation can be as easy as:

$ make

You can test the installation by:

$ make test

If you modify the source code and want to recompile, you should always clean up by:

$ make clean; make


Short descriptions of key source files.

Path Description
SAMPLE/ Contains sample input files.
INTERFACES/ Contains bash interfaces to common ab initio codes.
UTIL/ Contains some handy scripts that might be useful in conjuction with the MD code.
NAB/ Contains force field routines taken from AmberTools package.
abin.F90 Main routine.
modules.F90 Modules containing all basic variables.
init.F90 Big ugly init routine. Reads input parameters, restart files and checks for errors in input.
mdstep.f90 Routines for propagation of equations of motion (velocity Verlet and RESPA).
forces.f90 Main routine for getting forces (force_clas) and quantum forces in PIMD (force_quant).
force_abin.f90 Routine that calls ab initio BASH interfaces.
nosehoover.f90 Nosé-Hoover thermostat.
surfacehop.f90 Surface Hopping dynamics
sh_integ.f90 Propagation of electronic wavefunction in SH dynamics
gle.F90 Generalized Langevin Equation thermostat
shake.f90 Constraints using SHAKE algorithm.
analysis.f90 Driver routine for printing output.
arrays.f90 Module containing all dynamically allocated arrays.
random.f90 Random number generator.
vinit.f90 Initial velocities.
potentials.f90 Analytical potentials and hessians for harmonic and Morse oscillators and others.
density.f90 Evaluates distance, angle and dihedrals distributions during dynamics.
estimators.f90 Energy and heat capacity estimators for PIMD.
transform.F90 Coordinate transformations for PIMD.
You can’t perform that action at this time.