Question #703169 on Yade changed:
https://answers.launchpad.net/yade/+question/703169

    Status: Needs information => Open

Xu gave more information on the question:
Hi Karol,
Thank you for your reply.

This is the script i use:

 ######Consolidation#######
from yade import pack,plot,qt,export,ymport,utils
import numpy as np
IsoSigma = -1.e5
O.periodic=True
O.trackEnergy=True
idSand=O.materials.append(FrictMat(young=2e8,poisson=.8,frictionAngle=0.09,density=2650000,label='spheres'))
sp1=pack.SpherePack()
sp1.makeCloud(maxCorner=(0.02, 0.02, 0.02), psdSizes=[0.00017, 0.000191, 
0.0002285, 0.00026, 0.000292, 0.000325, 0.00035], psdCumm=[0.0, 0.1, 0.3, 0.5, 
0.6, 0.9, 1], periodic=True,num=5000,seed=1)
sp1.toSimulation(color=(0,0,1),material=idSand)
v=utils.getSpheresVolume()
print utils.getSpheresVolume()
fout = file('Packing_volume.txt','w')
fout.write(str(v))
fout.close()

#### show how to use makeClumpTemplate():
relRadList2 = [1,1]
relPosList2 = [[0.4,0,0],[-0.4,0,0]]

templates= []
templates.append(clumpTemplate(relRadii=relRadList2,relPositions=relPosList2))
O.bodies.replaceByClumps(templates,[1.],discretization=10)


law=Law2_ScGeom_FrictPhys_CundallStrack(traceEnergy=True)
O.engines=[
        ForceResetter(),
        InsertionSortCollider([Bo1_Sphere_Aabb()]),
        InteractionLoop(
                [Ig2_Sphere_Sphere_ScGeom()],
                [Ip2_FrictMat_FrictMat_FrictPhys()],
                [law]),
#       PyRunner(command='fabric()',iterPeriod=10000),
        GlobalStiffnessTimeStepper(),
        NewtonIntegrator(damping=0.20),
        PeriTriaxController(    goal=(IsoSigma,IsoSigma,IsoSigma), # Vector6 of 
prescribed final values
                                stressMask=7,
                                dynCell=True,
                                maxStrainRate=(5.e+0,5.e+0,5.e+0),
                                maxUnbalanced=0.0001,
                                relStressTol=1.e-3,
                                doneHook='Finished()',
                                label='p3d'
        ),
#       PyRunner(command='plotAddData()',iterPeriod=100),
]

def Finished():
        O.save('post_iso.xml')
        print 'Finished'
        print (O.cell.size[0]*O.cell.size[1]*O.cell.size[2]-v)/v
        print getStress()
        print unbalancedForce()
        O.pause()

O.run()


########Undrained triaxial test#########
from yade import pack,plot,qt,export
from math import fabs
import numpy as np
O.load('post_iso.xml')
O.trackEnergy=True
setContactFriction(0.5)
filename1='Packing_volume.txt'
a=np.loadtxt(filename1)
Ep_ini=O.energy['elastPotential']
Edamp_ini=O.energy['nonviscDamp']
Ekin_ini=utils.kineticEnergy()
work=0

law=Law2_ScGeom_FrictPhys_CundallStrack(traceEnergy=True)
O.engines=[
        ForceResetter(),
        InsertionSortCollider([Bo1_Sphere_Aabb()]),
        InteractionLoop(
                [Ig2_Sphere_Sphere_ScGeom()],
                [Ip2_FrictMat_FrictMat_FrictPhys()],
                [law]),
        NewtonIntegrator(damping=0.2),
        GlobalStiffnessTimeStepper(),
        PyRunner(command='inputwork()',iterPeriod=1),
        PyRunner(command='plotAddData()',iterPeriod=10),
]

def inputwork():
        global work
        
dwork=(0.5*(O.cell.prevVelGrad+O.cell.velGrad)*utils.getStress()).trace()*O.dt*(O.cell.hSize).determinant()
        work=work+dwork

def plotAddData():
        global Ep_ini
        global Edamp_ini
        global Ekin_ini
        global work
        plot.addData(
                iter=O.iter,iter_=O.iter,
                sxx=utils.getStress()[0,0],
                syy=utils.getStress()[1,1],
                szz=utils.getStress()[2,2],
                exx=O.cell.getSmallStrain()[0,0],
                eyy=O.cell.getSmallStrain()[1,1],
                ezz=O.cell.getSmallStrain()[2,2],
                exx1=O.cell.size[0],
                eyy1=O.cell.size[1],
                ezz1=O.cell.size[2],
                ex1=O.cell.hSize[0,0],
                ey1=O.cell.hSize[1,1],
                ez1=O.cell.hSize[2,2],
                exy1=O.cell.hSize[0,1],
                eyx1=O.cell.hSize[1,0],
                Z=avgNumInteractions(),
                Zm=avgNumInteractions(skipFree=True),
                voidratio=(O.cell.size[0]*O.cell.size[1]*O.cell.size[2]-a)/a,
#               poros=voxelPorosity(500,(0,0,0),O.cell.size),
                unbalanced=utils.unbalancedForce(),
                t=O.time,
                inwork=work
                gWork=O.energy['gravWork'],
#               Ep=O.energy['elastPotential'],
                Ep=law.elasticEnergy()-Ep_ini,
                Edamp=O.energy['nonviscDamp']-Edamp_ini,
                Ediss=law.plasticDissipation(),
#               Ediss=O.energy['plastDissip'],
                Ekin=utils.kineticEnergy(),
                
Etot=law.elasticEnergy()-Ep_ini+O.energy['nonviscDamp']-Edamp_ini+law.plasticDissipation()+utils.kineticEnergy()-Ekin_ini,
#               Etot=O.energy.total(),**O.energy
                
        )
        
plot.saveDataTxt('macroFile',vars=('t','exx','eyy','ezz','sxx','syy','szz','Z','Zm','voidratio'))
        
plot.saveDataTxt('energyFile',vars=('t','unbalanced','gWork','Edamp','Ekin','Ep','Ediss','Etot','inwork'))


O.cell.trsf=Matrix3.Identity
O.cell.velGrad=Matrix3(-0.1,0,0,0,0.05,0,0,0,0.05)
O.run()

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

Reply via email to