Skip to main content

DEM-Engine

GPU-accelerated discrete element simulation with C++ and Python APIs.

DEM-Engine (DEME) simulates granular materials using one or two NVIDIA GPUs. This branch supports sphere clumps, mesh particles, analytical boundaries, rigid combined owners, and customizable contact force models. It also provides an interactive visualizer and host/device data access for co-simulation.

DEM-Engine granular simulation DEM-Engine simulation animation

DEM-Engine demo animation DEM-Engine demo animation

Why use DEME?

DEME is designed for large granular simulations where particle shape, contact physics, and computational cost matter. Typical applications include mixing, hopper flow, soil penetration, wheel–terrain interaction, and granular impact.

  • Complex particle shapes. Represent grains with clumped spheres or mesh particles, and build rigid assemblies with combined owners.
  • Custom contact physics. Define your own contact force models, including cohesion, electrostatic interactions, and bonds that can break. Material properties and per-contact variables let you tailor the model to your problem.
  • GPU performance. Use one or two NVIDIA GPUs, including consumer and data center hardware. As an illustrative benchmark from the main-branch README, one million three-sphere clumps simulated for one million timesteps takes around one hour on two RTX 3080s. Runtime depends on the geometry, contact model, and simulation settings.
  • Control over the simulation. Prescribe motion, extract forces, and update geometry to model processes such as mesh deformation or grain breakage. The examples show how to supply these behaviors through the API.
  • Co-simulation. Couple DEME to other solvers, such as Chrono, for multibody dynamics or other physics. Host and GPU data access support exchanging state and forces.
  • C++ and Python workflows. Start with Python or integrate the C++ library into an application. The C++ API follows a Chrono-like design, and the interactive visualizer helps inspect simulations as they run.

Start here

Task Documentation
Install Python, build C++, or install the C++ library Installation
Run a first simulation Quickstart · Python example
Understand owners, families, frames, and runtime setup Core concepts
Use mesh particles, templates, and combined bodies Mesh particles
Find a demo to adapt Examples · C++ sources
Use Python Python guide · Demos · API reference
Look up the C++ API C++ reference
Select GPUs or exchange simulation data Device selection · Data access
Visualize results Interactive visualization and ParaView
Diagnose installation or runtime errors Troubleshooting
Build or host the documentation website Build and preview · Hosting
Contribute or cite DEME Project information · Architecture

The documentation index collects the complete guide. The C++ reference is rendered from Doxygen by the documentation build; build the site to browse C++ declarations and Python documentation together.

Python in brief

On a supported Linux or WSL2 host with a CUDA 12.9-compatible NVIDIA driver:

python -m pip install "deme[cuda12]"

The cuda12 extra installs CUDA runtime libraries, NVRTC, and headers through pip; no system CUDA Toolkit installation is needed for Python wheels. This setup applies only to the Python extension; standalone C++ applications keep their normal CUDA configuration. Use plain pip install deme to use an existing toolkit. Preview builds from Mesh_Particles_Py are published as deme3 (pip install "deme3[cuda12]"), with the same import deme namespace.

import deme

solver = deme.DEMSolver()

See installation requirements for wheel compatibility and source builds. New scripts should use import deme; import DEME remains a compatibility alias. Features in this checkout may be newer than a released wheel.

Community and license

Demo videos · Project Chrono forum · Contributors · BSD-3-Clause license · Citation

Citation

If you use DEME in your research, please cite the DEM-Engine design and usage paper:

