yade-users team mailing list archive

Re: [Question #683706]: contact law between bodies with different materials

 Thread Previous • Date Previous • Date Next • Thread Next

Question #683706 on Yade changed:

Status: Open => Answered

Jan Stránský proposed the following answer:
Hi,

> what kind of contact law yade uses for dealing with sand-cement
interaction?

Ip2_FrictMat_FrictMat_FrictPhys
Because CohFrictMat is derived from FrictMat and if CohFrictMat-FrictMat Ip2 is not found, Yade tries it with base classes (FrictMat-FrictMat in this case).

You can try on a simple 3 sphere example:
###
sand = FrictMat(label='sand')
cement = CohFrictMat(label='cement')
O.materials.append(sand)
O.materials.append(cement)
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb()]),
InteractionLoop(
[
Ig2_Sphere_Sphere_ScGeom(),
Ig2_Sphere_Sphere_ScGeom6D()
],
[
Ip2_FrictMat_FrictMat_FrictPhys(),
Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow = True,setCohesionOnNewContacts = True)
],
[
Law2_ScGeom_FrictPhys_CundallStrack(),
Law2_ScGeom6D_CohFrictPhys_CohesionMoment()
],
),
NewtonIntegrator(damping=0.4),
]
s1 = sphere((0.0,0,0),1,material=sand)
s2 = sphere((0.1,0,0),1,material=sand)
c1 = sphere((0.2,0,0),1,material=cement)
c2 = sphere((0.3,0,0),1,material=cement)
O.bodies.append((s1,s2,c1,c2))
O.step()
for intr in O.interactions:
i1,i2 = intr.id1,intr.id2
b1,b2 = [O.bodies[i] for i in (i1,i2)]
m1,m2 = [b.mat.label for b in (b1,b2)]
print(m1,m2,intr.phys)
###

cheers
Jan

--