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

Tell me about the " batch method "

I would like to create a batch method Periodic triaxial test, but it is not 
calculated accurately.

Could you please modify the program?

###############################################
#batch text
rMean 
.05 
.10 
.15 
###############################################

###############################################
#Periodic triaxial test
readParamsFromTable(rMean=.05)
# make rMean, rRelFuzz, maxLoad accessible directly as variables later
from yade.params.table import *

sigmaIso = -200e3

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

# generate loose packing
from yade import pack,  plot

O.periodic = True
sp = pack.SpherePack()
if 1:
        ## uniform distribution
        sp.makeCloud((0, 0, 0), (0.25, 0.25, 0.2), rMean=rMean, rRelFuzz=.2, 
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=10),
]
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():
        plot.saveDataTxt(O.tags['id'] + '.txt')
        waitIfBatch()
        O.pause()
###############################################

-- 
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