Granular Dam-Break#

This example simulates the dam-break flow of a dry granular material using the discrete element method (DEM). More information regarding the DEM parameters are given in the Lethe documentation, i.e. DEM parameters.

Features#

  • Solvers: lethe-particles

  • Three-dimensional problem

  • Moving floating mesh

  • Load-balancing

Files Used in This Example#

All files mentioned below are located in the example’s folder (examples/dem/3d-dam-break).

  • Geometry file: square.geo

  • Mesh file: square.msh

  • Parameters file for the problem (\(H=20 \, \text{cm}\)): granular-dam-break.prm

  • Parameters file for the \(H=40 \, \text{cm}\) bed: granular-dam-break-H-40cm.prm

Description of the Case#

This example simulates the dam-break flow of a dry powder. First, a packing of particles is generated by inserting particles behind a sluice gate. After 0.5s, the sluice gate rises and the particles are able to flow freely, producing a dam-break flow. We compare the results we obtain with those of Evangelista et al. [1] To ensure that the simulation remains computationally efficient, we will scale-up the sand particles used by Evangelista et al. from a diameter of 1.6mm to 10mm. This reduces their number by a factor of approximately 250x. We first simulate case B1 of Evangelista et al., with a bed length of 60cm and bed height of 20cm. As an extension, we also simulate a bed height of 40cm (case B3).

Parameter File#

Mesh#

The domain we simulate is a rectangular box which is \(2\times0.4\times0.4\) meters and is made using the deal.ii grid generator. The grid is refined 4 times using the set initial refinement parameter.

subsection mesh
  set type               = dealii
  set grid type          = subdivided_hyper_rectangle
  set grid arguments     = 5,1,1 : 0,0,0 : 2,0.4,0.4 : false
  set initial refinement = 4
end

Lagrangian Physical Properties#

The particles are mono dispersed with a radius of 0.005 m and a density of 2560 \(kg/m^3\), respectively. We insert 60k particles to ensure an initial height of 0.2m in order to match the B1 experiment of Evangelista et al.. The friction coefficient and the rolling coefficient are the most important parameters in this simulation, since they control the final repose angle of the particles as well as the speed of the progression of the dam-break flow. Since sand is generally non-spherical, we choose relatively high values for the friction and the rolling friction coefficients.

subsection lagrangian physical properties
  set g                        = 0, -9.81, 0.0
  set number of particle types = 1
  subsection particle type 0
    set size distribution type            = uniform
    set diameter                          = 0.01
    set number of particles               = 60000
    set density particles                 = 2560
    set young modulus particles           = 1e6
    set poisson ratio particles           = 0.2
    set restitution coefficient particles = 0.9
    set friction coefficient particles    = 0.5
    set rolling friction particles        = 0.3
  end
  set young modulus wall           = 1e6
  set poisson ratio wall           = 0.2
  set restitution coefficient wall = 0.9
  set friction coefficient wall    = 0.5
  set rolling friction wall        = 0.3
end

Model Parameters#

In this example, we use the frequent load balancing method to ensure that the division of the domain amongst the various processing cores follow the particles.

subsection model parameters
  subsection contact detection
    set contact detection method                = dynamic
    set dynamic contact search size coefficient = 0.9
  end
  subsection load balancing
    set load balance method                     = frequent
    set frequency                               = 5000
    set threshold                               = 1.3
  end
  set particle particle contact force method  = hertz_mindlin_limit_overlap
  set rolling resistance torque method        = constant_resistance
  set particle wall contact force method      = nonlinear
  set integration method                      = velocity_verlet
end

Particle Insertion#

An insertion box is defined inside the rectangular box. 60 000 particles are inserted behind the sluice gate which is located at \(x=0.6\). It is important to note the size of the insertion box to make sure it is completely inside our geometry. Otherwise, particles will be lost during the insertion stage.

subsection insertion info
  set insertion method                               = volume
  set inserted number of particles at each time step = 60000
  set insertion frequency                            = 10000
  set insertion box points coordinates               = 0.0025, 0.0025, 0.0025 : 0.597, 0.340, 0.397
  set insertion distance threshold                   = 1.075
  set insertion maximum offset                       = 0.025
  set insertion prn seed                             = 19
end

Moving Solid Object#

The sluice gate which prevents the particle from floating is made of a 3D surface mesh of a flat wall. This is handled using the solid objects parameters. We insert one solid object which is generated using GMSH. To parametrize the motion of the sluice gate, we set its translational velocity to \(\mathbf{v}=[0,1,0]^T \forall t \in [0.5,0.7]s\) and we keep it static otherwise. This ensures that the sluice gate moves upward between 0.5 and 0.7s and stops moving afterwards. To ensure maximal computational efficiency, it is important to minimize the number of triangles used in the surface meshes that represent moving objects.

subsection solid objects
  subsection solid surfaces
    set number of solids = 1
    subsection solid object 0
      subsection mesh
        set type               = gmsh
        set file name          = square.msh
        set simplex            = true
        set initial refinement = 0
      end

      subsection translational velocity
        set Function expression = 0 ; if(t>0.5,if(t<0.7,1,0),0) ; 0
      end
      subsection angular velocity
        set Function expression = 0 ; 0 ; 0
      end
    end
  end
end

Simulation Control#

The simulation runs for 2 seconds of real time. We output the simulation results every 500 iterations.

subsection simulation control
  set time step         = 5e-5
  set time end          = 2
  set log frequency     = 500
  set output frequency  = 500
  set output path       = ./output/
  set output boundaries = true
end

Running the Simulation#

The simulation is launched using a single input file for the insertion of the particles, the opening of the sluice gate and the granular motion of the particles.

 mpirun -np 8 lethe-particles granular-dam-break.prm

Note

This example needs a simulation time of approximately 10 minutes on 8 processors using an 12th Gen Intel(R) Core(TM) i9-12900K.

Results#

Results for \(H=20 \ \text{cm}\)#

The following movie displays the dam-break flow:

The following image compares the final repose angle of the particles with the results of Evangelista et al. We note the good agreement between the two. Evangelista et al. also found experimentally that the particle height profile varied from \(0.2m\) at \(x=0.4m\) to \(\approx 0.025m\) at \(x=0.8m\) which is in good agreement with what we observe here.

Height profile comparison

Results for \(H=40 \ \text{cm}\)#

The following image compares the final granular profile of the particles with the results of Evangelista et al (illustrated using a magenta curve). We note the good agreement between the two, except for the fact that a few particles have moved further away (\(x>1.1m\)) than the one from the experiments of Evangelista et al. This is a consequence of the fact that we have used larger particles to simulate the case.

Height profile comparison

Possibilities for Extension#

  • Study the impact of the friction and rolling friction coefficients on the dam-break flow.

  • Change the height of the bed to 30cm or 50m and try to reproduce the other experiments of Evangelista et al.

  • Use smaller particles and reproduce the full experiment of Evangelista et al.

Reference#