SkillAgentSearch skills...

PeriDEM

High-fidelity modeling of granular media consisting of deformable complex-shaped particles

Install / Use

/learn @prashjha/PeriDEM
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

PeriDEM - High-fidelity modeling of granular media consisting of deformable complex-shaped particles

Codacy Badge CircleCI codecov GitHub release GitHub license GitHub issues Join the chat at https://gitter.im/PeriDEM/community GitHub repo size DOI DOI

<p align="center"> <img src="./assets/logo/logo.png" width="400"> </p>

Table of contents

Introduction

Implementation of the high-fidelity model of granular media that combines the advantages of peridynamics and the discrete element method (DEM). The model has the following advantages over existing mechanical models for granular media:

  • handle intra-particle deformation and breakage/damage
  • handle the arbitrary shape of the particle. Inter-particle contact is not specific to any shape of the particle
  • tunable inter-particle contact parameters
  • easy to add different mechanical constitutive laws within peridynamics for individual particle deformation

For more details about the model and results, we refer to the paper:

Prashant K. Jha, Prathamesh S. Desai, Debdeep Bhattacharya, Robert P Lipton (2020). Peridynamics-based discrete element method (PeriDEM) model of granular systems involving breakage of arbitrarily shaped particles. Journal of the Mechanics and Physics of Solids, 151, p.104376. Doi https://doi.org/10.1016/j.jmps.2021.104376. Download pdf here.

PeriDEM is published as a software article in the Journal of Open Source Software:

Prashant K. Jha (2025). PeriDEM -- High-fidelity modeling of granular media consisting of deformable complex-shaped particles Journal of Open Source Software, vol. 10, 116, p.7525, DOI 10.21105/joss.07525. Download pdf here.

We have created channels on various platforms:

Documentation

Doxygen generated documentation details functions and objects in the library.

Tutorial

We explain the setting-up of simulations in further details in tutorial. We consider two-particle test setup with non-circular particles and compressive-test to discuss the various aspects of simulations.

Examples

We next highlight some key examples. Further details are available in examples/README.md.

Two-particle tests

| <img src="./assets/two_particle_circ_no_damp.gif" width="200"> | <img src="./assets/two_particle_circ_damp.gif" width="200"> | |:-------------------------------------------------------------------------:|:--------------------------------------------------------------------:| | Circular without damping | Circular with damping |

| <img src="./assets/two_particle_circ_diff_material.gif" width="200"> | <img src="./assets/two_particle_circ_damp_diff_radius.gif" width="200"> | <img src="./assets/two_particle_circ_diff_radius_diff_material.gif" width="200"> | |:--------------------------------------------------------------------------:|:---------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------:| | Different materials | Different radius | Different radius different material |

Two-particle with wall test

| <img src="./assets/two_particle_wall_concave_diff_material_diff_size.gif" width="400"> | |:------------------------------------------------------------------------------------------:| | Concave particles |

Compressive tests

Setup for this test consists of 502 circular and hexagonal-shaped particles of varying radius and orientation inside a rectangle container. The container's top wall is moving downward at a prescribed speed, resulting in the compression of the particle system. The quantity of interest is the compressive strength of the media. The reaction force (downward) on the moving wall should increase with the increasing penetration of this wall; however, after a certain amount of compression of the media, the damage will initiate in individual particles, especially those connected by force chains, resulting in the yielding of the system. For more details, we refer to Jha et al. 2021

| <img src="./assets/compressive_test.gif" width="600"> | |:-----------------------------------------------------:| | Compressive test simulation |

Attrition tests

We consider mix of different particles in a rotating container. Particles considered include circular, triangular, hexagonal, and drum shaped. Particles come in large and small shapes (their sizes are purturbed randomly). In order to to introduce diversity of material properties, we considered large particles to be tougher compared to the smaller ones. Setup files are in examples/PeriDEM/attrition_tests

| <img src="./assets/attrition_test_sim1.gif" width="250"> | <img src="./assets/attrition_test_sim2.gif" width="250"> | |:----------------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| | Rotating cylinder (setup) | Rotating cylinder with center of rotation offset (setup) |

Complex container geometries can be considered as well. For example, the image below is from attrition_tests and includes rotating rectangle with opening and internal groves of different shapes. The rotating container with particles inside is contained within another rectangle which is fixed in its place.

<img src="./examples/PeriDEM/attrition_tests/sim4_multi_particle_circ_tri_drum_hex_with_rotating_rectangle_container_with_protrusion_and_opening_within_bigger_rectangle_container/init_view.png" width="600">

Single particle deformation

We can use PeriDEM executable or Peridynamics executable in apps directory to simulate the deformation of single particle/structure using peridynamics. See examples/README.md and examples/Peridynamics folder.

Brief implementation details

The main implementation of the model is carried out in the model directory dem. The model is implemented in class DEMModel. Function DEMModel::run() performs the simulation. We next look at some key methods in DEMModel in more details:

DEMModel::run()

This function does three tasks:

void model::DEMModel::run(inp::Input *deck) {
    // initialize data
    init();
    
    // check for restart
    if (d_modelDeck_p->d_isRestartActive)
      restart(deck);
    
    // integrate 
View on GitHub
GitHub Stars72
CategoryDevelopment
Updated17d ago
Forks17

Languages

C++

Security Score

100/100

Audited on Mar 16, 2026

No findings