New question #683427 on Yade:
https://answers.launchpad.net/yade/+question/683427

Hello, everybody!

Although Yade provides a tutorial of Periodic triaxial test, I still not 
understand the role of PeriTriaxController() in every step of DEM simulation. 

By documentation, I understand the role of ForceResetter() is to reset force, 
InsertionSortCollider([Bo1_Sphere_Aabb()]) to create potential  interactions,  
InteractionLoop([Ig2_Sphere_Sphere_ScGeom()], 
[Ip2_FrictMat_FrictMat_FrictPhys()][Law2_ScGeom_FrictPhys_CundallStrack()]) to 
make exact collision detection, compute interaction properties and determine 
force, which coresponds to the sequence of simulation loop respectively.

So could you give me the role of played by PeriTriaxController() in the  
simulation loop. And what operation PeriTriaxController() in mumerical triaxial 
test does corespond to in a actual triaxial test?

Here is the codes:
from __future__ import print_function
sigmaIso=-1e5

#import matplotlib
#matplotlib.use('Agg')

# generate loose packing
from yade import pack, qt, plot

O.periodic=True
sp=pack.SpherePack()
if 0:
        ## uniform distribution
        sp.makeCloud((0,0,0),(2,2,2),rMean=.1,rRelFuzz=.3,periodic=True)
else:
        ## create packing from clumps
        # configuration of one clump
        c1=pack.SpherePack([((0,0,0),.03333),((.03,0,0),.017),((0,.03,0),.017)])
        # make cloud using the configuration c1 (there could c2, c3, ...; 
selection between them would be random)
        sp.makeClumpCloud((0,0,0),(2,2,2),[c1],periodic=True,num=500)

# setup periodic boundary, insert the packing
sp.toSimulation()

O.engines=[
        ForceResetter(),
        InsertionSortCollider([Bo1_Sphere_Aabb()]),
        InteractionLoop(
                [Ig2_Sphere_Sphere_ScGeom()],
                [Ip2_FrictMat_FrictMat_FrictPhys()],
                [Law2_ScGeom_FrictPhys_CundallStrack()]
        ),
        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),
]
O.dt=.5*PWaveTimeStep()

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

# define what to plot
plot.plots={'i':('unbalanced',),'i ':('sxx','syy','szz'),' 
i':('exx','eyy','ezz'),
        # energy plot
        ' i ':(O.energy.keys,None,'Etot'),
}
# show the plot
plot.plot()

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.stressMask=3
        # 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()

Thanks!

-- 
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 protected]
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp

Reply via email to