Comparison of contact Law

Asked by Luis Barbosa on 2014-05-19

Hi,
I'm studying some contact law, for this reason I have compared:

#First Facet with cohesion to simulate the adhesion between particle and face:

#exercicio de plotagem com 02 esferas com leis de contato diferentes
# import yade modules that we will use below
from yade import plot
#Definir material
# create rectangular box from facets
#O.materials.append(FrictMat(young=15e6,poisson=.4,frictionAngle=radians(20),density=4000,))
O.materials.append(CohFrictMat(young=15e6,poisson=0.3,density=4000,frictionAngle=radians(20),isCohesive=True,normalCohesion=1e6,shearCohesion=1e6,momentRotationLaw=True,etaRoll=0.1,label='spheres'))
O.bodies.append(utils.geom.facetBox((.5,.5,.5),(.5,.5,.5),wallMask=31))
# Criar a esfera coesiva
O.materials.append(CohFrictMat(young=15e6,poisson=0.3,density=2600,frictionAngle=radians(30),isCohesive=True,normalCohesion=1e10,shearCohesion=1e10,momentRotationLaw=True,etaRoll=0.1,label='spheres'))
O.bodies.append([utils.sphere(center=(0.5,0.5,1),radius=.07)])
O.bodies.append([utils.sphere(center=(0.5,0.6,0.5),radius=.07)])
# Criar interacoes
O.engines=[
   ForceResetter(),
   InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Facet_Sphere_ScGeom6D()],
#[Ip2_FrictMat_FrictMat_FrictPhys(),
[Ip2_CohFrictMat_CohFrictMat_CohFrictPhys (setCohesionNow=True,label="cohesiveIp")],
#[Law2_ScGeom_FrictPhys_CundallStrack(),
[Law2_ScGeom6D_CohFrictPhys_CohesionMoment(label='cohesiveLaw')]
),

   GravityEngine(gravity=(0,0,-9.81)),
   NewtonIntegrator(damping=0.4),
   PyRunner(command='myAddData()',iterPeriod=20)

]
O.dt=.5e-1*utils.PWaveTimeStep()

def myAddData():
        b=O.bodies[10]
        plot.addData(z1=b.state.pos[2],v1=b.state.vel.norm(), i=O.iter, t=O.time)

plot.plots={
        't':('z1','v1') # z1(t) and v1(t)
}

plot.plot()
O.saveTmp()

And

#Second Facet without cohesion

#exercicio de plotagem com 02 esferas com leis de contato diferentes
# import yade modules that we will use below
from yade import plot
#Definir material
# create rectangular box from facets
O.materials.append(FrictMat(young=15e6,poisson=.4,frictionAngle=radians(20),density=4000,))
#O.materials.append(CohFrictMat(young=15e6,poisson=0.3,density=4000,frictionAngle=radians(20),isCohesive=True,normalCohesion=1e60,shearCohesion=1e60,momentRotationLaw=True,etaRoll=0.1,label='spheres'))
O.bodies.append(utils.geom.facetBox((.5,.5,.5),(.5,.5,.5),wallMask=31))
# Criar a esfera coesiva
O.materials.append(CohFrictMat(young=15e6,poisson=0.3,density=2600,frictionAngle=radians(30),isCohesive=True,normalCohesion=1e1000,shearCohesion=1e1000,momentRotationLaw=True,etaRoll=0.1,label='spheres'))
O.bodies.append([utils.sphere(center=(0.5,0.5,1),radius=.07)])
O.bodies.append([utils.sphere(center=(0.5,0.6,0.5),radius=.07)])
# Criar interacoes
O.engines=[
   ForceResetter(),
   InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Facet_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys(),
Ip2_CohFrictMat_CohFrictMat_CohFrictPhys (setCohesionNow=True,label="cohesiveIp")],
[Law2_ScGeom_FrictPhys_CundallStrack(),
Law2_ScGeom6D_CohFrictPhys_CohesionMoment(label='cohesiveLaw')]
),

   GravityEngine(gravity=(0,0,-9.81)),
   NewtonIntegrator(damping=0.4),
   PyRunner(command='myAddData()',iterPeriod=20)

]
O.dt=.5e-1*utils.PWaveTimeStep()

def myAddData():
        b=O.bodies[10]
        plot.addData(z1=b.state.pos[2],v1=b.state.vel.norm(), i=O.iter, t=O.time)

plot.plots={
        't':('z1','v1') # z1(t) and v1(t)
}

plot.plot()

O.saveTmp()

For both the message is;

WARN /tmp/buildd/yadedaily-1.05.0-28-g5e71fa5~precise/pkg/dem/CohesiveFrictionalContactLaw.cpp:156 go: If :yref:`Law2_ScGeom6D_CohFrictPhys_CohesionMoment::useIncrementalForm` is false, then plasticity will not be applied correctly (the total formulation would not reproduce irreversibility).

1) Are there some consideration wrong
2) Am I right to simulate adhesion by doing a Facet with cohesion, or is not necessary

Thanks

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Bruno Chareyre
Solved:
2014-05-21
Last query:
2014-05-21
Last reply:
2014-05-20

Hi,
This warning concerns the contact moments. If they are are not purely elastic, then it should use the incremental form in order to compute unloading correctly.
It appears in the second script probably because there is a cohesive interaction between the two spheres?
Besides, I'm not sure how to understand your questions. For 2), yes cohesion is the right way to have adhesion.
If the objective is just to test laws, you could use just two spheres actually.

Luis Barbosa (luis-pires-b) said : #2

Hi Bruno, thanks for the answer.
Using the incremental form solved the warning.
But how can I print or plot the cohesion values?
In the question "Relationship between Material parameters and Interaction parameters", I saw:

def change_para():
    for i in O.interactions:
            coh0=i.phys.normalAdhesion
            print "cohension:",coh0
change_para()

I'm trying some variations of this example, but appears this:
    for i in O.interactions:
       ^
Indentation Error: expected an indented block

Thanks!

Christian Jakob (jakob-ifgt) said : #3

Hi Luis,

> Indentation Error: expected an indented block

Hm, looks like an indentation error ;)

Maybe you mixed space-character-indents and tab-indents ?

c

Luis Barbosa (luis-pires-b) said : #4

Thanks Bruno Chareyre, that solved my question.

Luis Barbosa (luis-pires-b) said : #5

Hi Christian,
I think that the way to print the adhesion is not working.