yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #22318
[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.