LAMMPS (27 Jun 2024 - Development - patch_27Jun2024-930-g7036930360)
# pour two types of particles (cohesive and non-cohesive) into cylinder
# 'turn' cylinder by changing direction of gravity, then rotate it.
# This simulates a rotating drum powder characterization experiment.

variable        name string rotating_drum_two_types

atom_style      sphere
units           lj

###############################################
# Geometry-related parameters
###############################################

variable        boxx equal 30
variable        boxy equal 30
variable        boxz equal 50

variable        drum_rad equal ${boxx}*0.5
variable        drum_rad equal 30*0.5
variable        drum_height equal 20

variable        xc equal 0.5*${boxx}
variable        xc equal 0.5*30
variable        yc equal 0.5*${boxx}
variable        yc equal 0.5*30
variable        zc equal 0.5*${boxz}
variable        zc equal 0.5*50

###############################################
# Particle-related parameters
###############################################
variable        rlo equal 0.25
variable        rhi equal 0.5
variable        dlo equal 2.0*${rlo}
variable        dlo equal 2.0*0.25
variable        dhi equal 2.0*${rhi}
variable        dhi equal 2.0*0.5

variable        cyl_rad_inner equal ${drum_rad}-1.1*${rhi}
variable        cyl_rad_inner equal 15-1.1*${rhi}
variable        cyl_rad_inner equal 15-1.1*0.5

variable        dens equal 1.0

variable skin equal 0.4*${rhi}
variable skin equal 0.4*0.5

#############
processors * * 1
region          boxreg block 0 ${boxx} 0 ${boxy} 0 ${boxz}
region          boxreg block 0 30 0 ${boxy} 0 ${boxz}
region          boxreg block 0 30 0 30 0 ${boxz}
region          boxreg block 0 30 0 30 0 50
create_box      2 boxreg
Created orthogonal box = (0 0 0) to (30 30 50)
  2 by 2 by 1 MPI processor grid
change_box      all boundary p p f
Changing box ...

pair_style      granular
pair_coeff      1 * hertz/material 1e5 0.2 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji
pair_coeff      2 2 jkr 1e5 0.1 0.3 50 tangential mindlin NULL 1.0 0.5 rolling sds 1e3 1e3 0.1 twisting marshall

variable        theta equal 0

region          curved_wall cylinder z ${xc} ${yc} ${drum_rad} 0 ${drum_height} side in rotate v_theta ${xc} ${yc} 0 0 0 1
region          curved_wall cylinder z 15 ${yc} ${drum_rad} 0 ${drum_height} side in rotate v_theta ${xc} ${yc} 0 0 0 1
region          curved_wall cylinder z 15 15 ${drum_rad} 0 ${drum_height} side in rotate v_theta ${xc} ${yc} 0 0 0 1
region          curved_wall cylinder z 15 15 15 0 ${drum_height} side in rotate v_theta ${xc} ${yc} 0 0 0 1
region          curved_wall cylinder z 15 15 15 0 20 side in rotate v_theta ${xc} ${yc} 0 0 0 1
region          curved_wall cylinder z 15 15 15 0 20 side in rotate v_theta 15 ${yc} 0 0 0 1
region          curved_wall cylinder z 15 15 15 0 20 side in rotate v_theta 15 15 0 0 0 1
region          bottom_wall plane ${xc} ${yc} 0 0 0 1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
region          bottom_wall plane 15 ${yc} 0 0 0 1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
region          bottom_wall plane 15 15 0 0 0 1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
region          bottom_wall plane 15 15 0 0 0 1 side in rotate v_theta 15 ${yc} 0 0 0 1
region          bottom_wall plane 15 15 0 0 0 1 side in rotate v_theta 15 15 0 0 0 1

region          insreg cylinder z ${xc} ${yc} ${cyl_rad_inner} ${drum_height} ${boxz}
region          insreg cylinder z 15 ${yc} ${cyl_rad_inner} ${drum_height} ${boxz}
region          insreg cylinder z 15 15 ${cyl_rad_inner} ${drum_height} ${boxz}
region          insreg cylinder z 15 15 14.45 ${drum_height} ${boxz}
region          insreg cylinder z 15 15 14.45 20 ${boxz}
region          insreg cylinder z 15 15 14.45 20 50

