How to unittest/develop tangential and rolling models

Bias's picture
Submitted by Bias on Wed, 12/05/2018 - 14:24

I'm working with adding both tangential and rolling models to LIGGGHTS so they work with JKR adhesion.

I have some problems however now to validate if the models are working correctly so I was wondering if anyone has a recommendation on how to do the validation on this type of models?

Is it possible to disable for example rolling of a particle? When I develop the tangential model I would like to see when it starts to slide and when it doesn't. Right now, however, the particles can still start to roll so I was wondering if its a good way to prevent this for example not allowing any rotations of the particles?

Similarly, when I develop the rolling model I would like to not allow the particles to slide at all so that they only rotate.

An obvious solution would maybe be to just set a very high rolling or sliding resistance but this is not really feasible for me since the resistance will still be almost zero (Due to Fn is almost zero) when the contact radius is close to the equilibrium contact radius for the JKR model.

Bias's picture

Bias | Wed, 12/05/2018 - 15:34

If I set the velocity like that with "velocity all zero angular", doesn't that just as a initial set the particle as inital value to no angular velocity? Or does it fixate so it doesnt allow the particle to get any angular velocity later?

As a example I have a particle in contact with a primitive wall (the wall is in a XY-plane). And I want to push this particle in the X direction so I then set for example
velocity all set 0.04 0.0 0.0
However I only want the particle now to slide or not slide depending on the initial velocity to verify if my tangential model works but since it also is allowed to rotate it is starting to rotate.

mschramm | Wed, 12/05/2018 - 15:45

Sorry about that, you are correct.
You would need to set a loop with that command to make it work, something like

variable count equal 1
velocity all zero angular
run 1
label start_loop
velocity all zero angular
run 1 pre no post no
variable count equal ${count}+1
if "${count}>${count_max}" then &
"jump in.liggghts end_loop" &
else &
"jump in.liggghts start_loop"
label end_loop

The other way to do this is to create a custom fix_nve_shpere that zeros out the angular velocity.
I think this is what you would need to do in order to get the your particles to roll without sliding reliably.