yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #04610
[Question #163253]: Hydrostatic pressure and some issues on triaxial tests
New question #163253 on Yade:
https://answers.launchpad.net/yade/+question/163253
Dear all,
I would like to know below issues.
1. Why I don't get stress 0 at time=0 during isotropic consolidation (hydrostatic pressure) when I run peri3dController_triaxialCompression.py with the parameters as given below (It seems that there is 300kPa pressure at t=0, I don't know how this high pressure is applied at t=0).
2. Its also not clear why stresses in xx and yy directions change during axial compression (those should be constants).
3. How can I change/know strain rate? It seems the original script attached herewith doesn't have any parameter to change strain rate. Is that so?
4. Whats stressMask? How is stressMask related to goal?
5. How can I access to original data of the tests (here, I just see graphs but I prefer to take data and use them in my analysis)
6. Are there any publications used peri3dController_triaxialCompression.py script to test triaxial tests?
.........................................................................................................................................................................................................................................
# peri3dController_triaxialCompression.py
# script, that explains funcionality and input parameters of Peri3dController on the example of
# triaxial compression.
# Firstly, a hydrostatic preassure is applied, then a strain along z axis is increasing
# while x- and y- stress is constant
# The simulation is run on rotated cell to enable localization and strain softening
# (you can also try simulation with command sp.toSimulation() with no rotation,
# in this case there is almost no difference, but in script peri3dController_shear,
# the cell rotation has significant effect)
from yade import pack,plot,qt
# define material
O.materials.append(FrictMat())
# create periodic assembly of particles
initSize=.004
sp=pack.randomPeriPack(radius=.00023,initSize=Vector3(initSize,initSize,initSize),memoizeDb='/tmp/packDb.sqlite')
angle=0
rot=Matrix3(cos(angle),0,-sin(angle), 0,1,0, sin(angle),0,cos(angle))
sp.toSimulation(rot=rot)
# plotting
plot.live=False
plot.plots={'iter':('sx','sy','sz','syz','szx','sxy',),'iter_':('ex','ey','ez','eyz','ezx','exy',),'ez':('sz',)}
def plotAddData():
plot.addData(
iter=O.iter,iter_=O.iter,
sx=p3d.stress[0],sy=p3d.stress[1],sz=p3d.stress[2],
syz=p3d.stress[3],szx=p3d.stress[4],sxy=p3d.stress[5],
ex=p3d.strain[0],ey=p3d.strain[1],ez=p3d.strain[2],
eyz=p3d.strain[3],ezx=p3d.strain[4],exy=p3d.strain[5],
)
O.dt=utils.PWaveTimeStep()/2
# define the first part of simulation, hydrostatic compression
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_Dem3DofGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys()],[Law2_Dem3DofGeom_FrictPhys_CundallStrack()]),
NewtonIntegrator(),
Peri3dController( goal=(-1e5,-1e5,-1e5, 0,0,0), # Vector6 of prescribed final values
stressMask=0b000111,
nSteps=500,
doneHook='print "Hydrostatic load reached."; O.pause()',
youngEstimation=.09e9, # needed, when only nonzero prescribed values are stress
maxStrain=.5,
label='p3d'
),
PyRunner(command='plotAddData()',iterPeriod=1),
]
O.run(); O.wait()
# second part, z-axis straining and constant transversal stress
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_Dem3DofGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys()],[Law2_Dem3DofGeom_FrictPhys_CundallStrack()]),
NewtonIntegrator(),
Peri3dController( goal=(-1e5,-1e5,-4e-1, 0,0,0), # Vector6 of prescribed final values
stressMask=0b000011,
nSteps=1000,
xxPath=[(0,1),(1,1)], # the first (time) zero defines the initial value of stress considered nonzero
yyPath=[(0,1),(1,1)],
doneHook='print "Simulation with Peri3dController finished."; O.pause()',
maxStrain=.5,
label='p3d',
strain=p3d.strain, # continue from value reached in previous part
stressIdeal=Vector6(-1e5,-1e5,0, 0,0,0), # continue from value reached in previous part
),
PyRunner(command='plotAddData()',iterPeriod=1),
]
O.run();O.wait()
plot.plot()
...........................................................................................................................................................................................................................................
Thank you very much.
Regards,
Janaka
--
You received this question notification because you are a member of
yade-users, which is an answer contact for Yade.