← Back to team overview

yade-users team mailing list archive

[Question #688994]: pore pressure in periodic triaxial test

 

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

Hello everyone:

In the numerical simulation of the periodic triaxial undrained test, the effective stress remains unchanged after cyclic shear stress is applied again. I want to know why the effective stress does not decrease and how the pore pressure is considered in the periodic triaxial test. Here's my code, hoping to get some advice.

############################################
###    generate particles in the packing   ###
############################################
from yade import plot
from yade import pack,qt

O.periodic=True
O.cell.setBox(.016,.016,.016)
radius=0.4e-3
O.materials.append(FrictMat(young=70e9,poisson=0.3,frictionAngle=0.13,density=2650*1e4,label='spheres'))
sp=pack.SpherePack()
sp.makeCloud(minCorner=(0,0,0),maxCorner=(.016,.016,.016),psdSizes=[0.00045,0.000525,0.0006,0.000675,0.00075,0.000825,0.0009],psdCumm=[0,0.167,.333,.5,.667,0.833,1],num=10000,distributeMass=True,periodic=True)
O.bodies.append([utils.sphere(s[0],s[1]) for s in sp])
V_sphere=utils.getSpheresVolume()
V_cell=O.cell.hSize[0,0] * O.cell.hSize[1,1] * O.cell.hSize[2,2]
print 'void ratio:',(V_cell-V_sphere)/V_sphere,'dt:',utils.PWaveTimeStep()
O.save('gen-ball.xml')
qt.View()


############################################
###    consolidate the packing to reach the required confining pressure ###
############################################
from yade import plot,qt
from yade.pack import *
O=Omega() 
O.load('gen-ball.xml')
radius=0.4e-3
for b in O.bodies:
  b.mat.frictionAngle=0.119

V_sphere=utils.getSpheresVolume() 
O.engines=[
	ForceResetter(),
	InsertionSortCollider([Bo1_Sphere_Aabb()],verletDist=.05*radius),
	InteractionLoop(
		[Ig2_Sphere_Sphere_ScGeom()],
		[Ip2_FrictMat_FrictMat_MindlinPhys()],
		[Law2_ScGeom_MindlinPhys_Mindlin(includeMoment=False)]
	),
	PeriTriaxController(dynCell=True,maxUnbalanced=2e-3,relStressTol=2e-5,goal=[-1e5,-1e5,-1e5],stressMask=7,globUpdate=5,maxStrainRate=[0.1,0.1,0.1],doneHook='triaxDone()',label='triax'),
	NewtonIntegrator(damping=.2),
]

def triaxDone():
	print 'Here we are: stress',triax.stress,'strain',triax.strain,'stiffness',triax.stiff
	O.pause()
		
O.dt=0.4*utils.PWaveTimeStep()
O.run()
O.wait()
O.save('Phase1.xml.bz2')

#######################################
###  cyclic shear   ###"
#######################################
from yade.pack import *
O=Omega() 
O.load('Phase1.xml.bz2')
cycle=0
g0=O.cell.hSize[0,2]*100.0/O.cell.hSize[2,2]

O.dt=utils.PWaveTimeStep()
O.cell.velGrad=Matrix3(0,0,-0.01,0,0,0,0,0,0)
time=0
count=0
count1=0
zero=1
stop=0
count2=0
while 1:
  O.run(100,True)
  count=count+1
  count1=count1+1
  gamma=O.cell.hSize[0,1]*100/O.cell.hSize[1,1]-g0
  if count==32:
    count=0
 
  stress=utils.getStress()
  sigmazx=stress[0,2]/-1000
  sigmazz=stress[2,2]/1000.0
  if sigmazx>25:
    count=0
    count1=0
    count2=count2+1
    O.cell.velGrad=Matrix3(0,0,0.01,0,0,0,0,0,0)
  if sigmazx<-25:
    count=0
    count1=0
    count2=count2+1
    O.cell.velGrad=Matrix3(0,0,-0.01,0,0,0,0,0,0)

  print 'Speed:',O.cell.velGrad[0,2],'time:',O.realtime,'cycle:',cycle,'szx:',sigmazx,'stop:',stop
  if count2==2:
    cycle=cycle+1
    count2=0  
  if count1==4:
    defData(cycle)
    count1=0
  if gamma>2:
    O.save('gamma3.xml.bz2')
    break
 
    
Thank you very much!


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