How to change the interparticle friction angle value from compaction process to another value during shearing process?

Asked by Nicholas Ng on 2019-06-19

Hi all,

I'm currently using Yade to conduct a direct shear test simulation, and I have read many articles which mention that in order to generate a dense sample, the interparticle friction coefficient should be set to 0 during compaction process, and later set the interparticle friction coefficient to another intended value during shearing process.

Here I'm assuming that : friction coefficient = tan (friction angle)

My simulation flow is as follow:
1) simulate particles & boundaries of shear box + compaction process + save state
2)load previous saved state + shearing process

My question is , how do I change the interparticle friction angle for my spheres when I move from compaction phase to shearing phase?

Below is the simplified section of my script for generation of spheres and assigning material properties for compaction process. I'm setting the inteparticle friction angle to 0 for generation of dense sample. When I want to continue the shearing phase, I have to load the saved state from compaction process, then how can I change the interparticle friction angle to another value, e.g. 0.6 radians (before I start the shearing process)?

=================================================================================================

O=Omega()

# for particles
O.materials.append(CohFrictMat(young = 1E8, poisson = 0.25, frictionAngle = 0.0, density = 2650, shearCohesion=15E3, alphaKr=20.0))
# for side walls
O.materials.append(CohFrictMat(young = 1E8, poisson = 0.25, frictionAngle = 0.0, density = 2650))
# for top and bottom walls
O.materials.append(CohFrictMat(young = 1E8, poisson = 0.25, frictionAngle = 0.8, density = 2650))

L_x, L_y, L_z = 0.0634, 0.027/2, 0.0634

min_corner = Vector3(0.05*L_x,0,0.05*L_z)
max_corner = Vector3(0.95*L_x,L_y*5.8,0.95*L_z)

radius_D60 = 0.0028/2
radius_D30 = 0.00108/2
radius_D10 = 0.0004/2

num_D60 = 5500
num_D30 = 2500
num_D10 = 2000

sp=pack.SpherePack()

sp.makeCloud(minCorner=min_corner,maxCorner=max_corner,rMean=radius_D60,num=num_D60)
sp.makeCloud(minCorner=min_corner,maxCorner=max_corner,rMean=radius_D30,num=num_D30)
sp.makeCloud(minCorner=min_corner,maxCorner=max_corner,rMean=radius_D10,num=num_D10)
sp.toSimulation(material=O.materials[0])

====================================================================================================

I hope someone can give me some suggestion or advice regarding the matter above.

Thank you and Regards,
Nicholas Ng

Question information

Language:
English Edit question
Status:
Answered
For:
Yade Edit question
Assignee:
No assignee Edit question
Last query:
2019-06-19
Last reply:
2019-06-19
Chu (arcoubuntu) said : #1

Hello,

setContactFriction(radians(finalFricDegree))[1]
Is this what you expect?

[1]https://yade-dev.gitlab.io/trunk/yade.utils.html?highlight=setcontactfriction#yade._utils.setContactFriction

Nicholas Ng (nngyongjie) said : #2

Hi Chu,

Thanks a lot ! I will try out the command you suggested and see it works or not.

Thank you and regards,
Nicholas Ng

Can you help with this problem?

Provide an answer of your own, or ask Nicholas Ng for more information if necessary.

To post a message you must log in.