Skip to main content

Rust/Rayon implementation for DFTB calculations.

Project description

Rust_DFTB

rust_dftb is a Rust/Rayon implementation for DFTB-style calculations with a Python interface. The repository is intended for development and verification of the Rust backend, Python API, and ASE wrapper.

This package does not bundle Slater-Koster parameter files. Pass an external directory containing .skf files through skf_dir.

Requirements

  • Python >= 3.10
  • Rust toolchain >= 1.76, including cargo
  • maturin >= 1.5,<2
  • NumPy >= 1.23
  • A BLAS/LAPACK backend
  • Optional: ASE, for rust_dftb.ase and the ASE examples

The default Cargo feature set uses openblas-system, so the build expects system OpenBLAS with CBLAS/LAPACKE headers and libraries. On Debian/Ubuntu-like systems this usually means installing the OpenBLAS development package before building.

Development install

python -m pip install -U pip maturin numpy
maturin develop --release --features python

For ASE support:

python -m pip install ase

For tests and development tools:

python -m pip install -e ".[dev]"
python -m pytest
cargo test

Minimal Python API example

import numpy as np
from rust_dftb import DftbCalculator, backend_info

z = np.array([1, 1], dtype=np.int64)
positions = np.array(
    [[0.0, 0.0, 0.0], [0.74, 0.0, 0.0]],
    dtype=np.float64,
)

print(backend_info())

calc = DftbCalculator(skf_dir="/path/to/skf", order=2, parallel=True)
print(calc.energy(z, positions))
print(calc.forces(z, positions))

For periodic calculations, pass a cell in Angstrom:

cell = np.eye(3) * 20.0
print(calc.energy(z, positions, cell_angstrom=cell))
print(calc.stress(z, positions, cell_angstrom=cell))

Minimal ASE example

from ase import Atoms
from rust_dftb.ase import ase_calculator

atoms = Atoms("H2", positions=[[0.0, 0.0, 0.0], [0.74, 0.0, 0.0]])
atoms.calc = ase_calculator(skf_dir="/path/to/skf", order=2, parallel=True)

print(atoms.get_potential_energy())
print(atoms.get_forces())

ASE-facing quantities use ASE conventions: positions and cells in Angstrom, energies in eV, forces in eV/Angstrom, and stress in eV/Angstrom^3. The lower-level Python API uses the native units documented in the implementation and examples.

Examples

More complete usage examples are in examples/:

python examples/python_api_all_levels.py --skf-dir /path/to/skf --structure water
python examples/ase_all_levels.py --skf-dir /path/to/skf --structure methane --levels dftb2

See examples/README.md for the longer walkthroughs.

References

The implementation and examples in this repository are related to the following DFTB, SCC-DFTB, DFTB3, multipole-extended DFTB, and ASE references.

  1. D. Porezag, T. Frauenheim, T. Köhler, G. Seifert, and R. Kaschner, “Construction of tight-binding-like potentials on the basis of density-functional theory: Application to carbon,” Phys. Rev. B 51, 12947 (1995). DOI: 10.1103/PhysRevB.51.12947.

  2. M. Elstner, D. Porezag, G. Jungnickel, J. Elsner, M. Haugk, T. Frauenheim, S. Suhai, and G. Seifert, “Self-consistent-charge density-functional tight-binding method for simulations of complex materials properties,” Phys. Rev. B 58, 7260 (1998). DOI: 10.1103/PhysRevB.58.7260.

  3. M. Gaus, Q. Cui, and M. Elstner, “DFTB3: Extension of the self-consistent-charge density-functional tight-binding method (SCC-DFTB),” J. Chem. Theory Comput. 7, 931-948 (2011). DOI: 10.1021/ct100684s.

  4. V.-Q. Vuong, T. W. Williams, J. Li, Q. Cui, and I. S. Ufimtsev, “Multipole expansion of atomic electron density fluctuation interactions in the density-functional tight-binding method,” J. Chem. Theory Comput. 19, 8152-8171 (2023). DOI: 10.1021/acs.jctc.3c00778.

  5. A. H. Larsen et al., “The atomic simulation environment — a Python library for working with atoms,” J. Phys.: Condens. Matter 29, 273002 (2017). DOI: 10.1088/1361-648X/aa680e.

License

GPL-3.0-or-later.

Project details


Download files

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

Source Distribution

rust_dftb-0.1.1.tar.gz (198.7 kB view details)

Uploaded Source

File details

Details for the file rust_dftb-0.1.1.tar.gz.

File metadata

  • Download URL: rust_dftb-0.1.1.tar.gz
  • Upload date:
  • Size: 198.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for rust_dftb-0.1.1.tar.gz
Algorithm Hash digest
SHA256 0fe89c8c9c3132deeb95a8a8bdcc43dae7e504c32c958844fc07de5069455ed5
MD5 7f875dd979726239944b550e13616efb
BLAKE2b-256 101cb0b79598f2fe7e5dae8f50d0b4d50d72c649666f1e838b12b543449595fb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page