yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #12172
Re: [Question #284255]: Constant volume in Periodic triaxial test
Question #284255 on Yade changed:
https://answers.launchpad.net/yade/+question/284255
Status: Answered => Open
Seti is still having a problem:
Thanks heaps Jerome,
I have tried to change just triaxial goal to your suggested numbers. Based on observation exx & eyy starts from zero ( more and less) untill reach to .5 at this step these two strain will be remain at this value and the ezz incrementally increases till satisfy our BC : ezz =1 ; however when I have tried to plot stress - strain graphs in all direction they were zero , which it dose not have any meaning in undrained(?) test - Not sure about this statement - please advise :(
the script which is familiar to you is as per below.
Regards
sigmaIso=-1e5
from yade import pack, qt, plot
O.materials.append(CohFrictMat(alphaKr=0.6,young=800e6,poisson=0.3,frictionAngle=radians(22),momentRotationLaw=True,etaRoll=1,density=2600,label='spheres'))
O.periodic=True
sp=pack.SpherePack()
sp.makeCloud((0,0,0),(.0045,0.0045,.0045),rMean=.00018,rRelFuzz=0.00001,periodic=True)
sp.toSimulation()
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom6D()],
[Ip2_FrictMat_FrictMat_FrictPhys (),Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(label="cohesiveIp")],
[Law2_ScGeom_FrictPhys_CundallStrack(),Law2_ScGeom6D_CohFrictPhys_CohesionMoment(
useIncrementalForm=True, #useIncrementalForm is turned on as we want plasticity on the contact moments
always_use_moment_law=True, #if we want "rolling" friction even if the contact is not cohesive (or cohesion is broken), we will have to turn this true somewhere
label='cohesiveLaw')]
),
PeriTriaxController(label='triax',
# specify target values and whether they are strains or stresses
goal=(sigmaIso,sigmaIso,sigmaIso),stressMask=7,
# type of servo-control
dynCell=True,maxStrainRate=(10,10,10),
# wait until the unbalanced force goes below this value
maxUnbalanced=.1,relStressTol=1e-3,
# call this function when goal is reached and the packing is stable
doneHook='compactionFinished()'
),
NewtonIntegrator(damping=.2),
PyRunner(command='addPlotData()',iterPeriod=100),
#TriaxialStateRecorder(iterPeriod=50,file='WallStresses'),
]
O.dt=.5*PWaveTimeStep()
print 'Number of elements: ', len(O.bodies)
def addPlotData():
plot.addData(unbalanced=unbalancedForce(),i=O.iter,
sxx=triax.stress[0],syy=triax.stress[1],szz=triax.stress[2],
exx=triax.strain[0],eyy=triax.strain[1],ezz=triax.strain[2],
# save all available energy data
Etot=O.energy.total(),**O.energy
)
# enable energy tracking in the code
O.trackEnergy=True
def compactionFinished():
# set the current cell configuration to be the reference one
O.cell.trsf=Matrix3.Identity
# change control type: keep constant confinement in x,y, 20% compression in z
#triax.goal=(sigmaIso,sigmaIso,-.2)
triax.goal=(0.5,0.5,-1)
triax.stressMask=0
# allow faster deformation along x,y to better maintain stresses
triax.maxStrainRate=(1.,1.,.1)
# next time, call triaxFinished instead of compactionFinished
triax.doneHook='triaxFinished()'
# do not wait for stabilization before calling triaxFinished
triax.maxUnbalanced=10
def triaxFinished():
print 'Finished'
O.pause()
#O.save('/tmp/div.yade.bz2')
#O.saveGnuplot(O.tags['id'])
#plot.saveGnuplot(O.tags['id'])
#plot.saveDataTxt(O.tags['id'])
O.run(50000000000000,True)
plot.plots={'eyy':('syy'),
}
plot.plot(subPlots=False)
plot.saveDataTxt('')
plot.plot()
--
You received this question notification because your team yade-users is
an answer contact for Yade.