Skip to main content

SBEL Chrono DEM-Engine

Now version 3: GPU-accelerated discrete element simulation built for performance, 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 demo animation

DEM-Engine simulation animation DEM-Engine demo animation

What's new in DEME 3?

Get started with DEME 3: installation guide — Python packages, C++ source builds, and system requirements.

  • Mesh contact: mesh–mesh collisions and a new clump–mesh scheme that combines triangle contributions into patch/island contacts before evaluating forces.
  • Rigid combined bodies: group members into one rigid assembly, replacing geometry-wildcard-based constructions with member-level controls.
  • On-device coupling: exchange state and forces directly with other GPU packages.
  • Persistent kernel caching: reuse compiled kernels across compatible repeated runs to reduce initialization time.
  • Interactive visualization and expanded Python workflows.

When to stay with DEME 2: DEME 3 currently supports only NVIDIA GPUs and may use more memory. If you need non-NVIDIA GPU support, or your application does not need mesh–mesh contact or the new aggregated clump–mesh contact scheme, consider staying with DEME 2.4.2, the final DEME 2 release.

For C++, use the upstream v2.4.2 tag:

git clone --branch v2.4.2 --recurse-submodules https://github.com/projectchrono/DEM-Engine.git DEM-Engine-2.4.2

For pyDEME, explicitly pin the Python distribution: python -m pip install "deme==2.4.2". Use version 2.4.2's installation requirements and examples for either route. See DEME 3 features and migration considerations for details, including the contact-model changes and memory tradeoffs.

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. DEME supports mesh–mesh contact, allowing mesh particles to collide with one another.
  • 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 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.
  • On-device co-simulation. Exchange simulation state and forces directly with other GPU-based packages through device buffers, avoiding CPU round trips for the exchanged data. Host data access also supports coupling to solvers such as Chrono for multibody dynamics or other physics.
  • 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.

import deme

solver = deme.DEMSolver()

After installation, run a Python demo from the repository root:

python python/demos/single_sphere_collide.py --smoke-test

This headless example simulates two colliding spheres over meshes and writes visualization files. The first run may take time to compile CUDA kernels. See the Python demos for more examples, command-line options, and instructions for viewing their output.

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.13

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.13
File
deme3-3.0.13-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.13-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
deme3-3.0.13-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
deme3-3.0.13-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.13-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.13-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.13-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL deme3-3.0.13-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
cc369699dd916eb0285d36e9708cf9b248069fca18ef700657e9a3d7377a7d4d
BLAKE2b-256 checksum
How to use checksums
8ca71f6a03a1f8bed750628a9d7527a365b124362ffec6345d1b012c46dcec36
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 16, 2026.

Transparency log

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

Download URL deme3-3.0.13-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
7d23ac3a5e4eab003bb75d69c7c23f0f2b490ee4f8cb54c652e063e67a752d25
BLAKE2b-256 checksum
How to use checksums
4198135a24636243cc159e8889b200acfa8d110d463fbd0b4097206c910267c4
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 16, 2026.

Transparency log

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

Download URL deme3-3.0.13-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
0c1e90454eeb8bd90da5cf7a8579c101a8759c1e08282b6b9f08757ace7f7d6e
BLAKE2b-256 checksum
How to use checksums
15d7f97d88a49b3324c66da3343b2f9b7dc9d707e168acdc944460d68fed4eae
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 16, 2026.

Transparency log

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

Download URL deme3-3.0.13-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
47d25fda81321e98d08f3c0c94ef456262a53ca151021dff1546d6da25010011
BLAKE2b-256 checksum
How to use checksums
c3cfe34906dfd507b9af458f39aa9ab9861ce80c61c358577b7bf11458b01510
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 16, 2026.

Transparency log

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

Download URL deme3-3.0.13-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
5015a337f9910d02d3162c8ab0cf27f4fb733b9fcb41e83ac3fc5e189481c70e
BLAKE2b-256 checksum
How to use checksums
ee5bf82fb3d03753e119b89a24944330ad0f8e51da7cf7c37f5616c80780e562
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 16, 2026.

Transparency log

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

Download URL deme3-3.0.13-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
3d1b77092452e75a9ed6a3a933e1aaf4337b8588ebed691d657dab95ff29594f
BLAKE2b-256 checksum
How to use checksums
26bd7299f65f3830bec640b321d8e3c10187924f1fa659f660eae5a69a3632d6
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 16, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

3.0.13 This release

6 release files

3.0.12

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