Silo#
This example simulates the filling and discharge of particles in a wedge-shaped silo. We set up this simulation according to the experiments of Golshan et al. [1]. It is recommended to visit the DEM parameters for more detailed information on the concepts and physical meanings of the parameters.
Features#
Solvers:
lethe-particles
Floating walls
GMSH grids
Checkpointing (restart)
Files Used in this Example#
Parameter file:
examples/dem/3d-silo/silo-Golshan.prm
Geometry file:
examples/dem/3d-silo/silo-Golshan.geo
Mesh file:
examples/dem/3d-silo/silo-Golshan.msh
Description of the Case#
This simulation consists of two stages: filling (0-4 s) and discharge (4-30 s) of particles. During the filling stage, we use a floating wall to keep the inserted particles in the hopper region of the silo. When all the particles are inserted and packed in the hopper, we remove the floating wall and the particles leave the hopper.
Parameter File#
Mesh#
In this example, we use a mesh generated using Gmsh. We refine this mesh once by setting initial refinement = 1
to ensure that the cells are sufficiently small to enable efficient contact detection. The mesh generated by Gmsh contains diamond cells, which are cells that only share a line with the boundary and not a complete face. check diamond cells = true
enables searching for diamond-shaped boundary cells. Such cells can appear in unstructured grids, but they are detrimental to the stability of DEM simulations. Enabling this option adds these cells to the particle-wall contact search cells and is necessary to ensure stable collisions with the wall in the vicinity of diamond cells.
subsection mesh
set type = gmsh
set file name = ./silo-Golshan.msh
set check diamond cells = true
set initial refinement = 1
end
Insertion Info#
An insertion box is defined inside and on the top of the silo.
subsection insertion info
set insertion method = volume
set inserted number of particles at each time step = 20000
set insertion frequency = 10000
set insertion box points coordinates = -0.37, -0.042, 0.9 : 0.37, 0.007, 1.09
set insertion distance threshold = 1.5
set insertion maximum offset = 0.1
set insertion prn seed = 19
end
Lagrangian Physical Properties#
The total number of particles in this simulation is equal to 132300.
subsection lagrangian physical properties
set g = 0.0, 0.0, -9.81
set number of particle types = 1
subsection particle type 0
set size distribution type = uniform
set diameter = 0.005833
set number of particles = 132300
set density particles = 600
set young modulus particles = 5000000
set poisson ratio particles = 0.5
set restitution coefficient particles = 0.7
set friction coefficient particles = 0.5
end
set young modulus wall = 5000000
set poisson ratio wall = 0.5
set restitution coefficient wall = 0.7
set friction coefficient wall = 0.5
end
Model Parameters#
subsection model parameters
subsection contact detection
set contact detection method = dynamic
set dynamic contact search size coefficient = 0.9
set neighborhood threshold = 1.3
end
subsection load balancing
set load balance method = frequent
set frequency = 10000
end
set particle particle contact force method = hertz_mindlin_limit_overlap
set particle wall contact force method = nonlinear
set integration method = velocity_verlet
end
Simulation Control#
subsection simulation control
set time step = 2e-5
set time end = 30
set log frequency = 1000
set output frequency = 1000
end
Restart#
In this subsection, we specify the checkpointing parameters. Checkpoints are very useful in long simulations. If the simulation breaks, we can continue the simulation from the last written checkpoint. First, we enable checkpointing by setting the checkpoint
parameter to true. Then, we specify the checkpointing frequency
.
subsection restart
set checkpoint = true
set frequency = 100000
end
Floating Walls#
The floating wall is a temporary flat wall (its start and end times are defined) and it is generally used for holding the particles during the filling of particles within the simulation domain.
In this subsection, the information on the floating walls is defined. First of all, the total number of floating walls
is specified. Then for each floating wall, we specify its normal vector
, a point on the wall
, start time
and end time
.
In this simulation, we need a floating wall in the filling stage (0-4 s). Hence, we set start time
and end time
equal to 0 and 4, respectively. The wall should be in the xy plane and be located at the bottom of the silo. We use this information to select the point on the stopper (0, 0, 0) and its normal vector (0, 0, 1).
subsection floating walls
set number of floating walls = 1
subsection wall 0
subsection point on wall
set x = 0
set y = 0
set z = 0
end
subsection normal vector
set nx = 0
set ny = 0
set nz = 1
end
set start time = 0
set end time = 4
end
end
Running the Simulation#
This simulation can be launched in parallel (e.g. using 8 processes) by running:
Warning
This example takes approximately 14 hours on 8 cores. This high computational time is due to the long simulation time (30 s of real-time).
Results#
Animation of the silo simulation:
Animation of the subdomains distribution throughout the simulation: