MPI C++ compiler

C++11 and MPI-3 support

GNU Libtool

GNU Autoconf

Version 2.69 or newer

GNU Automake

Boost C++ Libraries

Version 1.53.0 or newer


Use optimized BLAS


Use optimized LAPACK


Use optimized ScaLPACK

Intel MKL is strongly recommended for BLAS, LAPACK, and ScaLAPACK (distributed for free for academic users)

Downloading the source

The simplest approach is to just download and extract the tarball containing the most recent BAGEL release:

$ wget
$ tar xvf bagel-1.1.1.tar.gz
$ cd bagel

Alternatively, you can clone the git repository:

$ git clone
$ cd bagel

The SMITH3 code generator can be downloaded in a similar manner from the NUBakery GitHub page.


  • Automake

    $ glibtoolize (or, libtoolize)
    $ aclocal
    $ autoconf
    $ autoheader
    $ automake -a
  • Create an object directory

    $ mkdir obj
    $ cd obj
  • Configure

    A minimal set of configure options is

    $ export BOOST_ROOT=/path/to/boost
    $ ../configure --enable-mkl --with-boost=$BOOST_ROOT
    Configure options:
    --with-mpi=value turns on MPI, where “value” can be “mvapich”, “intel”, or “openmpi”. However, Open MPI is not recommended.
    --enable-mkl turns on MKL extensions, such as efficient matrix transposition. MKL libraries are automatically detected.
    --with-boost=/path/to/boost specifies the BOOST library to be used.
    --disable-scalapack will disable the use of ScaLapack (parallel Lapack) which is not recommended.
    --disable-smith will disable the code generated by SMITH which is not recommended.
    --with-include can be used to specifically include paths.
    --with-libxc turns on the interface to libxc.
    CXXFLAGS=-DNDEBUG deactivates the debugging mode. It is absolutely essential to specify this for release builds.
    CXXFLAGS=-DCOMPILE_J_ORB allows the inclusion of j-type atomic basis functions.

    Example (Release build on the Shiozaki group’s cluster)

    $ export BOOST_ROOT=/usr/local/boost/boost_1_64_0_gcc-7.1.0
    $ ../configure CXXFLAGS="-DNDEBUG -O3 -mavx" --enable-mkl --with-boost=$BOOST_ROOT --with-mpi=intel
  • Compile

    $ make -j4
    $ make install
  • Test run

    $ BAGEL path_to_bagel/test/benzene_svp_mp2.json

    Also there is a suite of test programs. To run this, in obj

    $ cd bagel/obj
    $ make check
    $ cd src
    $ ./TestSuite --log_level=all

    One of the tests (ASD-DMRG) is meant to fail.

  • Additional Notes

    • Configuring without MKL

      If MKL is not available, the path to cblas headers may need to be included as a configure option (e.g., ‘–with-include=-I/usr/path/to/cblas’). One may also add “LDFLAGS=-lcblas” as an option. Furthermore, if relativistic calculations fail without MKL, users may consider reconfiguring and recompiling with -DZDOT_RETURN in CXXFLAGS.
    • Compiling on small machines

      Some files in BAGEL require several GB of RAM to compile. This is generally not a problem for clusters, but on personal computers the compilation will occasionally fail. Compiling with one thread (make -j1) and not using -DCOMPILE_J_ORB may help.