yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #07356
[Question #226679]: Clump with wall
New question #226679 on Yade:
https://answers.launchpad.net/yade/+question/226679
Dear Sir,
I have now some Problems with Clump. I will try Box-Experiment with Clump and write the Code. But the Programme stop and warnt NameError: name 'makeClumpTemplate' is not defined. Can anyone help me. Thank you.
from yade import utils
from numpy import linspace
from numpy import arange
import gts
import itertools
from yade import pack
rMean=.0096
rRelFuzz=.0016
maxLoad=4500
frictionAngleSt=radians(35)
frictionAngleBo=radians(23.5)
a=0.05
spheremat=O.materials.append(FrictMat(density=2650,young=210e6,poisson=0.3,frictionAngle=frictionAngleBo))
id_Mat=O.materials.append(FrictMat(density=2650,young=175e6,poisson=0.3,frictionAngle=frictionAngleBo))
Mat=O.materials[id_Mat]
steel=O.materials.append(FrictMat(young=210e9, poisson=.25,frictionAngle=frictionAngleSt,density=8000))
from yade import pack, plot,qt
sp=pack.SpherePack()
sp.makeCloud((0.005,0.005,0),(0.3,0.3,0.30),rMean=.0096,rRelFuzz=.0016,periodic=False)
O.bodies.append([sphere(a,r,material=Mat) for a,r in sp])
print len(sp),' particles generated.'
fIDSI=O.bodies.append(utils.geom.facetBox((.15,.15,.135),(.15,.15,.045),wallMask=15,material=steel))
fIDSII=O.bodies.append(utils.geom.facetBox((.15,.15,.045),(.15,.15,.045),wallMask=31,material=steel))
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb(),Bo1_Wall_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom(),Ig2_Wall_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys()],
[Law2_ScGeom_FrictPhys_CundallStrack()]
),
NewtonIntegrator(damping=0.7,gravity=[0,0,-9.810]),
#qt.SnapshotEngine(iterPeriod=60000,fileBase='/home/wuxin/Desktop/Clump/78Fr07-',label='snapshooter'),
PyRunner(command='checkUnbalanced()',iterPeriod=1,label='checker'),
TranslationEngine(translationAxis=[1,0,0],velocity=0,ids=fIDSI,label='Transl'),
]
O.dt=.25*utils.PWaveTimeStep()
def makeClumpTemplate():
relRadList1 = [.007,.0036]
relPosList1 = [[0,0,0],[0.0075,0,0]]
relRadList2 = [.0036,0.007,.0036]
relPosList2 = [[0.0060,0,0],[0,0,0],[-0.0060,0,0]]
templates= []
templates.append(clumpTemplate(relRadii=relRadList1,relPositions=relPosList1))
templates.append(clumpTemplate(relRadii=relRadList2,relPositions=relPosList2))
O.bodies.replaceByClumps(templates,[.1,.15])
def checkUnbalanced():
if O.iter==600: checker.command='makeClumpTemplate()'
if O.iter<500: return
fIDSIII=O.bodies.append(utils.wall(max([b.state.pos[2]+b.shape.radius+0.020 for b in O.bodies if isinstance(b.shape,Sphere)]),axis=2,sense=-1,material=Mat))
global plate
plate=O.bodies[fIDSIII]
plate.state.vel=(0,0,-.025)
O.engines=O.engines+[PyRunner(command='addPlotData()',iterPeriod=1000)]
if abs(O.forces.f(plate.id)[2])>=maxLoad:
Fzs=O.forces.f(plate.id)[2]
if Fzs==0:
Fzs=0.000000000000001
G
KN
KN=0.000000000000000001
for i in plate.intrs():
KN=KN+i.phys.kn
G=a/(KN*(O.dt))
plate.state.vel[2]=(G*(Fzs-maxLoad))
for b in O.bodies:
if isinstance(b.shape,Sphere):
b.state.angVel[1]=0
if abs(O.forces.f(plate.id)[2])>(maxLoad-1):
if abs(O.forces.f(plate.id)[2])<(maxLoad+1):
Transl.velocity=0.0010
def addPlotData():
Fz=O.forces.f(plate.id)[2]
F = 0
global i
for i in fIDSI:
F += O.forces.f(i)[0]
PX1=(O.bodies[i].state.pos[0]-O.bodies[i].state.refPos[0])
SF=((0.30-PX1)*0.30)
plot.addData(t=O.time,Fx=(-F/SF),PX=PX1,Fz=Fz,w=plate.state.pos[2]-plate.state.refPos[2],i=O.iter)
if (O.bodies[i].state.pos[0]-O.bodies[i].state.refPos[0])>0.050:
plot.saveDataTxt('175e6p03RW235.txt',vars=('i','PX','Fx','w','Fz'))
O.pause()
plot.plots={'i':('w','Fz',),'PX':('Fx',)}
plot.plot()
qt.Controller()
qt.View()
r=qt.Renderer()
O.run()
utils.waitIfBatch()
--
You received this question notification because you are a member of
yade-users, which is an answer contact for Yade.