Polyquant uses C++20. This is required because the CI operations use https://en.cppreference.com/w/cpp/header/bit.
libeigen/eigen Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.
boostorg/boost Super-project for modularized Boost
mcodev31/libmsym molecular point group symmetry lib
catchorg/Catch2
A modern, C++-native, test framework for unit-tests, TDD and BDD - using C++14, C++17 and later (C++11 support is in v2.x branch, and C++03 on the Catch1.x branch)
Polyquant
uses Catch2 for testing.
nlohmann/json JSON for Modern C++
Polyquant
uses nlohmann/json
to parse the MolSSI/QCSchema-like input format
evaleev/libint Libint is a high-performance library for computing Gaussian integrals in quantum mechanics
Polyquant
uses evaleev/libint
to calculate integrals over gaussian basis functions.
To convert for qmcpack you need to configure with -with-cartgauss-ordering=gamess
The libint
branch has a configured library compatible with Polyquant. It is recommended to build the libint branch, install, and then build the main branch.
BlueBrain/HighFive HighFive - Header-only C++ HDF5 interface
Polyquant
uses BlueBrain/HighFive
to dump HDF5 files for use with QMCPACK and for restarts.
include_what_you_use
lets you check that the headers aren't including too much unnecessary stuff.Polyquant
uses a combination of libraries to generate documentations from comments included in the source:
Polyquant
uses clang-format
to format all of the hpp
and cpp
files
Polyquant
uses cmake-format
to format all of the CMakeLists.txt
pacman -Syu clang
yay -Syu cmake-format include-what-you-use doxygen
pip install sphinx sphinx-rtd-theme breathe exhale m2r --user