Awesome
<p align="center"> <a href="https://github.com/andysim/helpme/actions"> <img src="https://github.com/andysim/helpme/actions/workflows/build_and_test.yml/badge.svg?branch=master" /></a> <a href="https://codecov.io/gh/andysim/helpme"> <img src="https://img.shields.io/codecov/c/github/andysim/helpme/master.svg" /></a> <a href="https://lgtm.com/projects/g/andysim/helpme/context:cpp"><img alt="Language grade: C/C++" src="https://img.shields.io/lgtm/grade/cpp/g/andysim/helpme.svg?logo=lgtm&logoWidth=18"/></a> <a href="https://lgtm.com/projects/g/andysim/helpme/context:python"><img alt="Language grade: Python" src="https://img.shields.io/lgtm/grade/python/g/andysim/helpme.svg?logo=lgtm&logoWidth=18"/></a> <a href="https://opensource.org/licenses/BSD-3-Clause"><img src=https://img.shields.io/github/license/andysim/helpme.svg /></a> </p>About
helPME: an efficient library for particle mesh Ewald. The recursive acronym is a tip of the hat to early open source software tools and reflects the recursive algorithms that are key to helPME's support for arbitrary operators. The library is freely available and is designed to be easy to use, with minimal setup code required.
Features
- Available as a single C++ header.
- Support for C++/C/Fortran/Python bindings.
- Arbitrary operators including r<sup>-1</sup> (Coulomb) and r<sup>-6</sup> (dispersion).
- Ability to use any floating point precision mode, selectable at run time.
- Three dimensional parallel decomposition with MPI.
- OpenMP parallel threading within each MPI instance (still a work in progress).
- Support for arbitrary triclinic lattices and orientations thereof.
- Arbitrary order multipoles supported (still a work in progress).
- Memory for coordinates and forces is taken directly from the caller's pool, avoiding copies.
License
helPME is distributed under the BSD-3-clause open source license, as described in the LICENSE file in the top level of the repository. Some external dependencies are used that are licensed under different terms, as enumerated below.
Dependencies
- Either FFTW (GPL license) or MKL (ISSL license) required to carry out fast Fourier transforms.
- CMake required if building the code (BSD-3-clause license).
- pybind11 required if Python bindings are to be built (BSD-3-clause license).
- Catch2 for unit testing (BSL license).
Requirements
helPME is written in C++11, and should work with any modern (well, non-ancient) C++ compiler. Python and Fortran bindings are optional, and are built by default.
Authors
Andrew C. Simmonett (NIH) Lori A. Burns (GA Tech) Daniel R. Roe (NIH) Bernard R. Brooks (NIH)