← Back to team overview

yade-users team mailing list archive

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

 

Question #683706 on Yade changed:
https://answers.launchpad.net/yade/+question/683706

    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

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.