Question #656538 on Yade changed: https://answers.launchpad.net/yade/+question/656538
Status: Answered => Open wise dan is still having a problem: hi, I hope you are well, you helped me with the code below : now I got a little problem, when I run it the middle ( the trapdoor does not drop) can you please help me modify it, such the the trapdoor moves at a rate of 1.0mm per min for 100mm( thus after deposition) ########################################################################## rom yade import pack from math import * from yade import plot from yade import qt gravity = 100 #box dimensions widthl = .3 widthr = .3 widthc = .3 height = .3 thick = .1 deep = -.2 #size of grains sizeMin = 40e-3 sizeMax = 60e-3 frictionAngle = .5 young = 1e8 #stiffness poisson = 10 dt = 1e-3 #time step nGravityDeposition = 250 #how long to run initial gravity deposition nCycles = 3 #how many jumps to run afterwards nStepsBetweenCycles = 200 #number of times steps between jumps dspl = 20e-3 #how much larger the initial make cloud box should be fillBoxHFactor = 3 from yade import polyhedra_utils width = widthl + widthc + widthr #mat mat = PolyhedraMat(young=young,poisson=10,frictionAngle=frictionAngle) O.materials.append(mat) def computeSurfaceDisplacement(): vertices = [] for b in O.bodies: if not isinstance(b.shape,Polyhedra): continue pos = b.state.pos ori = b.state.ori vs = b.shape.v vs = [pos + ori*v for v in vs] vertices.extend(vs) maxZ = max(v[2] for v in vertices) return maxZ def plotAddData(): sd = computeSurfaceDisplacement() plot.addData( i = O.iter, tDspl = O.bodies[1].state.displ().norm(), fLeft = sum(O.forces.f(id)[2] for id in (2,3)), fRight = sum(O.forces.f(id)[2] for id in (4,5)), surfDspl = sd, ) #plot.plots = {'i ':'fRight'} #plot.plots = {'i ':'fRight'} plot.plots = {'i ':'surfDspl'} #plot.plots = {'i':'tDspl'} #plot.plots = {'i':'surfDspl','i':'fLeft','i':'tDspl'} ################################# #engines O.engines=[ ForceResetter(), InsertionSortCollider([Bo1_Polyhedra_Aabb(),Bo1_Facet_Aabb()]), InteractionLoop( [Ig2_Polyhedra_Polyhedra_PolyhedraGeom(), Ig2_Facet_Polyhedra_PolyhedraGeom()], [Ip2_PolyhedraMat_PolyhedraMat_PolyhedraPhys()], [Law2_PolyhedraGeom_PolyhedraPhys_Volumetric()], ), NewtonIntegrator(damping=0.4,gravity=(0,0,-gravity)), #commnet out the original PyRunner, replace with new one #PyRunner(iterPeriod=1,command='checker()'), PyRunner(iterPeriod = 10,command='plotAddData()'), ] O.dt = dt def moveBottom(): v = dspl / O.dt for b in movables: b.state.vel = (0,0,-v) def stopBottom(): for b in movables: b.state.vel = (0,0,0) def checker(): for i in range(nCycles): ii = nGravityDeposition+i*nStepsBetweenCycles if O.iter == ii: moveBottom() if O.iter == ii+1: stopBottom() if O.iter == nGravityDeposition+nCycles*nStepsBetweenCycles: O.pause() # box p000 = Vector3(0,0,0) p100 = Vector3(widthl,0,0) p200 = Vector3(widthl+widthc,0,0) p300 = Vector3(widthl+widthc+widthr,0,0) pxs = (p000,p100,p200,p300) p001,p101,p201,p301 = [p+Vector3(0,0,height) for p in pxs] p010,p110,p210,p310 = [p+Vector3(0,thick,0) for p in pxs] p011,p111,p211,p311 = [p+Vector3(0,thick,height) for p in pxs] p00b,p10b,p20b,p30b = [p+Vector3(0,0,deep) for p in pxs] p01b,p11b,p21b,p31b = [p+Vector3(0,thick,deep) for p in pxs] def rect(vs,**kw): v1,v2,v3,v4 = vs return [ facet((v1,v2,v3),**kw), facet((v1,v3,v4),**kw), ] movables = rect((p100,p200,p210,p110)) # bottom center rects = ( (p000,p100,p110,p010), # bottom left (p200,p300,p310,p210), # bottom left (p000,p010,p011,p001), # left (p300,p310,p311,p301), # right (p000,p100,p101,p001), # front left (p100,p200,p201,p101), # front center (p200,p300,p301,p201), # front right (p010,p110,p111,p011), # back left (p110,p210,p211,p111), # back center (p210,p310,p311,p211), # back right (p100,p200,p20b,p10b), # front center below (p110,p210,p21b,p11b), # back center below (p100,p110,p11b,p10b), # left below (p200,p210,p21b,p20b), # right below ) rects = movables + sum((rect(r) for r in rects),[]) O.bodies.append(rects) # gravel polyhedra_utils.fillBox((0,0,0),(width,thick,fillBoxHFactor*height),mat,sizemin=3*[sizeMin],sizemax=3*[sizeMax],seed=1) ########### -- 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