pore pressure in periodic triaxial test

Asked by jsonscript on 2020-02-26

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!

Question information

Language:
English Edit question
Status:
Answered
For:
Yade Edit question
Assignee:
No assignee Edit question
Last query:
2020-02-26
Last reply:
2020-02-26
Jan Stránský (honzik) said : #1

Hello,

> I want to know why the effective stress does not decrease

I would continue this part in [1]

cheers
Jan

[1] https://answers.launchpad.net/yade/+question/688979

Robert Caulk (rcaulk) said : #2

I'm having Déjà Vu. Fluid flow is not considered in yade unless a separate engine is included [1].

[1]https://answers.launchpad.net/yade/+question/688979

Chareyre (bruno-chareyre-9) said : #3

Hello, pore pressure refers to the pressure of a pore fluid. You are not
simulating a pore fluid, and therefore the notion is irrelevant. Effective
stress is nothing but total stress. And there is no «consolidation» in the
sense of Terzaghi (reason why I was confused when you used that name for
isotropic confinment).
Bruno

Le mer. 26 févr. 2020 09:14, yangsiyuan <
<email address hidden>> a écrit :

> 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.
>
> _______________________________________________
> Mailing list: https://launchpad.net/~yade-users
> Post to : <email address hidden>
> Unsubscribe : https://launchpad.net/~yade-users
> More help : https://help.launchpad.net/ListHelp
>
>
>

Jan Stránský (honzik) said : #5

Please do not discuss the same topic at two places [1]
Jan

I'm indeed only responding to the questions on pore pressure here, since that's the only thing which does not appear in the other question.

On pore pressure, hopefully, the answer can be simple: you have no pore pressure, pause.
Or equivalently, pore pressure = 0, and then no reason to mention "effective" stress since it is simply the total stress.
B

Can you help with this problem?

Provide an answer of your own, or ask jsonscript for more information if necessary.

To post a message you must log in.