Skip to content
Integral library multiplexer for electronic structure theory
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.travis
cmake
doc
examples
external
src
templates
tests
.clang-format
.clang-tidy
.gitignore
.travis.yml
.ycm_extra_conf.py
AUTHORS.md
CMakeLists.txt
IDEA.md
LICENCE
LICENSE
README.md
setup.cfg
update_from_sister_repos.sh
update_from_sisters.lib.sh

README.md

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.

You can’t perform that action at this time.