# yade-users team mailing list archive

## Re: [Question #695154]: Polyhedra contact instability (potential Bug?)

 Thread Previous • Date Previous • Date Next • Thread Next

```Question #695154 on Yade changed:

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

I can confirm this problem. The contact normal together with contact
force magnitude might be the source of the problem (I was not solving
the problem, just detecting it).

Apart from Bruno's option, have a try potential blocks [1]. It models
the same shape, but different contact logic. The results seems more
"natural" for these cases. Have look at the testing code below.

Disclainmer: I have ever used potential blocks for this testing script
only :-) it was some time ago for my colleague playing with polyhedrons,
running into the same problems you describe.

cheers
Jan

###
O.engines=[
ForceResetter(),
InsertionSortCollider([PotentialBlock2AABB()]),
InteractionLoop(
[Ig2_PB_PB_ScGeom(unitWidth2D=1.0, calContactArea=True)],
[Ip2_FrictMat_FrictMat_KnKsPBPhys(kn_i=1e8, ks_i=1e7, Knormal=1e8, Kshear=1e7, viscousDamping=0.2)],
[Law2_SCG_KnKsPBPhys_KnKsPBLaw(label='law', neverErase=False, allowViscousAttraction=False)]
),
NewtonIntegrator(damping=0.2, exactAsphericalRot=True),
PotentialBlockVTKRecorder(fileName='/tmp/pb', iterPeriod=50, sampleX=60, sampleY=60, sampleZ=60, label='vtkRecorder')
]

def cube(pos,size):
ret = Body()
r = .5*size
a = [1,-1,0,0,0,0]
b = [0,0,1,-1,0,0]
c = [0,0,0,0,1,-1]
d = [.5*size-r for _ in range(6)]
minmaxAabb = 1.05*Vector3( d[0], d[2], d[4] )
ret.shape=PotentialBlock(r=r, R=0.0, a=a, b=b, c=c, d=d, id=len(O.bodies))
utils._commonBodySetup(ret,ret.shape.volume,ret.shape.inertia,material=-1,pos=pos)
ret.state.ori = ret.shape.orientation
return ret

b1 = cube((0,0,0),1)
b2 = cube((2,0,0),1)
O.bodies.append((b1,b2))
b1.state.vel = (1,0,0)
b1.state.angVel = (0,0,2)
O.dt = 1e-3
O.run(3000,True)
###

--