New question #676672 on Yade: https://answers.launchpad.net/yade/+question/676672
I am trying to setup a double set of loose packing on on top of the other as prelimnary condition for simulations. Os I have made a first program to make the fixed first packing and save the xyzr coodinates thne generate a second one on top which fall down on the first one without ny problem ... but the command plot.saveDataTxt generate an error message "list index out of range" i don't understand why? %%%%%%%%%%%%%%%%%% here the output of the code : Running script gravity-2-3rd-step-2packs.py len-load-O.bodies = 7649 len-O.bodies = 7649 nombre_moving= 282 len-tot-O.bodies = 7931 then part of my code : %%%%%%%%%%%%%%%%%%%%%%%%% O.load("1st-step.yade") print "len-load-O.bodies = ",len(O.bodies) O.materials[0].frictionAngle=radians(15.0) sp=pack.SpherePack() for c,r in sp: O.bodies.append(sphere(c,r,fixed=True)) O.bodies[0].mask = 0b01 # 1 num_small = len(O.bodies) print "len-O.bodies = ",num_small sp.toSimulation() nombre_moving = int(cover_pack_fraction*(box_size*box_size)/(ratio*rayon*ratio*rayon*3.14159) ) print "nombre_moving=", nombre_moving # generate randomly spheres with uniform radius distribution sp.makeCloud((0,0,2.2*rayon),(box_size,box_size,(3.2+.2)*rayon*ratio),rMean=rayon*ratio,rRelFuzz=.005*ratio,num= nombre_moving) for c,r in sp: if O.bodies[0].mask == 0b01: continue # 1 O.bodies[0].mask == 0b10 # 2 # add the sphere pack to the simulation sp.toSimulation() num_tot = len(O.bodies) print "len-tot-O.bodies = ",num_tot collider.avoidSelfInteractionMask = 0b10 # simulation loop O.engines=[ ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]), InteractionLoop( # handle sphere+sphere and facet+sphere collisions [Ig2_Sphere_Sphere_L3Geom(),Ig2_Facet_Sphere_L3Geom()], [Ip2_FrictMat_FrictMat_FrictPhys(frictAngle=0.0)], [Law2_L3Geom_FrictPhys_ElPerfPl()] ), # GravityEngine(gravity=(0,0,-9.81)), # NewtonIntegrator(damping=0.4), # NewtonIntegrator(damping=0.4,gravity=(0,-gravity_y,-gravity_z),label='Newton_integrator'), # call the checkUnbalanced function (defined below) every 2 seconds PyRunner(command='checkUnbalanced()',realPeriod=2,label='checker'), ] #without friction O.materials[0].frictionAngle=0 # timesteps O.dt=.5*utils.PWaveTimeStep() # enable energy tracking; any simulation parts supporting it # can create and update arbitrary energy types, which can be # accessed as O.energy['energyName'] subsequently O.trackEnergy=True def checkUnbalanced(): global converg_min,iter_max,step1 # if step1>0: PyRunner(command='add_moving_sphere()') if utils.unbalancedForce()<converg_min: O.pause() plot.saveDataTxt('bbb.txt.bz2') -- 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