Lifting cylinder angle of repose test

Submitted by Thao on Tue, 03/09/2021 - 08:16

Hi everyone,
I am trying to simulate the angle of repose test by lifting cylinder test, according to the paper by Thomas Roessler, "Scalability of angle of repose tests for the calibration of DEM parameter"
I have two questions:
1) When I tried to move my cylinder up to let the particles flow out, my particles do not flow out. The particles seem to be stuck with the cylinder . Does anyone know how to fix this?
2) I inserted the particle inside the imported cylinder by setting the region cylinder command and setting my region exactly like the imported cylinder. I am not sure if this is a right way to do it? Should I create an Insertionface and use the fix insert/stream instead? I am using gmsh to create my cylinder.stl. I do not know how to create the Insertionface by gmsh. I also dont have the SolidWorks account, what software do you use to create CAD STL mode?

I am a new LIGGGHTS learner so please help me!!
Thanks so much.
Thao

##Examples
atom_style granular
boundary m m m
units si
communicate single vel yes
newton off
processors 2 3 1

region reg block 0 0.03 0 0.03 0 0.08 units box
create_box 2 reg
neighbor 0.003 bin # Depend on the radius chosen
neigh_modify delay 0

#Material properties required for new pair styles

# 2 Types of particles
fix m1 all property/global youngsModulus peratomtype 14000000 14000000
fix m2 all property/global poissonsRatio peratomtype 0.3 0.3
fix m3 all property/global coefficientRestitution peratomtypepair 2 0.2 0.2 0.2 0.2
fix m4 all property/global coefficientFriction peratomtypepair 2 0.5 0.36 0.36 0.5
fix m5 all property/global coefficientRollingFriction peratomtypepair 2 0.020 0.020 0.020 0.020

pair_style gran model hertz tangential history rolling_friction cdt #Hertzian without cohesion
pair_coeff * *

fix integrator all nve/sphere
fix gravity all gravity 9.81 vector 0.0 0.0 -1.0

## Define variables
variable timestep equal 3.6e-6
timestep ${timestep}
# Variables for filing parameters
variable filltime equal 0.36 # 100000 timesteps
variable fillparticle equal 7000 # 7000 particles
variable fillparticlerate equal ${fillparticle}/${filltime} # particles/s
variable fillsteps equal ${filltime}/${timestep} # always transform rate into timesteps

# #Settle time: allowing the particles to settle after filling
variable settletime equal 0.18 # 50000 timesteps
variable settlesteps equal ${settletime}/${timestep}

# Variables define open parameters of the cylinder
variable liftingvelocity equal 0.032 #m/s, equal to 16 mm/s
variable liftingtime equal 0.18 #s, 50000 timesteps
variable liftingsteps equal ${liftingtime}/${timestep}

# Discharge time
variable dischargetime equal 0.18 #s
variable dischargesteps equal ${dischargetime}/${timestep}
# Generation and loading of geometry STL files
fix cylinder all mesh/surface file smallcylinder.stl type 2 scale 0.02 rotate axis 0 0 1 angle 180
fix walls all wall/gran model hertz tangential history rolling_friction cdt mesh n_meshes 1 meshes cylinder

# Generation and insertion of the particles # All fixed except recalculation of density X=1
fix pts1 all particletemplate/sphere 32452843 atom_type 1 density constant 1660 radius constant 0.001
fix pts2 all particletemplate/sphere 15485863 atom_type 1 density constant 1660 radius constant 0.0015
fix pts3 all particletemplate/sphere 15485867 atom_type 1 density constant 1660 radius constant 0.002
fix pts4 all particletemplate/sphere 32452867 atom_type 1 density constant 1660 radius constant 0.0022
fix pdd1 all particledistribution/discrete 49979687 4 pts1 0.75 pts2 0.13 pts3 0.07 pts4 0.05

# Region for insertion
region insertion cylinder z 0 0 0.02 0 0.06 units box
fix ins all insert/rate/region seed 86028157 distributiontemplate pdd1 nparticles ${fillparticle} particlerate ${fillparticlerate} insert_every 1000 overlapcheck yes all_in yes vel constant 0. 0. -1.0 region insertion ntry_mc 10000

# Trial to use Insertionface and fix insert/stream
#fix ins_mesh all mesh/surface/planar file Insertionface.stl type 1 scale 0.01 curvature 2.56235
#fix ins all insert/stream seed 86028157 distributiontemplate pdd1 &
nparticles ${fillparticle} particlerate ${fillparticlerate} overlapcheck yes all_in yes vel constant 0 0 -1.0 &
insertion_face ins_mesh extrude_length 0.02

#timestep input and check
fix ts all check/timestep/gran 1 0.01 0.01 # for loop, fix/time/check should be placed after fix/couple/cfd
run 1
unfix ts

#Definition of the dumptime
variable dumptime equal 0.036
variable dumpsteps equal ${dumptime}/${timestep}

#Dumping particles and geometry
dump dmpparticle all custom ${dumpsteps} post3/particels*.liggghts id type type x y z ix iy iz vx vy vz fx fy fz omegax omegay omegaz radius
dump dmpcylinder all mesh/stl ${dumpsteps} post3/Cylinder*.stl cylinder

# Run
# Run the simulation filling
run ${fillsteps}
unfix ins

# Run the settlings
run ${settlesteps}
# Move the cylinder, how to move it upto certain height or displacement
fix movecylinder all move/mesh mesh cylinder linear 0 0 ${liftingvelocity}
run ${liftingsteps}
unfix movecylinder

# Run the simulation outflow
run ${dischargesteps}
write_restart liggghts.restartparticleinsertion

AttachmentSize
Binary Data ground.stl_.gz1.88 KB
Binary Data cylinder.stl_.gz16.87 KB

mschramm | Tue, 03/09/2021 - 18:03

Hello,
Are you expecting the particles to flow from the bottom of the cylinder?
If this is the case, how high does the cylinder need to be raised for your lab particles divided by the particle size?
You may need to raise the cylinder the same amount before you get the flow you are looking for.

What happens if you just delete the cylinder?

Using an insertion face shouldn't just solve the problem your having.
If you want to try packing via gravity, you can simply reduce the size of your region.

Thao | Thu, 03/11/2021 - 08:19

Hi mschramm,
Thank you for your response. I already solved this problem. But I have two other questions, I hope that you can help me.
1) When I insert the particles into the insertion region, it seems to always insert less than my desired number of particles. I tried to replicate the tests in the paper by Thomas Rossler, "Scalability of angle of repose tests for the calibration of DEM parameter", and the insertion region seems to be quite small to insert the desired number of particles. When I scaled the insertion region to a factor of 2, the insertion is fine. Without scaling the geometry, I already tried to use only one processor to give a better insertion and tried to change the skin factor, but nothing works. Do you have ideas on how to improve my insertion?
2) I also want to separate my simulation into 2 files, the first file for insertion and write a restart file and the second file for using the restart file and lifting the cylinder. When I do not separate them, I can lift my cylinder fine. But when I separate these actions into 2 files, for my second file, I cannot lift my cylinder. I already defined all the fix again in the second file. I have no idea what is going on?
I am looking forward to your response. If my question is not clear, I can clarify myself further.
Thanks a lot.
Thao

Thao | Thu, 03/11/2021 - 08:27

I also added STL files for my simulation. If you can help run my simulation and give me some advice on how can I make my simulation better, please teach me!!
Thanks so much.