Particles accelerating after collision with mesh wall (STL)

Nucleophobe's picture
Submitted by Nucleophobe on Sun, 03/29/2015 - 04:07

I am performing a LIGGGHTS simulation with spherical particles moving inside of a pipe around an obstruction. The simulation proceeds fine at first, but once the particles collide with the obstruction, they sometimes accelerate (as if the coefficient of restitution were greater than unity). This seems to be a problem with mesh/surface STL wall specification, as I don't get this sort of behaviour when using planes and cylinders as walls.

I create the wall using:
# Load STL mesh for all walls:
fix surfaceSTL all mesh/surface file ../DEM/test_surface.stl type 1
# Activate wall based on STL mesh from above:
fix surface_wall all wall/gran model hertz tangential history mesh n_meshes 1 meshes surfaceSTL

and my collision pair properties are defined:
#Material properties required for new pair styles
fix m1 all property/global youngsModulus peratomtype 5.e7
fix m2 all property/global poissonsRatio peratomtype 0.45
fix m3 all property/global coefficientRestitution peratomtypepair 1 0.5
fix m4 all property/global coefficientFriction peratomtypepair 1 0.5

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

Decreasing the timestep helps, but I still get some wild collisions where the kinetic energy for a particle suddenly increases. Refining the surface mesh (i.e., increasing the number of triangles) also helps, but at great computational cost.

Does anyone know why this might be happening? Are there limitations using STL surfaces with LIGGGHTS? Do the triangles need to be of a certain aspect ratio or something? I checked the documentation, but didn't see anything there.

Any guidance appreciated. Thanks!
-Nuc

diego.peinado's picture

diego.peinado | Wed, 04/01/2015 - 14:21

Dear Nucleophobe, this behavior is probably caused by a large time step. If in the particle has enough time to penetrate too much in the wall before the check is done, then a very large restitution force is applied.

Nucleophobe's picture

Nucleophobe | Sat, 04/04/2015 - 02:52

diego.peinado,

Thanks for the response; that makes sense.

Do you know why a finer STL mesh would increase stability (i.e., allow for a larger time step)? I find this behavior a bit strange.

Also, Is there any more literature or documentation that I can refer to regarding how collisions are handled, or should I just look at the source code?

Nucleophobe's picture

Nucleophobe | Tue, 04/21/2015 - 17:32

I am continuing to have problems with sudden, non-physical increases in particle velocity magnitude (e.g., by a factor of two or more) during some collision events.

Reducing the time step does not resolve the problem, so something else must be going on. I tried switching to the Hooke collision model but that gave almost identical results. I have found that a specifying a very small Young's modulus (i.e., 5e3) eliminates the problem.

I'm wondering if there is a problem during the initial collision between the particle and a single triangle in the STL mesh. Thus, by specifying a smaller Young's modulus, more penetration is allowed, and the particle contacts more triangles, which somehow damps out the numerical instability (?).

OR, perhaps my units are the problem, and the Young's modulus I had specified was too high all along. If all of my lengths are in meters, is the Young's modulus in Pascals, or something else?

Thanks,
-Nuc

Nucleophobe's picture

Nucleophobe | Tue, 04/21/2015 - 18:02

P.S.
Regarding units, I am using 'units si':
http://lammps.sandia.gov/doc/units.html
So, the Young's modulus should be in units of Pascals. Thus, a Young's modulus of '5e3' would be 5KPa, which is incredibly small.

For normal materials, the Young's modulus should be around 100MPa - 500GPa:
http://www-materials.eng.cam.ac.uk/mpsite/interactive_charts/stiffness-d...

However, in the LIGGGHTS tutorials, I see a value of 5e6 (5MPa) for all of the cases. Does anyone have an explanation for this?

cstoltz | Wed, 04/22/2015 - 03:23

Typically, setting the Young's modulus to a 'realistic' value leads to a timestep that is very small and makes the simulation take forever. You can often get away with reducing the Young's modulus by a few orders of magnitude without significantly affecting the results of the simulation. In return, you're able to use a larger timestep and still have a stable simulation.

Suggest you use the fix_check/timestep/gran to calculate the timestep you're currently using as a fraction of the Rayleigh or Hertz timestep. As a general rule of thumb, target keeping your timestep < 0.2*Rayleigh time to keep things stable.

Regards,
Chris

Nucleophobe's picture

Nucleophobe | Mon, 04/27/2015 - 12:53

Chris,

Thank you; your post is very helpful. I'm doing more investigation now to see what fraction of the Rayleigh / Hertz timestep I am using in my simulations.

-Nuc