define bond strength

Asked by Leonard on 2019-08-26

Hi,
I am using CohFrictMat to investigate the bond effect, starting from very simple assembly, for example: two sands bonded by two cements, fix one sand and give a constant velocity on another sand. Here is the script running on Yade 2018.02b, ubuntu 18.04.

from yade import pack, plot

cement = CohFrictMat(young=30e9,poisson=0.3,frictionAngle=radians(30),density=2650.0,normalCohesion=1e10, shearCohesion=1e9,label='cement')
O.materials.append(cement)

s1=utils.sphere((0,0,0),radius=1,color=[1,1,1],fixed=True,material='cement')
s2=utils.sphere((0,0,2),radius=1,color=[1,1,1],material='cement')
s3=utils.sphere((0,sqrt(0.44),1),radius=0.2,color=[0,0.8,0],material='cement')
s4=utils.sphere((0,-sqrt(0.44),1),radius=0.2,color=[0,0.8,0],material='cement')

O.bodies.append(s1)
O.bodies.append(s2)
O.bodies.append(s3)
O.bodies.append(s4)

s2.state.blockedDOFs='z'
s2.state.vel = Vector3(0,0,-1e1)

Gl1_Sphere.quality=3

O.engines=[
    ForceResetter(),
    InsertionSortCollider([Bo1_Sphere_Aabb()]),
    InteractionLoop(
        [Ig2_Sphere_Sphere_ScGeom6D()],
        [Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow = True,setCohesionOnNewContacts = True)],
        [Law2_ScGeom6D_CohFrictPhys_CohesionMoment()]
    ),
    NewtonIntegrator(damping=0.4),
    PyRunner(iterPeriod=100,command='addPlotData()',label='plotData'),
]
## run for one step to generate interactions
O.step()

def addPlotData():
    plot.addData(i=O.iter,
                 displacement=1.8-O.bodies[1].state.pos[2],
                 force_sand=O.forces.f(1)[2],
                 normalForce_cement=O.interactions[1,2].phys.normalForce.norm(),
                 shearForce_cement=O.interactions[1,2].phys.shearForce.norm(),
                 normalAdhesion=O.interactions[1,2].phys.normalAdhesion,
                 shearAdhesion=O.interactions[1,2].phys.shearAdhesion)

plot.plots={'displacement':('force_sand',),
            'i':('normalAdhesion'),
            'i ':('shearAdhesion'),
            'normalForce_cement':('shearForce_cement'),}

plot.plot()

My questions are:

1. Which parameters in Yade define the bond strength (normal strength/ shear strength)?
To my best understanding, one contact bond fails when the normal/ shear force exceeds the corresponding strength, I reviewed some answered questions and found that it may be related to cohesion which is defined in CohFrictMat, and may be related to interactions.phys.normalAdhesion/ shearAdhesion, so I am confused about which parameters define the bond strength.

2. How can we control the value of O.interactions.phys.normalAdhesion/ shearAdhesion?
In this simulation, when I change the value of normalCohesion and/or shearCohesion in CohFrictMat, the force of sand can reach different values at the moment when the two cement spheres are ejected away, it is reasonable since the two cements with higher cohesion can lead to higher stiffness of the assembly. However, when I change the normalCohesion and/or shearCohesion in CohFrictMat, there is no change for the normalAdhesion / shearAdhesion, Does it mean that there is no relationship between normalCohesion in CohFrictMat and normalAdhesion in O.interactions.phys? If so, how can we control the interactions.phys.normalAdhesion/ shearAdhesion?

3.I want to assign cohesion to all existing contacts not only in current time-step, but alse in steps as long as the cement particles contact to sand particles, is it right to set both "setCohesionNow" and "setCohesionOnNewContacts" to True?

4. In the graph"normalForce_cement--shearForce_cement", why there are two lines? I thought at the moment when the cement particles are ejected away, the normal force and shear force would quickly drop to zero like the other three graphs.

Many thanks!
Leonard (Aoxi)

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Robert Caulk
Solved:
2019-08-27
Last query:
2019-08-27
Last reply:
2019-08-27
Best Robert Caulk (rcaulk) said : #1

Just a remark for future questions, it would be helpful if you could link to our documentation so that we know we are speaking of the same parameters e.g. [1].

1) normalCohesion and shearCohesion parameters define the normal and shear bond strengths in CohFrictMat. As shown in the source code, they are converted to an adhesion when the interaction is created [2].

2) When defining the material:

CohFrictMat(isCohesive=True,normalCohesion=adhesion,shearCohesion=adhesion))

> However, when I change the normalCohesion and/or shearCohesion in CohFrictMat there is no change

Because the interactions are created once with the parameters provided by the material. After that the interactions no longer use the material, so changing parameters in the material only affects newly created interactions.

>How can we control the value of O.interactions.phys.normalAdhesion/ shearAdhesion?

I suppose just like that: O.interactions[i].phys.normalAdhesion = something.

3.) Once an interaction is considered cohesive, it will continue to be cohesive until a breaking criteria is violated. Using setCohesionOnNewContacts, would mean that any new contacts are always considered cohesive.

4.) Usually we reserve one thread for one question. I guess I am indulging 3 too many at this point :-) [3] (pt 5)

[1]https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.CohFrictMat.normalCohesion
[2]https://gitlab.com/yade-dev/trunk/blob/master/pkg/dem/CohesiveFrictionalContactLaw.cpp#L286
[3]https://www.yade-dem.org/wiki/Howtoask

Leonard (z2521899293) said : #2

Thanks Robert Caulk, that solved my question.