Exemple #1
0
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)
Exemple #2
0
]
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)
Exemple #3
0
    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()
Exemple #4
0
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()
Exemple #5
0
	#	(-.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()