# yade-users team mailing list archive

## [Question #677263]: Axial stress does decrease at the beginning of the deviatoric stress loading in triaxial test

```New question #677263 on Yade:

Hi,

I am conducting a simulation of particle breakage in a triaxial test, but at present I'm facing a strange problem: Normally, after the consolidation is completed, the deviatoric loading is entered, but deviatoric pressure is negative at the initial stage,  which means that the axial pressure at this stage is less than the confining pressure. In fact, for example, the set confining pressure is 100 kPa, and after the consolidation is completed, the pressures in all three directions are both 100 kpa, then entering deviatoric loading, the axial stress should be increased from 100 kpa. But in my test, after consolidation,  confining pressure is 100 kpa in three directions, but in deviatoric loading , axial stress is changed to 80 kpa , as the axial strain increases, the axial stress will gradually increase. When the axial strain is about 5%, the deviatoric stress will be greater than 0.

Do you have any idea about why deciatoric stress  is negative in the initial phase of the deviatoric loading?

Regards!
Cloud

this is my MWE(MWE1.py and MWE2.py are two python file, run MWE1.py first ):
# MWE1.py
import random
mn=(0,0,0)
mx = (40e-3,40e-3,80e-3)
sp=pack.SpherePack()
sp.makeCloud(mn,mx,-1,0.15,500,False,0.95,seed=1) # 500 particles
sp.toSimulation()
export.text('/tmp/123.txt')

import random
random.seed(1)
sp = ymport.text('/tmp/123.txt')
colors = [randomColor() for s in sp]

def Children(b):
p = b.state.refPos
s1 = sphere(p,0.5*r,color=colors[si])
s2 = sphere(p+(.75*r,0,0),.25*r,color=colors[si])
s3 = sphere(p+(-.75*r,0,0),.25*r,color=colors[si])
s4 = sphere(p+(0,.75*r,0),.25*r,color=colors[si])
s5 = sphere(p+(0,-.75*r,0),.25*r,color=colors[si])
return s1,s2,s3,s4,

for si,i in enumerate(sp):
oriBody = Quaternion(Vector3(1,0,0),random.random()*(pi/2))
oriBody *= Quaternion(Vector3(0,1,0),random.random()*(pi/2))
oriBody *= Quaternion(Vector3(0,0,1),random.random()*(pi/2))
b=O.bodies[si]
children = Children(b)
O.bodies.erase(si)
a=bodiesHandling.spheresModify(children,orientation=oriBody,copy=True)
ids=O.bodies.append(a)
for j in ids:
O.bodies[j].agglomerate=si

export.textExt('/tmp/456.txt','x_y_z_r_attrs',attrs=['b.agglomerate'])

#MWE2.py
key='haxi_'
mn = (0,0,0)
mx = (40e-3,40e-3,80e-3)
young = 300e6
compFricDegree = 30
damp = 0.6
stabilityThreshold = 0.01
rate = -0.02
finalFricDegree = 20
targetPorosity = 0.45
poisson = 0.22
confiningS = 100e3

O.materials.append(FrictMat(
young=young,
poisson=poisson,
frictionAngle=0,
density=0,
label='walls')
)

walls = aabbWalls([mn,mx],thickness=0,material='walls',wire=True)
wallIds = O.bodies.append(walls)

O.materials.append(CohFrictMat(
young=young,
poisson=poisson,
isCohesive=True,
density=2650,
momentRotationLaw=True,
normalCohesion=1e20, # Cn
shearCohesion=1e20, # Cs
alphaKr=0.2, # rolling stiffness
label='spheres')
)

attrs = []
sp = ymport.textExt('/tmp/456.txt',format='x_y_z_r_attrs',attrs=attrs)
n = max(int(a[0]) for a in attrs)+1
colors = [randomColor() for _ in xrange(n)]
for s,a in zip(sp,attrs):
aa = int(a[0])
s.agglomerate = aa
s.shape.color = colors[aa]
O.bodies.append(sp) # the last defined material is usedself.

triax=TriaxialStressController(
maxMultiplier=1.+2e4/young, # spheres growing factor (fast growth)
finalMaxMultiplier=1.+2e3/young, # spheres growing factor (slow growth)
thickness = 0,
internalCompaction=False,
)

factor=1.05
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=factor,label='bo1aabbs'),Bo1_Box_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom6D(interactionDetectionFactor=factor,label='ig2sss'),Ig2_Box_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys() ,Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True)],
[Law2_ScGeom_FrictPhys_CundallStrack(),Law2_ScGeom6D_CohFrictPhys_CohesionMoment(
useIncrementalForm=True,
label='conhesiveLaw')]
),
GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=1000,timestepSafetyCoefficient=0.5),
triax,
TriaxialStateRecorder(iterPeriod=100,file='WallStresses'+key,truncate=1),
NewtonIntegrator(damping=damp),
]

O.run(1,True)

ig2sss.interactionDetectionFactor = bo1aabbs.aabbEnlargeFactor = 1
for i in O.interactions:
if not isinstance(i.phys,CohFrictPhys):
continue
b1,b2 = [O.bodies[ii] for ii in (i.id1,i.id2)]
if b1.agglomerate != b2.agglomerate:
O.interactions.erase(i.id1,i.id2)
else:
i.phys.unp = i.geom.penetrationDepth

O.run(1,True)

#######################################
###   APPLYING CONFINING PRESSURE   ###
#######################################
triax.goal1=triax.goal2=triax.goal3=-confiningS

while 1:
O.run(1000, True)
unb=unbalancedForce()
print 'unbalanced force:',unb,' mean stress: ',triax.meanStress
if unb<stabilityThreshold and abs(-confiningS-triax.meanStress)/confiningS<0.001:
break

print "###      Isotropic state saved      ###"

triax.width0=triax.width
triax.depth0=triax.depth
triax.height0=triax.height
#############################
###############################
triax.goal3= rate
triax.goal1=-confiningS
triax.goal2=-confiningS

O.saveTmp()

## a function saving variables
def history():
e11=-triax.strain[0],
e22=-triax.strain[1],
e33=-triax.strain[2],
ev=triax.volumetricStrain,
s11=-triax.stress(triax.wall_right_id)[0],
s22=-triax.stress(triax.wall_top_id)[1],
s33=-triax.stress(triax.wall_front_id)[2],
devi = -triax.stress(triax.wall_front_id)[2] + triax.stress(triax.wall_top_id)[1],
i=O.iter)

axial_strain = abs(triax.strain[2])
if axial_strain > 0.2:
O.pause()

if 1:
O.engines=O.engines+[PyRunner(iterPeriod=500,command='history()',label='recorder')]

##O.run(100,True)

plot.plots={'e33':('ev',),' e33 ':('devi')}

# display on the screen (doesn't work on VMware image it seems)
plot.plot()

# In that case we can still save the data to a text file at the the end of the simulation, with:
plot.saveDataTxt('results'+key)
#or even generate a script for gnuplot. Open another terminal and type  "gnuplot plotScriptKEY.gnuplot:
plot.saveGnuplot('plotScript'+key)

--