Skip to main content

libMBD

tests coverage python conda pypi commits since last commit license ruff doi

libMBD: A general-purpose package for scalable quantum many-body dispersion calculations. J. Hermann, M. Stöhr, S. Góger, S. Chaudhuri, B. Aradi, R. J. Maurer & A. Tkatchenko. J. Chem. Phys. 159, 174802 (2023)

libMBD implements the many-body dispersion (MBD) method in several programming languages and frameworks:

  • The Fortran implementation is the reference, most advanced implementation, with support for analytical gradients and distributed parallelism, and additional functionality beyond the MBD method itself. It provides a low-level and a high-level Fortran API, as well as a C API. Furthermore, Python bindings to the C API are provided.
  • The Python/Numpy implementation is intended for prototyping, and as a high-level language reference.
  • The Python/Tensorflow implementation is an experiment that should enable rapid prototyping of machine learning applications with MBD.

The Python-based implementations as well as Python bindings to the libMBD C API are accessible from the Python package called pyMBD.

libMBD is included in FHI-aims, Quantum Espresso, DFTB+, and ESL Bundle.

Installing

TL;DR Install prebuilt libMBD binaries via Conda-forge and pyMBD with Pip.

conda install -c conda-forge libmbd
pip install pymbd

One can also install the ScaLAPACK/MPI version.

conda install -c conda-forge 'libmbd=*=mpi_*' mpi4py
pip install pymbd[mpi]

Verify installation with

$ python -m pymbd
Expected energy:   -0.0002462647623815428
Calculated energy: -0.0002462647623817456

libMBD

libMBD uses CMake (≥ 3.22) for compiling and installing, and requires a Fortran compiler, LAPACK, and optionally ScaLAPACK/MPI.

On Ubuntu:

apt-get install gfortran libblas-dev liblapack-dev [mpi-default-dev mpi-default-bin libscalapack-mpi-dev]

On macOS:

brew install gcc [open-mpi scalapack]

The compiling and installation can then proceed with

cmake -B build [-DENABLE_SCALAPACK_MPI=ON]
make -C build install
[ctest --test-dir build]

This installs the libMBD shared library, C API header file, high-level Fortran API module file, and Cmake package files, and optionally runs tests.

pyMBD

pyMBD requires Python ≥ 3.10 and can be installed and updated using Pip, but requires installed libMBD as a dependency (see above).

pip install pymbd

To support libMBD built with ScaLAPACK/MPI, the mpi extras is required, which installs mpi4py as an extra dependency. In this case one has to make sure that mpi4py is linked against the same MPI library as libMBD (for instance by compiling both manually, or installing both via Conda-forge).

pip install pymbd[mpi]

If libMBD is installed in a non-standard location, you can point pyMBD to it with

env LIBMBD_PREFIX=<path to libMBD install prefix> pip install pymbd

If you don’t need the Fortran bindings in pyMBD, you can install it without the C extension, in which case pymbd.fortran becomes unimportable:

env LIBMBD_PREFIX= pip install pymbd

Examples

from pymbd import mbd_energy_species
from pymbd.fortran import MBDGeom

# pure Python implementation
energy = mbd_energy_species([(0, 0, 0), (0, 0, 7.5)], ['Ar', 'Ar'], [1, 1], 0.83)
# Fortran implementation
energy = MBDGeom([(0, 0, 0), (0, 0, 7.5)]).mbd_energy_species(
    ['Ar', 'Ar'], [1, 1], 0.83
)
use mbd, only: mbd_input_t, mbd_calc_t
use iso_fortran_env, only: real64

type(mbd_input_t) :: inp
type(mbd_calc_t) :: calc
real(real64) :: energy, gradients(3, 2)
integer :: code
character(200) :: origin, msg

inp%atom_types = ['Ar', 'Ar']
inp%coords = reshape([0d0, 0d0, 0d0, 0d0, 0d0, 7.5d0], [3, 2])
inp%xc = 'pbe'
call calc%init(inp)
call calc%get_exception(code, origin, msg)
if (code > 0) then
    print *, msg
    stop 1
end if
call calc%update_vdw_params_from_ratios([0.98d0, 0.98d0])
call calc%evaluate_vdw_method(energy)
call calc%get_gradients(gradients)
call calc%destroy()

Links

Developing

For development, a top-level Makefile is included, which configures and compiles libMBD, compiles the pyMBD C extension, and runs both libMBD and pyMBD tests.

git clone https://github.com/libmbd/libmbd.git && cd libmbd
python3 -m venv venv && source venv/bin/activate
make
# development work...
make

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pymbd-0.14.1.tar.gz (32.8 kB view details)

Uploaded Source

File details

Details for the file pymbd-0.14.1.tar.gz.

File metadata

  • Download URL: pymbd-0.14.1.tar.gz
  • Upload date:
  • Size: 32.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pymbd-0.14.1.tar.gz
Algorithm Hash digest
SHA256 86f2c23ce7802e60af4d4349fb3ffb6883c08a5dcdf8e5ece192fb0cfba852be
MD5 4a8c82ba19418eb1393f87d864e7a2d6
BLAKE2b-256 b74c7b166c951b0a9de267e1969fb87ef4048d47c9b060096998715e5b2ac90b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymbd-0.14.1.tar.gz:

Publisher: publish.yaml on libmbd/libmbd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.15.0

1 file

This release

0.14.1 This release

1 file

0.14.0

1 file

0.12.8

1 file

0.12.7

1 file

0.12.6

1 file

0.12.5

1 file

0.12.4

1 file

0.12.3

1 file

0.12.2

1 file

0.12.1

1 file

0.12.0

1 file

0.11.0.post1

1 file

0.11.0

1 file

0.10.4

1 file

0.10.3

1 file

0.10.2

1 file

0.10.1

1 file

0.10.0

1 file

0.9.3

1 file

0.9.2

2 files

0.9.1

2 files

0.9.0

2 files

0.8.0

1 file

0.7.0

1 file

0.6.0

1 file

0.5.0

1 file

0.4.1

1 file

0.4.0

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page