Tiny particles don't react with the wall

Asked by Leonard

Hi,
I have a sand model with extral tiny particles among the pore space of the sample, and I use this model for triaxial compression test. The boundary condition is simulated by six rigid walls (use walls=aabbWalls([mn,mx],thickness=0,material='FrictMat')). And I use GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8) for setting the dt.

However, I found that at the end of the simulation (where axial strain = 40%), many tiny particles stay at their original places, which means that these tiny particles didn't react with the boundary wall during the simulation, the example figure could be find at [1].

I guessed it is that there was no contact detection between these tiny particles and the top wall so that these particles passed through the top wall. Then I set the timestepSafetyCoefficient from 0.8 to 0.1 to decrease the dt (not sure if it is correct), but I gained the same result as [1] shows.

My questions are: (1) The higher the timestepSafetyCoefficient, the more safe the dt is? Or the lower the timestepSafetyCoefficient, the more safe the dt is? (2) Is there any other way to let the missed contacts being detected correctly during the simulation?

Thanks very much!

Leonard
[1]https://we.tl/t-SRQDF5JLh8

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Jan Stránský
Solved:
Last query:
Last reply:
Revision history for this message
Best Jan Stránský (honzik) said :
#1

Hello,

> I use this model for triaxial compression test
> the example figure could be find at [1]

please provide the code [2]

> I guessed it is that there was no contact detection between these tiny particles and the top wall so that these particles passed through the top wall.

it is the most reasonable explanation

> And I use GlobalStiffnessTimeStepper
> Then I set the timestepSafetyCoefficient

GlobalStiffnessTimeStepper, as the name suggest, set time step according to stiffness, not particle sizes/velocities

> (1) The higher the timestepSafetyCoefficient, the more safe the dt is? Or the lower the timestepSafetyCoefficient, the more safe the dt is?

GlobalStiffnessTimeStepper computes something, which is then multiplied by GlobalStiffnessTimeStepper to get actual dt [3].
So the lower value, the more safety.
But again, safety w.r.t. stiffness, not particle sizes/velocities. So for this problem, go another way than timestepSafetyCoefficient

> (2) Is there any other way to let the missed contacts being detected correctly during the simulation?

of course. For example you can:
- set maximum wall velocity
- compute respective time step such that the maximum wall displacement during one time step is some fraction of tiny particles size
- set this time step as maxDt [4].

cheers
Jan

[2] https://www.yade-dem.org/wiki/Howtoask
[3] https://gitlab.com/yade-dev/trunk/-/blob/master/pkg/dem/GlobalStiffnessTimeStepper.cpp, search timestepSafetyCoefficient
[4] https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.GlobalStiffnessTimeStepper.maxDt

Revision history for this message
Leonard (z2521899293) said :
#2

Hi Jan,
Thanks for your reply.

Besides the way you suggest, I also tried using O.dt=(small value)*PWaveTimeStep[5] to decrease the timeStep, as it is computed from sphere radii, rigidities and masses[5]. I hope this way could also solve this problem.

Cheers
Leonard

[5]https://yade-dev.gitlab.io/trunk/yade.utils.html?highlight=pwavetimestep#yade._utils.PWaveTimeStep

Revision history for this message
Leonard (z2521899293) said :
#3

Thanks Jan Stránský, that solved my question.