Skip to main content
Ctrl K

gemdat

a Generalized Molecular Dynamics Analysis Tool

6
contributors
Get started
498 commitsLast commit ≈ 1 week ago38 stars9 forks

Cite this software

Description

Documentation Status Tests for GEMDAT Coverage PyPI - Python Version PyPI DOI Zenodo

GEMDAT banner GEMDAT banner

GEMDAT

Gemdat is a Python library for the analysis of diffusion in solid-state electrolytes from Molecular Dynamics simulations. Gemdat is built on top of Pymatgen, making it straightforward to integrate it into your Pymatgen-based workflows.

With Gemdat, you can:

  • Explore your MD simulation via an easy-to-use Python API
  • Load and analyze trajectories from VASP, LAMMPS, GROMACS, and ASE simulation data
  • Find jumps and transitions between sites
  • Effortlessly calculate tracer and jump diffusivity
  • Easily perform kinisi diffusion analysis
  • Characterize and visualize diffusion pathways
  • Plot main structural and diffusion properties

To install:

pip install gemdat

The source code is available from Github.

Suggestions, improvements, and edits are most welcome.

Usage

The following snippet to analyze the diffusion trajectory from VASP data.

from gemdat import Trajectory

trajectory = Trajectory.from_vasprun('../example/vasprun.xml')

trajectory.plot_displacement_per_element()

diff_trajectory = trajectory.filter('Li')

diff_trajectory.plot_msd_per_element()
diff_trajectory.plot_displacement_per_atom()
diff_trajectory.plot_displacement_histogram()
diff_trajectory.plot_frequency_vs_occurence()
diff_trajectory.plot_vibrational_amplitudes()

Characterize transitions and jumps between sites:

from gemdat.io import load_known_material

sites = load_known_material('argyrodite', supercell=(2, 1, 1))

transitions = trajectory.transitions_between_sites(
    sites=sites,
    floating_specie='Li',
)

jumps = transitions.jumps()

jumps.plot_jumps_vs_distance()
jumps.plot_jumps_vs_time()
jumps.plot_collective_jumps()
jumps.plot_jumps_3d()

jumps.jump_diffusivity(dimensions=3)

To calculate different metrics, such as tracer diffusivity:

from gemdat import TrajectoryMetrics

metrics = TrajectoryMetrics(diff_trajectory)

metrics.tracer_diffusivity(dimensions=3)
metrics.haven_ratio(dimensions=3)
metrics.tracer_conductivity(dimensions=3)
metrics.particle_density()
metrics.vibration_amplitude()

Development

Check out our Contributing Guidelines to get started with development.

How to Cite

  • A.K. Lavrinenko, T. Famprikis, V. Landgraf, J.R. Heringa, S. Smeets, V. Azizi, S. Ciarella, M. Wagemaker & A. Vasileiadis. GEMDAT: a Python toolkit for site-resolved diffusion analysis in solid-state molecular dynamics. npj Comput Mater (2026). doi: 10.1038/s41524-026-02133-7

Dissemination

Credits

Some parts of the code in this repository are based on Matlab code to analyse Molecular Dynamics simulations.

For background information on how some of the properties are calculated, check out the accompanying paper:

  • Niek J.J. de Klerk, Eveline van der Maas and Marnix Wagemaker, ACS Applied Energy Materials, (2018), doi: 10.1021/acsaem.8b00457
Keywords
Programming language
  • Python 100%
License
</>Source code
Packages

Participating organisations

Delft University of Technology
Netherlands eScience Center
Natural Sciences & Engineering
Natural Sciences & Engineering

Contributors

Contact person

Stef Smeets

Stef Smeets

Research Software Engineer
Netherlands eScience Center
0000-0002-5413-9038Mail Stef
Stef Smeets
Research Software Engineer
Netherlands eScience Center
0000-0002-5413-9038
AV
Alexandros Vasileiadis
Lead Applicant
Delft University of Technology
0000-0001-9761-7936
TF
Theodosios Famprikis
AL
Anastasiia Lavrinenko
Phd
TU Delft
VA
Research Software Engineer
Netherlands eScience Center
0000-0003-3535-8320

Related projects

GEMDAT

Developing a Generalized Molecular Dynamics Analysis Tool

Updated 13 months ago
Finished