Detecting wall and moving mesh collisions

Submitted by Misterblobby on Tue, 09/16/2014 - 14:46

Hi,

I have been trying to simulate particle flow through what is basically a rock impeller, which runs at approximately 1800 rpm. Particle speeds can be up to around 60 m/s, and maybe 40% of particles will fly through both the impeller walls and the outer (static) wall. Both are generated from stl files.

I have tried reducing the timestep down to 1e-7, with no noticeable improvement, and have also tried reducing the mesh spacing in the stl files.

Is there anything else I can do to improve the detection rate?

AJ.Spin | Wed, 09/17/2014 - 14:51

Just to double to check that it is not the mesh. Before I really got the hang of my meshing tool, my particles would get stuck in my mesh; and all my attempts to remesh did not work right. Do you have the following warning in your log file?

WARNING: Fix mesh: Mesh contains highly skewed element, moving mesh (if used) will not parallelize well (surface_mesh_I.h:485)

If you have it then you need to change the aspect ratio to a low number (perhaps 1 - 5). If you do not have it then your remesh was satisfactory and I am out of ideas.

aaigner's picture

aaigner | Wed, 09/17/2014 - 15:47

Hi Misterblobby,

to help you we need some more informations. For instance: particle diameter to get an idea of the bin size. So we can compare it to the estimated velocities (60m/s) and time step (1e-7). Keep in mind, that a particle may move a half bin per time step at the maximum. In general the bin size is 2*max(radius)+skin. Check if there are any dangerous builds (you can find them in the summary at the end of the log-file).
A log-File would be great, if there is no confidential stuff inside.

Bests
Andreas

ckloss's picture

ckloss | Thu, 09/25/2014 - 08:50

Hi,

additionally you should check the value for Youngs' Modulus. If it's too low, (e.g. 5e6 like in the tutorial) particles can easily fly through walls in case of higher dynamics

Christoph

Misterblobby | Fri, 09/26/2014 - 00:05

Hi,

Thank you all for your input. I have been experimenting with this further, and was able to get it to run successfully with the following changes:

- Increased the mesh density.
- Changed all contacts to Hertz. (with cohesion enabled)
- Set neigh_modify to every 1 delay 0
- Timestep 1e-6.

I originally used the MovingMeshGran tutorial as a template, which uses Hooke contacts throughout, with a characteristic velocity of 2.0. I did see on a list of changes for one of the updates that characteristic velocity should now be set a 1e-2, but I am not sure whether changing this figure had any effect on the end result.

With Hertz contact, the model runs fine & all contacts with meshes are handled as expected. When I change the contacts to Hooke, most particles still go through the moving mesh but I was able to increase the number of successful collisions with the stationary mesh by increasing the mesh density.

The successful input file is below.

atom_style granular
atom_modify map array
boundary f f m
newton off

communicate single vel yes
units si
create_box 1 reg

neighbor 0.001 bin
neigh_modify every 1 delay 0

#Material properties
fix m1 all property/global youngsModulus peratomtype 5.e6
fix m2 all property/global poissonsRatio peratomtype 0.45
fix m3 all property/global coefficientRestitution peratomtypepair 1 0.2
fix m4 all property/global coefficientFriction peratomtypepair 1 0.2
fix m5 all property/global characteristicVelocity scalar 1e-2
fix m6 all property/global cohesionEnergyDensity peratomtypepair 1 300000

#pair style
pair_style gran model hertz tangential history cohesion sjkr #Hertzian with cohesion
pair_coeff * *

timestep 0.000001

fix 1 all nve/sphere
fix 2 all gravity 9.81 vector 0.0 0.0 -1.0

fix floor all wall/gran model hertz tangential history primitive type 1 zplane -0.02

#import mesh from cad:
fix cad1 all mesh/surface file rotornewer1.stl type 1 curvature 1e-5
fix cad2 all mesh/surface file wallnewer1.stl type 1 curvature 1e-5

#use the imported mesh as granular wall
fix rotorwall all wall/gran model hertz tangential history mesh n_meshes 2 meshes cad1 cad2

#Particle insertion
fix pts all particletemplate/sphere 1 atom_type 1 density constant 1000 &
radius constant 0.010
fix pdd all particledistribution/discrete 63243 1 pts 1.0
region factory cylinder z 0 0 0.125 0.55 2 units box
fix ins all insert/rate/region seed 123481 distributiontemplate pdd &
nparticles 300000 particlerate 50000 insert_every 1000 &
overlapcheck yes vel constant 0. 0. -1.0 region factory ntry_mc 10000

#thermo settings
compute 1 all erotate/sphere
thermo_style custom step atoms ke c_1 vol
thermo 1000
thermo_modify lost ignore norm no
compute_modify thermo_temp dynamic yes

#Rotate
fix movecad2 all move/mesh mesh cad1 rotate origin 0. 0. 0. axis 0. 0. -1. period 0.04

#make a dump of particles and the stl file
dump dmp all custom 1000 post/dump*.liggghts id type type x y z ix iy iz vx vy vz fx fy fz omegax omegay omegaz radius
dump dumpstl all mesh/stl 1000 mesh/dump*.stl
restart 10000 restart/tmp.restart

run 10000000 upto

aaigner's picture

aaigner | Tue, 09/30/2014 - 10:00

Hi Misterblobby,

First of all.. great that it works, but may I make some remarks?

  • With neigh_modify every 1 delay 0 you generate the neighbourlist in every time step, which is quite expensive. Check if your simulation works without every 1.
  • In case of Hooke the characteristic velocity incluences the stiffness of your particles. Thus it should be in the range of characteristic impact velocities. Otherwise the particles may fly through your wall as Christoph mentioned. With a value of 1e-2 (your particles move with 60m/s?!) your particles are most probably to soft. Hertz does not need this property. (A reason why I prefer Hertz.)

Cheers
Andreas