Kn and Ks value for Hertz-Mindilin model

Asked by SayedHessam on 2019-04-23

This was an issue I ran into before with the Cundall-Strack law, and I am now also seeing with Hertz-Mindlin law. Hence, I am trying to input specific value for kn and ks for this contact model and the formulation proposed by yade, but I do not know what I can consider them in my simulation.

Is there a way to use these values? Would a simple Ip2_FrictMat_FrictMat_MindlinPhys(kn=5e5, ks=5e5)?

You can find herein the necessary part of my script.

Thanks in advance.
Sam

############################## material new parameters ###############################
young =3e5 # elastic modulus [Pa]
poisson = 0.25
finalFricDegree=30
density = 1950
mn,mx=Vector3(-0.52e-3, -1e-3,-1e-3),Vector3(0.52e-3, 1e-3, 1e-3) #size of particle
radius= 1 # Internal Radius
identifier=str(particleDiameter)
output='./out/'+identifier
rate = strainRate*10000
stabilityThreshold=0.01
iterper=1000 # Periodicity criterion using step number (deactivated if <= 0)
kn=5e1 # Normal stiffness
ks=5e1 # Shear Stiffness
kr=0 # Rotational stiffness
Bn=0
Bs=0
intRadius=1
##########################################################################################

Friction=O.materials.append(FrictMat(young=young, density=density, frictionAngle=radians(finalFricDegree), poisson=poisson, label='sphere'))

#frictionless walls
wallmat = O.materials.append(FrictMat(young=80e9, poisson=.45, frictionAngle=radians(finalFricDegree), density=7000, label='Walls'))

walls=aabbWalls([mn,mx], material='Walls')
wallIds=O.bodies.append(walls)

sp = O.bodies.append(ymport.textExt('sandGrain_0-6mmdiameter.spheres', 'x_y_z_r',color=(0,0.2,0.7), material='sphere'))

triax = TriaxialStressController(
 thickness=0,
 stressMask=7,
 internalCompaction=False,
 )

O.engines=[
 ForceResetter(),
 InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=intRadius),Bo1_Box_Aabb()]),
 InteractionLoop(
  [Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Box_Sphere_ScGeom()],
  [Ip2_FrictMat_FrictMat_MindlinPhys(betan=Bn,betas=Bs,ktwist=0.0,krot=ks,label='ContactModel')],
  [Law2_ScGeom_MindlinPhys_Mindlin(neverErase=True,includeMoment=False,includeAdhesion=False,label='Mindlin')]
 ),
 GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.5),
 triax,
 VTKRecorder(dead=0,Key=identifier,iterPeriod=iterper,initRun=True,fileName=(output+'-'),recorders=['spheres','intr','stress', 'bstresses','jcfpm','cracks']),
 NewtonIntegrator(damping=0.9)
]

O.dt = 0.3 * utils.PWaveTimeStep()

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
SayedHessam
Solved:
2019-04-24
Last query:
2019-04-24
Last reply:
2019-04-23
Robert Caulk (rcaulk) said : #1

Nope, I believe you need to make your own material class in C++. FrictMat uses the values Young and Poisson in collaboration with interacting particle radii to estimate Kn and Ks [1]. There are a couple benefits to particle size based stiffnesses, one of which is the scale independence of macroscopic behaviors IINM, the other being the radii distribution based stiffness heterogeneity distribution.

[1]https://yade-dev.gitlab.io/-/trunk/-/jobs/200298968/artifacts/install/share/doc/yade-ci/html/formulation.html#stiffnesses

SayedHessam (samb6661) said : #2

Dear Robert,

thanks for your quick response.

BTW, for Hertz-Mindlin there are these parameters kn and ks [1], but you say I should make my material class in C++.

Cheers
Sam

[1] https://yade-dev.gitlab.io/trunk/yade.wrapper.html?highlight=frictmat#yade.wrapper.MindlinPhys

Robert Caulk (rcaulk) said : #3

You reference the physics of a single interaction, those values are computed inside Yade. Now that I think about it, you could let Yade compute those values and then overwrite them by looping through all interactions. From what I can see in the source, you will only need to do this once anytime new interactions are created.

for i in O.interactions:
    i.phys.kn = 10
    i.phys.ks = 5

SayedHessam (samb6661) said : #4

Thanks Robert, that solved my question.