import gts s1 = gts.read(open('horse.coarse.gts')) s2 = gts.Surface() s2.copy(s1) s2.translate(0.04, 0, 0) O.bodies.append( pack.gtsSurface2Facets(s1, color=(0, 1, 0)) + pack.gtsSurface2Facets(s2, color=(1, 0, 0))) s12 = gts.Surface() s12.copy(s1.union(s2)) s12.translate(0, 0, .1) radius = 0.002 O.bodies.append(pack.gtsSurface2Facets(s12, color=(0, 0, 1))) qt.View() from time import time t0 = time() O.bodies.append( pack.regularHexa(pack.inGtsSurface(s1) | pack.inGtsSurface(s2), radius, gap=0, color=(0, 1, 0))) t1 = time() print 'Using predicate union: %gs' % (t1 - t0) O.bodies.append( pack.regularHexa(pack.inGtsSurface(s12), radius, gap=0., color=(1, 0, 0))) t2 = time() print 'Using surface union: %gs' % (t2 - t1)
] for w in millPar[-2:]: w.shape.visible = False S.dem.par.addClumped(millPar, centralNode=centralNode) centralNode.dem.angVel = (-5, 0, 0) #print "Numer of grains",len(O.dem.par)-len(millIds) # S.dt=.9*woo.utils.pWaveDt() S.engines = woo.utils.defaultEngines(damping=.3) + [ woo.core.PyRunner(10, 'S.plot.addData(i=S.step,dt=S.dt,dynDt=S.lab.dyndt.dt)'), woo.dem.DynDt(stepPeriod=200, dryRun=False, label='dyndt', maxRelInc=1e-4) ] S.plot.plots = {'i': ('dt', 'dynDt')} S.saveTmp() try: from woo import qt v = qt.View() v.eyePosition = (3, .8, .96) v.upVector = (-.4, -.4, .8) v.viewDir = (-.9, -.25, -.3) v.axes = True v.sceneRadius = 1.9 except ImportError: pass #O.run(20000); O.wait() #utils.encodeVideoFromFrames(snapshooter['savedSnapshots'],out='/tmp/mill.ogg',fps=30)
utils.sphere([0,0,2],.5,color=(0,1,0)) ]) O.bodies[1].state['vel']=Vector3(0,0,-1) O.dt=utils.PWaveTimeStep() O.engines=[ ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()],label='isc'), InteractionLoop( [Ig2_Facet_Sphere_Dem3DofGeom(),Ig2_Sphere_Sphere_Dem3DofGeom()], [Ip2_FrictMat_FrictMat_FrictPhys()], [Law2_Dem3DofGeom_FrictPhys_CundallStrack()], ), GravityEngine(gravity=[0,0,-100]), NewtonIntegrator(damping=0) ] from woo import timing,qt,log try: renderer=qt.Renderer() renderer['Body_bounding_volume']=True qt.Controller(); qt.View() except ImportError: pass O.timingEnabled=True isc['sweepLength']=.1 isc['nBins']=5 #log.setLevel('InsertionSortCollider',log.DEBUG) O.saveTmp() O.step()
O.bodies[0].state.blockedDOFs='xyzXYZ' # small dt to see in realtime how it swings; real critical is higher, but much less than p-wave O.dt=.01*utils.PWaveTimeStep() O.engines=[ ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb()]), InteractionLoop([Ig2_Sphere_Sphere_L6Geom(distFactor=-1)],[Ip2_FrictMat_FrictMat_FrictPhys()],[Law2_L6Geom_FrictPhys_Linear(charLen=1)]), GravityEngine(gravity=(0,0,-9.81)), NewtonIntegrator(damping=0.1), ] O.saveTmp() try: from woo import qt v=qt.View(); v.axes=True v.viewDir=Vector3(-0.888,-0.2,-0.4144) v.eyePosition=Vector3(18.16,8.235,5.12) v.sceneRadius=7.5 v.upVector=Vector3(-0.46,0.3885,0.798) v.screenSize=(900,900) rr=qt.Renderer() rr.intrGeom=True Gl1_L6Geom.phiScale=30; Gl1_L3Geom.uScale=20 #O.engines=O.engines+[ # qt.SnapshotEngine(fileBase=O.tmpFilename(),label='snapper',iterPeriod=300,deadTimeout=20), # PyRunner(iterPeriod=330000,command='utils.makeVideo(snapper.snapshots,out="beam-l6geom.avi"); snapper.dead=True; O.pause()') #] except ImportError: pass O.run()
# (-.02,.1,.1),(-.02,-.1,.1),(-.02,-.1,-.1),(-.02,.1,-.1),(-.02,.1,.1), # go in square in the shear plane without changing normal deformation # (-1e-4,0,0) # back to the origin, but keep some overlap to not delete the interaction # ],pathSteps=[100],doneHook='tester.dead=True; O.pause()',label='tester',rotWeight=.2,idWeight=.2), NewtonIntegrator(), PyRunner(iterPeriod=1,command='addPlotData()'), ] def addPlotData(): i=O.interactions[0,1] plot.addData( un=tester.uTest[0],us1=tester.uTest[1],us2=tester.uTest[2], ung=tester.uGeom[0],us1g=tester.uGeom[1],us2g=tester.uGeom[2], phiX=tester.uTest[3],phiY=tester.uTest[4],phiZ=tester.uTest[5], phiXg=tester.uGeom[3],phiYg=tester.uGeom[4],phiZg=tester.uGeom[5], i=O.iter,Fs=i.phys.shearForce.norm(),Fn=i.phys.normalForce.norm(),Tx=O.forces.t(0)[0],Tyz=sqrt(O.forces.t(0)[1]**2+O.forces.t(0)[2]**2) ) plot.plots={'us1':('us2',),'Fn':('Fs',),'i':('un','us1','us2'),' i':('Fs','Fn','Tx','Tyz'),' i':('ung','us1g','us2g'),'i ':('phiX','phiXg','phiY','phiYg','phiZ','phiZg')} #'ung','us1g','us2g' plot.plot(subPlots=True) try: from woo import qt qt.Controller(); v=qt.View() rr=qt.Renderer() rr.extraDrawers=[GlExtra_LawTester()] rr.intrGeom=True except ImportError: pass O.dt=1 O.saveTmp() #O.run()