Skip to content

maxscheurer/cppe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

85fa0c1 · Aug 24, 2024
Aug 1, 2024
Aug 1, 2024
Jan 7, 2019
Feb 3, 2021
Aug 1, 2024
Aug 1, 2024
Aug 1, 2019
Aug 1, 2024
Aug 1, 2024
Aug 1, 2024
Nov 7, 2018
Nov 13, 2019
Aug 1, 2024
Nov 5, 2020
May 5, 2021
Aug 24, 2024

Repository files navigation

CI Documentation Status Language grade: C/C++

Conda PyPI

CPPE is an open-source, light-weight C++ and Python library for Polarizable Embedding (PE)1,2 calculations. It provides an easy-to-use API to implement PE for ground-state self-consistent field (SCF) calculations and post-SCF methods. A convenient Python interface is also available.

CPPE enables PE calculations in the following programs:

Linear scaling electric field computations in CPPE are achieved through autogenerated code by the fmmgen library.3

Examples for the open-source Python-driven programs can be found here.

Installation

Conda

The easiest way to install CPPE is via conda:

conda install cppe -c conda-forge

Build from Source

Manual builds can be done using CMake by running

git clone https://github.com/maxscheurer/cppe
cd cppe; mkdir build; cd build
cmake ..
make

pip/setuptools

Another way to install CPPE is via pip:

pip install cppe

Note that CPPE will be built from source and a C++14 compatible compiler is required (see below), and OpenMP parallelization is disabled in the setup.py/pip installation. Alternatively, CPPE can be built from source using the setup.py script with

git clone https://github.com/maxscheurer/cppe
cd cppe
python setup.py install

Python interface

If the Python interface should be built, specify the CMake option -DENABLE_PYTHON_INTERFACE=ON. If pybind11 is not installed, CMake will automatically download pybind11 and install it locally. Installing through setup.py will always build the Python interface.

Dependencies

  • C++ 14 compiler
  • Python >= 3.6 (interpreter and development packages)

Tests

The tests can be run with

python setup.py build_ext -i; python setup.py test

for the setup.py build, or

source setup_environment.sh; py.test

for the CMake build.

Citation

Papers:
Code: DOI

CPPE: An Open-Source C++ and Python Library for Polarizable Embedding
Maximilian Scheurer, Peter Reinholdt, Erik Rosendahl Kjellgren, Jógvan Magnus Haugaard Olsen, Andreas Dreuw, and Jacob Kongsted; Journal of Chemical Theory and Computation 2019 15 (11), 6154-6163, DOI: 10.1021/acs.jctc.9b00758

If you use the linear-scaling FMM implementation, please also cite:

Efficient Open-Source Implementations of Linear-Scaling Polarizable Embedding: Use Octrees to Save the Trees
Maximilian Scheurer, Peter Reinholdt, Jógvan Magnus Haugaard Olsen, Andreas Dreuw, and Jacob Kongsted; Journal of Chemical Theory and Computation 2021, DOI: 10.1021/acs.jctc.1c00225

Literature

1 Olsen, J. M. H.; Aidas, K.; Kongsted, J. (2010). Excited States in Solution through Polarizable Embedding. J. Chem. Theory Comput., 6 (12), 3721–3734. https://doi.org/10.1021/ct1003803

2 Olsen, J. M. H.; Kongsted, J. (2011). Molecular Properties through Polarizable Embedding. Advances in Quantum Chemistry (Vol. 61). https://doi.org/10.1016/B978-0-12-386013-2.00003-6

3 Pepper, R.; Fangohr, H. (2020). fmmgen: Automatic Code Generation of Operators for Cartesian Fast Multipole and Barnes-Hut Methods. arXiv:2005.12351