← Back to team overview

yade-users team mailing list archive

[Question #295592]: Problems for allowBiggerThanPeriod

 

New question #295592 on Yade:
https://answers.launchpad.net/yade/+question/295592

hi, everyone.
allowBiggerThanPeriod can be used for large deformation.  However, i found that if the shear strain is largger than a specific value (e.g. 2.8 in the following script), the contact stress would decrease to zero. Initially, i thought shear dilation cause this phenomenon. So i checked the volume fraction, which kept constant in the shear process since the spheres were frictionless. So, how to explain this. Here is my script.
/****************************/
O.periodic=True
O.cell.refSize=(2,2,2)

from yade import pack,plot,qt

O.bodies.append(pack.regularHexa(pack.inAlignedBox((0,0,0),(2,2,2)),radius=.1,gap=0,color=(0,0,1)))
O.materials[0].frictionAngle=0

O.engines=[
   ForceResetter(),
   InsertionSortCollider([Bo1_Sphere_Aabb()],allowBiggerThanPeriod=True,verletDist=0.01), 
   InteractionLoop(
      [Ig2_Sphere_Sphere_L3Geom()],
      [Ip2_FrictMat_FrictMat_FrictPhys()],
      [Law2_L3Geom_FrictPhys_ElPerfPl()]
   ),
   NewtonIntegrator(damping=.4),
   PyRunner(command='checkStress()',realPeriod=1,label='checker'),
   PyRunner(command='addData()',iterPeriod=100)
]

O.dt=.2*PWaveTimeStep()
O.cell.velGrad=Matrix3(-.1,0,0, 0,-.1,0, 0,0,-.1)
limitMeanStress=-5e5

def checkStress():
   stress=sum(normalShearStressTensors(),Matrix3.Zero)
   print 'mean stress',stress.trace()/3.
   if abs(stress.trace()/3.) > abs(limitMeanStress):
      O.cell.velGrad=Matrix3(0,0,.1, 0,0,0, 0,0,0)
      checker.command='checkDistorsion()'
      O.materials[0].frictionAngle=.5 # radians
      for i in O.interactions: i.phys.tangensOfFrictionAngle=tan(.5)

def checkDistorsion():
   if abs(O.cell.trsf[0,2])> 3.0:
      plot.saveDataTxt(O.tags['id']+'.txt')
      O.pause()


def addData():
   stress=sum(normalShearStressTensors(),Matrix3.Zero)
   plot.addData(exz=O.cell.trsf[0,2],szz=stress[2,2],sxz=stress[0,2],tanPhi=stress[0,2]/stress[2,2],i=O.iter,vf=1-utils.porosity(),z=utils.avgNumInteractions())

plot.plots={'i':('exz'),'exz':('szz','sxz'),'i ':('tanPhi'), 'i':('z')}

Gl1_Sphere.stripes=True
plot.plot()
O.saveTmp()
/****************************/


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