Granular particle small density causes an error


I’m trying to model the penetration of the small granular particles to the “porous media” consisted of large granular particles. I found that when I set the density of small particles below some limit, the “lost atoms” error is appeared. I reduced the problem to the collision of 2 particles, where small particle is moving with given velocity towards the large particle (grain) that is freezed. I also add the “Stokes force” that influences on small particle trying to stabilize it’s speed.

What I found is that if I set small particle density to 1.3 or higher everything is ok, the particle is retained on the grain. But if I set its density to 1.2 - I have “lost atoms” error. Furthermore, it seems that the values of coefficients in gran/hertz/history potential have no influence on that error. The main features that I use is gran/hertz/history potential, fix freeze, fix addforce and velocity set. Note that I use cgs units. I have LAMMPS 7 May 2011 version.

Here is the input script:

bash-3.2$ cat in.cgs.collision
units cgs
atom_style sphere
dimension 3
boundary f f f
newton off

communicate single vel yes

region boxCylinder cylinder z 0 0 1.3 -5 1.5 units box
create_box 2 boxCylinder
create_atoms 1 single 0 0 0 units box
group packingGroup type 1

create_atoms 2 single 0 0 -0.1 units box
group particlesGroup type 2

variable particleDiameter equal 0.012
variable particleRadius equal v_particleDiameter/2

set group packingGroup diameter 0.11
set group packingGroup density 2.6
set group particlesGroup diameter ${particleDiameter}
set group particlesGroup density 1.3 #if I set here the value 1.2 the atom becomes lost.

velocity particlesGroup set 0.0 0.0 0.15 units box

pair_style gran/hertz/history 4.0e5 NULL 1.0e1 NULL 0.5 1 #Hertzian with damping
pair_coeff * *

fix grains packingGroup freeze

variable fStokesx atom 63.140.2v_particleRadius(0.0-vx)
variable fStokesy atom 63.140.2v_particleRadius(0.0-vy)
variable fStokesz atom 63.140.2v_particleRadius(0.15-vz)

fix fStokes particlesGroup addforce v_fStokesx v_fStokesy v_fStokesz

fix 1 all nve/sphere

dump d0 all custom 200 post_tmp/dump.porous id type type x y z ix iy iz vx vy vz fx fy fz omegax omegay omegaz radius

compute fx particlesGroup reduce ave fx
compute fy particlesGroup reduce ave fy
compute fz particlesGroup reduce ave fz
compute velz particlesGroup reduce ave vz
compute xz particlesGroup reduce ave z

variable Natoms equal count(particlesGroup)
variable Natoms0 equal ${Natoms}
variable Nlost equal v_Natoms0-v_Natoms
variable vgMass equal mass(packingGroup)/count(packingGroup)
variable vpMass equal mass(particlesGroup)/count(particlesGroup)
thermo_style custom step temp etotal press c_fz c_xz c_velz v_Nlost #c_msdID[1] c_msdID[2] c_msdID[3] c_msdID[4]
thermo 1000
#thermo_modify lost warn

print “Particle mass: {vpMass}" print "Grain mass: {vgMass}”

timestep 0.0001

#run 1000000
run 10000

Nikita Tropin | Scientist
Baker Hughes | Novosibirsk Technology Center
Office: +7 383 332 9443, ext. 151 | Fax: +7 383 332 1686
Cell:+7 913 903 68 14 | [email protected] | Advancing Reservoir Performance

Atoms become lost b/c your dynamics is bad. I.e. they
move too far between timesteps and fly out of the box, or further
than a processor can track them. Have you visualized your
system to see what is going on? Have you tracked the
velocity/force/coords of the offending particles?


The problem is solved by reducing the timestep.

Nikita Tropin | Scientist
Baker Hughes | Novosibirsk Technology Center
Office: +7 383 332 9443, ext. 151 | Fax: +7 383 332 1686
Cell:+7 913 903 68 14 | [email protected] | Advancing Reservoir Performance