← Back to team overview

yade-users team mailing list archive

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.