Skip to content
This repository has been archived by the owner on Mar 22, 2023. It is now read-only.

molsturm/gint

Repository files navigation

gint

Build Status Coverage Status Licence

A basis-function independent interface library providing the types of integrals needed for electronic structure theory calculations.

Design goals

  • The same interface independent of the type of basis function or the precise integral backend.

More documentation will follow ...

Dependencies

For building gint the following things are required:

  • cmake >= 3.0.0

  • A compiler supporting C++11: clang starting from clang-3.5 and gcc starting from gcc-5 should work.

  • swig >= 2.0.11

  • python >= 3.4, including the development headers

  • The usual build process mentioned below will automatically build the lazyten linear algebra library as well. This requires further

    See github.com/lazyten/lazyten for more details about lazyten's dependencies.

  • If gint should be linked with third-party libraries to compute any integrals, the requirements of these will be needed as well. See the section Interfacing with external libraries.

In order to actually use the gint python module once it has been built, the following python packages are required:

On a recent Debian/Ubuntu you can install all these dependencies by running

apt-get install cmake swig python3-dev libopenblas-dev liblapack-dev libarmadillo-dev \
                python3-numpy

as root.

Building gint

This basic build builds gint along with one or more third-party libraries to compute the integrals as well as tests. The basic sequence of steps is

# Configure inside build directory
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=~/opt -DAUTOCHECKOUT_MISSING_REPOS=ON ${OPTIONS} ..
cmake --build .

# Test and install the build
ctest
cmake --build . --target install

where ${OPTIONS} is one of the cmake options mentioned in the next section.

Interfacing with external libraries

Currently gint can be build with a couple of external libraries for performing the integral computation.

Gaussians: libint

Edward Valeev's libint library is enabled by passing the option -DGINT_ENABLE_LIBINT=ON to cmake. This will automaticall download, unpack, compile and link to libint.

Next to the dependencies mentioned before, building libint requires:

  • Eigen3
  • BLAS
  • Autoconf
  • GNU Multiprecision library

On Debian/Ubuntu the command

apt-get install libeigen3-dev libopenblas-dev autoconf libgmp-dev

should install all of these.

Gaussians: libcint

The second supported Gaussian integral library is libcint by Qiming Sun. It can be enabled by the option -DGINT_ENABLE_LIBCINT=ON, which will again compile libcint along gint.

Further external dependencies required by libcint:

  • BLAS

Sturmians: sturmint

sturmint is currently not released (but this is planned for the near future). It can be enabled using the option -DGINT_ENABLE_STURMINT=ON.