fix             0 all balance 100 1.0 shift xy 5 1.1
fix             1 all nve/sphere
fix             grav all gravity 10 vector 0 0 -1
fix             ins1 all pour 2000 1 1234 region insreg diam range ${dlo} ${dhi} dens ${dens} ${dens}
fix             ins1 all pour 2000 1 1234 region insreg diam range 0.5 ${dhi} dens ${dens} ${dens}
fix             ins1 all pour 2000 1 1234 region insreg diam range 0.5 1 dens ${dens} ${dens}
fix             ins1 all pour 2000 1 1234 region insreg diam range 0.5 1 dens 1 ${dens}
fix             ins1 all pour 2000 1 1234 region insreg diam range 0.5 1 dens 1 1
fix             ins2 all pour 2000 2 1234 region insreg diam range ${dlo} ${dhi} dens ${dens} ${dens}
fix             ins2 all pour 2000 2 1234 region insreg diam range 0.5 ${dhi} dens ${dens} ${dens}
fix             ins2 all pour 2000 2 1234 region insreg diam range 0.5 1 dens ${dens} ${dens}
fix             ins2 all pour 2000 2 1234 region insreg diam range 0.5 1 dens 1 ${dens}
fix             ins2 all pour 2000 2 1234 region insreg diam range 0.5 1 dens 1 1

comm_modify     vel yes

neighbor        ${skin} bin
neighbor        0.2 bin
neigh_modify    delay 0 every 1 check yes

fix             3 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region curved_wall
fix             4 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region bottom_wall

thermo_style    custom step atoms ke v_theta
thermo_modify   lost warn
thermo          100

timestep        0.001

#dump           1 all custom 100 ${name}.dump id type radius mass x y z

#For removal later
compute         1 all property/atom radius
variable        zmax atom z+c_1>0.5*${drum_height}
variable        zmax atom z+c_1>0.5*20
group           delgroup dynamic all var zmax every 10000
dynamic group delgroup defined

run             2000
Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
Particle insertion: 9396 every 2449 steps, 2000 by step 1
Particle insertion: 9396 every 2449 steps, 2000 by step 1
Neighbor list info ...
  update: every = 1 steps, delay = 0 steps, check = yes
  max neighbors/atom: 2000, page size: 100000
  master list distance cutoff = 1.2072629
  ghost atom cutoff = 1.2072629
  binsize = 0.60363143, bins = 50 50 83
  1 neighbor lists, perpetual/occasional/extra = 1 0 0
  (1) pair granular, perpetual
      attributes: half, newton on, size, history
      pair build: half/size/bin/atomonly/newton
      stencil: half/bin/3d
      bin: standard
Per MPI rank memory allocation (min/avg/max) = 15.26 | 15.26 | 15.26 Mbytes
   Step        Atoms        KinEng        v_theta    
         0           0  -0              0            
       100        4000  -0              0            
       200        4000  -0              0            
       300        4000  -0              0            
       400        4000  -0              0            
       500        4000  -0              0            
       600        4000  -0              0            
       700        4000  -0              0            
       800        4000  -0              0            
       900        4000  -0              0            
      1000        4000  -0              0            
      1100        4000  -0              0            
      1200        4000  -0              0            
      1300        4000  -0              0            
      1400        4000  -0              0            
      1500        4000  -0              0            
      1600        4000  -0              0            
      1700        4000  -0              0            
      1800        4000  -0              0            
      1900        4000  -0              0            
      2000        4000  -0              0            
Loop time of 0.717368 on 4 procs for 2000 steps with 4000 atoms

Performance: 240880.647 tau/day, 2787.970 timesteps/s, 11.152 Matom-step/s
99.6% CPU use with 4 MPI tasks x no OpenMP threads

MPI task timing breakdown:
Section |  min time  |  avg time  |  max time  |%varavg| %total
---------------------------------------------------------------
Pair    | 0.066314   | 0.069313   | 0.072824   |   0.9 |  9.66
Neigh   | 0.17091    | 0.17659    | 0.18316    |   1.2 | 24.62
Comm    | 0.090794   | 0.10277    | 0.11691    |   3.3 | 14.33
Output  | 0.00026021 | 0.00028548 | 0.00031629 |   0.0 |  0.04
Modify  | 0.33724    | 0.3471     | 0.35578    |   1.1 | 48.39
Other   |            | 0.02131    |            |       |  2.97

Nlocal:           1000 ave        1011 max         989 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Nghost:          279.5 ave         288 max         265 min
Histogram: 1 0 0 0 0 1 0 0 0 2
Neighs:           1771 ave        1849 max        1683 min
Histogram: 1 1 0 0 0 0 0 0 0 2

