layers of different particles

Tarun De's picture
Submitted by Tarun De on Fri, 01/19/2018 - 21:27

hello everyone,
I am a new user of LIGGGHTS. please suggest me some good tutorial where every topic is covered step by step, which is really good for beginners.
I will be really happy if anyone kindly tells me how to create layers of different particles in a hopper at once.
looking urgently for a reply.

best,
Tarun

richti83's picture

richti83 | Mon, 01/22/2018 - 15:51

You can not create (overlapping) particles at once. The used (fast) insertion algorithm allows only non-overlapping spheres.

I suggest you to have a look in LIGGGHTS-PUBLIC/examples/LIGGGHTS/Tutorials_public/insert_stream/in.insert_stream and adapt it to your needs (e.g. create a plane at top of your hopper, adjust the simulation domain (region reg) and particle radius (fix pts) ...

A simple example skript I'm showing my students is like this:

####################################
# Example 3, Flow through a funnel #
# (c) 2015 by C. Richter, IBAF #
####################################
#
#constant
variable cor equal 0.2
variable timestep equal 1.25e-5
variable wallfric equal 0.59
variable ff equal 0.35
variable frf equal 0.35
variable CED equal 150000
#
variable youngmod equal 1e7
variable poiss equal 0.3
#
variable r1 equal 0.0250
variable r2 equal 0.0250
variable r3 equal 0.0250
variable r4 equal 0.0250
variable r5 equal 0.0250
variable r6 equal 0.0250
variable r7 equal 0.0250
#
variable frac1 equal 0.013
variable frac2 equal 0.015
variable frac3 equal 0.049
variable frac4 equal 0.105
variable frac5 equal 0.05
variable frac6 equal 0.098
variable frac7 equal 0.067
#
variable dens equal 1434.037202
variable N equal 3000
#
atom_style granular
boundary f f f
newton off
#
communicate single vel yes
units si
#
region reg block -0.541 0.541 -0.541 0.541 -1.10 1.10 units box
create_box 2 reg
#
#echo screen
#
neighbor 0.005 bin
neigh_modify delay 0
#
#Material properties
fix m1 all property/global youngsModulus peratomtype ${youngmod} ${youngmod}
fix m2 all property/global poissonsRatio peratomtype ${poiss} ${poiss}
fix m3 all property/global coefficientRestitution peratomtypepair 2 ${cor} ${cor} &
${cor} ${cor}
fix m4 all property/global coefficientFriction peratomtypepair 2 ${ff} ${wallfric} ${wallfric} ${wallfric}
fix m5 all property/global coefficientRollingFriction peratomtypepair 2 ${frf} ${frf} ${frf} ${frf}
fix m6 all property/global cohesionEnergyDensity peratomtypepair 2 ${CED} 0 0 0
#
#pair style
pair_style gran model hertz tangential history cohesion sjkr2 rolling_friction epsd2
pair_coeff * *
#
timestep ${timestep}
#
fix 1 all nve/sphere
fix 2 all gravity 9.81 vector 0.0 0.0 -1.0
#
#box walls
#
#import mesh from cad:
fix behaelter all mesh/surface file STL/behaelter.stl heal auto_remove_duplicates type 2 scale 0.001
fix schieber1 all mesh/surface file STL/schieber1.stl type 2 scale 0.001
fix schieber2 all mesh/surface file STL/schieber2.stl type 2 scale 0.001
fix messflaeche all mesh/surface/stress file STL/messflaeche.stl type 2 scale 0.001 stress on
#
#use the imported mesh as granular wall
fix walls all wall/gran model hertz tangential history rolling_friction epsd2 mesh n_meshes 4 meshes behaelter schieber1 schieber2 messflaeche
#
#region and insertion
fix pts1 all particletemplate/sphere 1 atom_type 1 density constant ${dens} radius constant ${r1}
fix pts2 all particletemplate/sphere 1 atom_type 1 density constant ${dens} radius constant ${r2}
fix pts3 all particletemplate/sphere 1 atom_type 1 density constant ${dens} radius constant ${r3}
fix pts4 all particletemplate/sphere 1 atom_type 1 density constant ${dens} radius constant ${r4}
fix pts5 all particletemplate/sphere 1 atom_type 1 density constant ${dens} radius constant ${r5}
fix pts6 all particletemplate/sphere 1 atom_type 1 density constant ${dens} radius constant ${r6}
fix pts7 all particletemplate/sphere 1 atom_type 1 density constant ${dens} radius constant ${r7}
#
fix pdd1 all particledistribution/discrete 1. 7 pts1 ${frac1} pts2 ${frac2} pts3 ${frac3} pts4 ${frac4} pts5 ${frac5} pts6 ${frac6} pts7 ${frac7}
#
#group nve_group region reg
region gen block -0.5 0.5 -0.5 0.5 1.07 1.10 units box
fix ins all insert/rate/region seed 14232 distributiontemplate pdd1 nparticles $N particlerate 750000 insert_every 100 overlapcheck yes verbose no vel constant 0 0 -2 region gen
#
#thermo settings
thermo_style custom step atoms spcpu
thermo 1000
thermo_modify lost ignore norm no
compute_modify thermo_temp dynamic yes
#
#make a dump of particles and the stl file
variable time equal step*dt
variable fx equal f_messflaeche[1]
variable fy equal f_messflaeche[2]
variable fz equal f_messflaeche[3]
variable Mx equal f_messflaeche[4]
variable My equal f_messflaeche[5]
variable Mz equal f_messflaeche[6]
#
dump dmp all custom 1000 post/dump*.liggghts id type x y z vx vy vz fx fy fz radius mass
dump dumpstl all mesh/stl 1000 post/dump*.stl behaelter schieber1 schieber2
dump forces1 all mesh/vtk 1000 post/dump_int*.vtk output interpolate stress stresscomponents messflaeche
dump forces2 all mesh/vtk 1000 post/dump_face*.vtk output face stress stresscomponents messflaeche
fix forceslog all print 100 "${time},${fx},${fy},${fz},${Mx},${My},${Mz}" file post/forces.csv title "t,Fx,Fy,Fz,Mx,My,Mz" screen no
#
#run with particle insertion
run 50000 upto
unfix ins
write_restart insert.restart
#
variable opentime equal 0.1 #open in 0.1sek
variable opensteps equal ${opentime}/dt
variable w equal (PI/4)/${opentime} #w=df/dt
variable T equal 2*PI/${w} #T=1/f=2pie/w
print $T
#moving mesh
#
fix open1 all move/mesh mesh schieber1 rotate origin 0. 0. 0. axis 0. 1. 0. period $T
fix open2 all move/mesh mesh schieber2 rotate origin 0. 0. 0. axis 0. 1. 0. period -$T
#
#run
run ${opensteps} #
unfix open1
unfix open2
run 150000

I'm not an associate of DCS GmbH and not a core developer of LIGGGHTS®
ResearchGate | Contact