@article{zhang_2024_deme,
title = {Chrono {DEM-Engine}: A Discrete Element Method dual-{GPU} simulator with customizable contact forces and element shape},
journal = {Computer Physics Communications},
volume = {300},
pages = {109196},
year = {2024},
issn = {0010-4655},
doi = {https://doi.org/10.1016/j.cpc.2024.109196},
author = {Ruochun Zhang and Bonaventura Tagliafierro and Colin {Vanden Heuvel} and Shlok Sabarwal and Luning Bakke and Yulong Yue and Xin Wei and Radu Serban and Dan Negruţ},
keywords = {Discrete Element Method, GPU computing, Physics-based simulation, Scientific package, BSD3 open-source},
}

For the clump-based granular solver and its application to rover dynamics, see the granular simulation paper:

@article{ruochunGRC-DEM2023,
      title={A {GPU}-accelerated simulator for the {DEM} analysis of granular systems composed of clump-shaped elements}, 
      author={Ruochun Zhang and Colin {Vanden Heuvel} and Alexander Schepelmann and Arno Rogg and Dimitrios Apostolopoulos and Samuel Chandler and Radu Serban and Dan Negrut},
      year={2024},
      journal={Engineering with Computers},
      doi={https://doi.org/10.1007/s00366-023-01921-9}
}

Metadata

Release files for deme3 3.0.12

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for deme3 3.0.12
File
deme3-3.0.12-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
deme3-3.0.12-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
deme3-3.0.12-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
deme3-3.0.12-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
deme3-3.0.12-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
deme3-3.0.12-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details

Total release size: 307.4 MB

Release files / deme3-3.0.12-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL deme3-3.0.12-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 51.2 MB
Tags CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
e4c46ada68fc6fececd5f24a1fc0bfcb21fcb2f5c4ff6a1e7aa9300969fc7dc7
BLAKE2b-256 checksum
How to use checksums
d880c4a4d71bd5133badad02227aa6483aeea1d452d40ad5b5ffbb052aff4627
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.

Transparency log

Release files / deme3-3.0.12-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL deme3-3.0.12-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 51.2 MB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
c5ac5259a657279f8162b297bdac0f660c0461bdae693206fc1b73ec490ed281
BLAKE2b-256 checksum
How to use checksums
5c1af2623dd5554024effade9be46ca9f6b3f7f14ea47f9852d6905fd97d653c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.

Transparency log

Release files / deme3-3.0.12-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL deme3-3.0.12-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 51.2 MB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
5f1d2ebf07a3efc216a579c7191362930d76189365a7b32289a84b962b5788e0
BLAKE2b-256 checksum
How to use checksums
d025f3c430f22b9a4e443bd110d5e2ed70dc3f631a90aeebfd896ecec229c5dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.

Transparency log

Release files / deme3-3.0.12-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL deme3-3.0.12-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 51.2 MB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
c82a542fd210d197cefcd6b983ced6ecf731a65494d8aaea1ccabd3fc76a62ed
BLAKE2b-256 checksum
How to use checksums
b38e9e6cc1047c77c4e2f99c0e17957110d7228ec8e6372fbbb91c329443ff77
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.

Transparency log

Release files / deme3-3.0.12-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL deme3-3.0.12-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 51.2 MB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
4d834f0e8d2cfc323ff65af053c3da406cc33f9d080bdb02a692a7183e14a411
BLAKE2b-256 checksum
How to use checksums
8c4c694afa602dbfe3ca3086efaefedc27ebc8ae4e6ef029fc724ca1167c20a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.

Transparency log

Release files / deme3-3.0.12-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL deme3-3.0.12-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 51.2 MB
Tags CPython 3.9 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
aab8e2cd40590647d9b2de1b679d04b5315cc2f86ff132be37573e47e6709839
BLAKE2b-256 checksum
How to use checksums
e166e11f71a39c143a74f92d8d44a89c3273cab2c360687c03cb852cabec6d3b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.

Transparency log

Release history Release notifications | RSS feed

3.0.13

6 release files

This release

3.0.12 This release

6 release files

3.0.9

6 release files

3.0.8

6 release files

3.0.7

6 release files

3.0.6

6 release files

3.0.5

6 release files

3.0.4

6 release files

3.0.3

6 release files

3.0.1

6 release files

3.0.0

6 release files

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