Total # of neighbors = 7084
Ave neighs/atom = 1.771
Neighbor list builds = 1000
Dangerous builds = 0

#Remove any particles that are above z > 0.5*drum_height
delete_atoms    group delgroup
Deleted 0 atoms, new total = 4000

#Add top lid
region          top_wall plane ${xc} ${yc} ${drum_height} 0 0 -1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
region          top_wall plane 15 ${yc} ${drum_height} 0 0 -1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
region          top_wall plane 15 15 ${drum_height} 0 0 -1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
region          top_wall plane 15 15 20 0 0 -1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
region          top_wall plane 15 15 20 0 0 -1 side in rotate v_theta 15 ${yc} 0 0 0 1
region          top_wall plane 15 15 20 0 0 -1 side in rotate v_theta 15 15 0 0 0 1
fix             5 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region top_wall

# 'Turn' drum by switching the direction of gravity
unfix           grav
unfix           ins1
unfix           ins2
fix             grav all gravity 10 vector 0 -1 0

variable        theta equal 2*PI*elapsed/20000.0
run             3000
Generated 0 of 1 mixed pair_coeff terms from geometric mixing rule
Per MPI rank memory allocation (min/avg/max) = 21.56 | 21.56 | 21.56 Mbytes
   Step        Atoms        KinEng        v_theta    
      2000        4000   59.519618      0            
      2100        4000   46.959463      0.031415927  
      2200        4000   33.575692      0.062831853  
      2300        4000   24.142787      0.09424778   
      2400        4000   17.337935      0.12566371   
      2500        4000   18.547345      0.15707963   
      2600        4000   17.504214      0.18849556   
      2700        4000   16.24609       0.21991149   
      2800        4000   14.074959      0.25132741   
      2900        4000   11.85315       0.28274334   
      3000        4000   9.1440638      0.31415927   
      3100        4000   7.0279268      0.34557519   
      3200        4000   5.9258872      0.37699112   
      3300        4000   5.8615694      0.40840704   
      3400        4000   5.9779406      0.43982297   
      3500        4000   6.4357798      0.4712389    
      3600        4000   6.4960487      0.50265482   
      3700        4000   6.586721       0.53407075   
      3800        4000   6.5979634      0.56548668   
      3900        4000   6.5728243      0.5969026    
      4000        4000   6.3664722      0.62831853   
      4100        4000   6.025512       0.65973446   
      4200        4000   5.5922152      0.69115038   
      4300        4000   5.0429386      0.72256631   
      4400        4000   4.3669836      0.75398224   
      4500        4000   3.8125957      0.78539816   
      4600        4000   3.3457033      0.81681409   
      4700        4000   2.9405372      0.84823002   
      4800        4000   2.6544181      0.87964594   
      4900        4000   2.4465164      0.91106187   
      5000        4000   2.2332401      0.9424778    
Loop time of 2.47988 on 4 procs for 3000 steps with 4000 atoms

Performance: 104520.996 tau/day, 1209.734 timesteps/s, 4.839 Matom-step/s
99.2% CPU use with 4 MPI tasks x no OpenMP threads

MPI task timing breakdown:
Section |  min time  |  avg time  |  max time  |%varavg| %total
---------------------------------------------------------------
Pair    | 0.51755    | 0.69165    | 0.84951    |  14.2 | 27.89
Neigh   | 0.37557    | 0.44168    | 0.51371    |   7.4 | 17.81
Comm    | 0.17182    | 0.42275    | 0.67979    |  27.7 | 17.05
Output  | 0.00061419 | 0.0013055  | 0.0020239  |   1.4 |  0.05
Modify  | 0.69708    | 0.79942    | 0.90438    |   8.2 | 32.24
Other   |            | 0.1231     |            |       |  4.96

Nlocal:           1000 ave        1311 max         689 min
Histogram: 2 0 0 0 0 0 0 0 0 2
Nghost:         555.25 ave         838 max         429 min
Histogram: 1 2 0 0 0 0 0 0 0 1
Neighs:        3277.75 ave        4525 max        2052 min
Histogram: 1 1 0 0 0 0 0 0 1 1

Total # of neighbors = 13111
Ave neighs/atom = 3.27775
Neighbor list builds = 1254
Dangerous builds = 130
Total wall time: 0:00:03
