Beispiel #1
0
def initTest():
    global mode
    print "init"
    if O.iter > 0:
        O.wait()
        O.loadTmp('initial')
        print "Reversing plot data"
        plot.reverseData()
    else:
        plot.plot(subPlots=False)
    strainer.strainRate = abs(
        strainRateTension
    ) if mode == 'tension' else -abs(strainRateCompression)
    try:
        from yade import qt
        renderer = qt.Renderer()
        renderer.dispScale = (1000, 1000,
                              1000) if mode == 'tension' else (100, 100, 100)
    except ImportError:
        pass
    print "init done, will now run."
    O.step()
    # to create initial contacts
    # now reset the interaction radius and go ahead
    ss2sc.interactionDetectionFactor = 1.
    is2aabb.aabbEnlargeFactor = 1.

    O.run()
Beispiel #2
0
def initTest():
    global mode
    print "init"
    if O.iter > 0:
        O.wait()
        O.loadTmp('initial')
        print "Reversing plot data"
        plot.reverseData()
    maxStrainRate = Vector3(1, 1, 1)
    goal = Vector3(1, 1, 1)
    if not biaxial:  # uniaxial
        maxStrainRate[axis] = abs(
            strainRateTension) if mode == 'tension' else abs(
                strainRateCompression)
        maxStrainRate[ax1] = maxStrainRate[ax2] = 1000 * maxStrainRate[axis]
        goal[axis] = 1 if mode == 'tension' else -1
    else:
        maxStrainRate[axis] = abs(
            strainRateTension) if mode == 'tension' else abs(
                strainRateCompression)
        maxStrainRate[ax1] = maxStrainRate[axis]
        maxStrainRate[ax2] = 1000 * maxStrainRate[axis]
        goal[axis] = 1 if mode == 'tension' else -1
        goal[ax1] = goal[axis]
    strainer.maxStrainRate = maxStrainRate
    strainer.goal = goal
    try:
        from yade import qt
        renderer = qt.Renderer()
        renderer.scaleDisplacements = True
        renderer.displacementScale = (1000, 1000,
                                      1000) if mode == 'tension' else (100,
                                                                       100,
                                                                       100)
    except ImportError:
        pass
    print "init done, will now run."
    O.step()
    O.step()
    # to create initial contacts
    # now reset the interaction radius and go ahead
    ss2d3dg.distFactor = -1.
    is2aabb.aabbEnlargeFactor = -1.
    O.run()
Beispiel #3
0
                                             hbar=1,
                                             coefficient=potentialCoefficient,
                                             potentialMaximum=potentialMaximum)
potentialBody.state = QMStPotentialCoulomb(
    se3=[potentialCenter, Quaternion((1, 0, 0), 0)])
id_H = O.bodies.append(potentialBody)

## Define timestep for the calculations
#O.dt=.000001
O.dt = 2

## Save the scene to file, so that it can be loaded later. Supported extension are: .xml, .xml.gz, .xml.bz2.
O.save('/tmp/a.xml.bz2')
#o.run(100000); o.wait(); print o.iter/o.realtime,'iterations/sec'

try:
    from yade import qt
    qt.Controller()
    qt.controller.setWindowTitle("2D eigenwavefunction in Coulomb potential")
    qt.controller.setViewAxes(dir=(0, 1, 0), up=(0, 0, 1))
    qt.Renderer().blinkHighlight = False
    qt.View()
    qt.views()[0].center(False, 80)  # median=False, suggestedRadius = 5
    Gl1_QMGeometry().analyticUsesStepOfDiscrete = True
    Gl1_QMGeometry().analyticUsesScaleOfDiscrete = False
    O.bodies[id_H].shape.displayOptions[0].step = [2.0, 2.0, 2.0]
except ImportError:
    pass

#O.run(20000)
Beispiel #4
0
plot.plots={'un':('Fn',)}
plot.plot(noShow=False, subPlots=False)

def addPlotData():
	Fn = 0.
	for i in posIds:
		try:
			inter=O.interactions.withBody(i)[0]
			F = abs(inter.phys.normalForce[1])
		except:
			F = 0
		Fn += F
	un = O.bodies[O.bodies[posIds[0]].id].state.pos[1] - O.bodies[O.bodies[posIds[0]].id].state.refPos[1]
	if un > 0.10:
		O.pause()
	plot.addData( un=un*1000, Fn=Fn/1000 )


#### time step definition for simulation
## critical time step proposed by Bertrand
kn = 16115042 # stiffness of single wire from code
O.dt = 0.2*sqrt(particleMass/(2.*kn))


#### to see it
from yade import qt
v = qt.Controller()
v = qt.View()
rr = qt.Renderer()
rr.intrAllWire = True
    se3=[potentialCenter, Quaternion((1, 0, 0), 0)])
O.bodies.append(potentialBody)

## Define timestep for the calculations
#O.dt=.000001
O.dt = 100

## Save the scene to file, so that it can be loaded later. Supported extension are: .xml, .xml.gz, .xml.bz2.
#O.save('/tmp/a.xml.bz2');
#o.run(100000); o.wait(); print o.iter/o.realtime,'iterations/sec'

try:
    from yade import qt
    qt.Controller()
    qt.controller.setViewAxes(dir=(0, 1, 0), up=(0, 0, 1))
    qt.controller.setWindowTitle(sys.argv[0])
    qt.Renderer().blinkHighlight = False
    qt.View()
    qt.Renderer().light2Pos = [Pot_x, Pot_y, 30]
    qt.views()[0].center(False, 250)  # median=False, suggestedRadius = 5

except ImportError:
    pass

#O.dt=0.0000001
#for i in range(51):
#	O.step()
#	O.dt=200
#	if(i%5==0):
#		O.save(str(sys.argv[0])+"_"+str(O.iter)+".yade.gz")
Beispiel #6
0
nid = O.bodies.append(analyticBody)
O.bodies[nid].state.setAnalytic(
)  # is propagated as analytical solution - no calculations involved

#O.dt=200
O.dt = 0.0000001

#O.save('/tmp/a.xml.bz2');
#o.run(100000); o.wait(); print o.iter/o.realtime,'iterations/sec'

try:
    from yade import qt
    qt.Controller()
    qt.controller.setViewAxes(dir=(0, 1, 0), up=(0, 0, 1))
    qt.controller.setWindowTitle(sys.argv[0])
    qt.Renderer().blinkHighlight = False
    qt.Renderer().light1Pos = Vector3(1175, 1130, 500)
    qt.Renderer().light2Pos = Vector3(-1130, 575, 230)
    qt.View()
    #qt.Renderer().light2Pos=Vector3(Pot_x,Pot_y,30)
    qt.views()[0].center(False,
                         size1d * 1.5)  # median=False, suggestedRadius = 5

except ImportError:
    pass

#
#for i in range(81):
#	O.step()
#	O.dt=100
#	if(i%5==0):
Beispiel #7
0
	def screenshotEngine(self):
		self.scrNum += 1
		intro = "Test '"+self.name+"', stage:"+str(self.scrNum)+" iter:"+str(O.iter)
		if(self.scrNum == 1):
			self.makeNextScreenshot();
			print(intro+" moving yade.qt.Controller()")
			yade.qt.Controller()
			yade.qt.controller.setWindowTitle('GUI test: '+self.name)
			yade.qt.controller.setGeometry(550,20,500,1100)
		if(self.scrNum == 2):
			self.makeNextScreenshot();
			print(intro+" opening yade.qt.View()")
			yade.qt.View();
			vv=yade.qt.views()[0]
			vv.axes=True
			vv.eyePosition=(2.8717367257539266,-3.2498802823394684,11.986065750108025)
			vv.upVector  =(-0.786154130840315,-0.2651054185084529,0.558283798475441)
			vv.center()
		if(self.scrNum == 3):
			self.makeNextScreenshot();
			print(intro+" opening yade.qt.Inspector() , setting wire=True, setting intrGeom=True")
			self.clickOnScreen(982,60)
			success=False
			for attempt in range(0,20):
				try:
					yade.qt.controller.inspector.setGeometry(1050,20,500,1100)
					success=True
				except:
					print("waiting for Inspector window to open after mouse click.")
					time.sleep(0.25)
			if(not success):
				self.createEmptyFile("screenshots/mouse_click_the_Inspector_open_FAILED_"+self.name)
				print("*** ERROR: self.clickOnScreen failed to open Inspector window ***")
				self.finish();
			yade.qt.controller.inspector.show()
			qt.Renderer().wire=True
			qt.Renderer().intrGeom=True
		if(self.scrNum == 4):
			self.makeNextScreenshot();
			print(intro+" changing tab to bodies, setting intrPhys=True, setting bound=True")
			self.clickOnScreen(1148,26)
			#Previously these were used. They work, but do not always trigger crashes.
			# yade.qt.controller.inspector.close()
			# yade.qt.controller.inspector.setGeometry(1050,20,500,1100)
			# yade.qt.controller.inspector.tabWidget.setCurrentIndex(2)
			# yade.qt.controller.inspector.show()
			qt.Renderer().intrPhys=True
			qt.Renderer().bound=True
		if(self.scrNum == 5):
			self.makeNextScreenshot();
			print(intro+" clicking on interaction, setting wire=False, setting intrWire=True")
			self.clickOnScreen(1494,55)
			qt.Renderer().wire=False
			qt.Renderer().intrWire=True
		if(self.scrNum == 6):
			self.makeNextScreenshot();
			print(intro+" changing tab to interactions, setting wire=False, setting intrWire=True")
			self.clickOnScreen(1234,26)
			qt.Renderer().wire=False
			qt.Renderer().intrWire=True
		if(self.scrNum == 7):
			self.makeNextScreenshot();
			print(intro+" changing tab to cell, setting intrPhys=False")
			self.clickOnScreen(1312,26)
			qt.Renderer().intrPhys=False
		if(self.scrNum == 8):
			self.makeNextScreenshot();
			print(intro+" changing tab to bodies, setting intrWire=False, setting intrGeom=False, setting intrPhys=True")
			self.clickOnScreen(1148,26)
			qt.Renderer().intrWire=False
			qt.Renderer().intrGeom=False
			qt.Renderer().intrPhys=True
		if(self.scrNum == 9):
			self.makeNextScreenshot();
			print(intro+" changing tab to display, setting intrAllWire=True")
			self.clickOnScreen(668,26)
			#yade.qt.controller.setTabActive('display')
			qt.Renderer().intrAllWire=True
		if(self.scrNum == 10):
			self.makeNextScreenshot();
			print(intro+" changing tab to generator, setting intrGeom=True")
			self.clickOnScreen(744,26)
			#yade.qt.controller.setTabActive('generator')
			qt.Renderer().intrGeom=True
		if(self.scrNum == 11):
			self.makeNextScreenshot();
			print(intro+" changing tab to python, setting intrAllWire=False")
			self.clickOnScreen(821,26)
			#yade.qt.controller.setTabActive('python')
			qt.Renderer().intrAllWire=False
		if(self.scrNum == 12):
			self.makeNextScreenshot();
			print(intro+" changing tab to simulation")
			self.clickOnScreen(580,26)
			#yade.qt.controller.setTabActive('simulation')
		if(self.scrNum == 13):
			print(intro+" (testing of matplotlib is skipped for now...)")
			self.makeNextScreenshot();
			# FIXME: I couldn't get matplotlib to draw the plot, while screenshotting is going on.
			# self.makeNextScreenshot();
			# O.pause()
			# print(intro+" opening yade.plot.plot()")
			# plot.liveInterval=0
			# plot.plot(subPlots=False)
			# fig=yade.plot.plot();
			# time.sleep(5)
			# matplotlib.pyplot.draw()
			# time.sleep(5)
			# self.makeNextScreenshot();
			# matplotlib.pyplot.close(fig)
		if(self.scrNum == 14):
			self.makeNextScreenshot();
			print(intro+" exiting\n\n")
			O.pause()
			vv=yade.qt.views()[0]
			vv.close()
			yade.qt.controller.inspector.close()
			yade.qt.controller.close()
			self.finish()
                      printDebugInfo)
    psiDiff.zeroRange([2 * halfSize1d - dampMarginBandMax - 2],
                      [2 * halfSize1d], False, printDebugInfo)
    plot.addData(t=O.time, error=(psiDiff | psiDiff).real)


plot.liveInterval = .2
plot.plot(subPlots=False)

try:
    from yade import qt
    qt.View()
    qt.Controller()
    qt.controller.setWindowTitle("1D free prop. of gaussian packet")
    qt.controller.setViewAxes(dir=(0, 1, 0), up=(0, 0, 1))
    qt.Renderer().blinkHighlight = False
    qt.Renderer().extraDrawers = [
        GlExtra_QMEngine(drawDTable=True,
                         dampColor=Vector3(1, 1, 1),
                         dampDisplayOptions=QMDisplayOptions(
                             partsScale=dampDrawScale,
                             renderSe3=(Vector3(0, 0,
                                                0), Quaternion((1, 0, 0), 0)),
                             **displayOptionsDamp))
    ]
    qt.views()[0].center(False, 5)  # median=False, suggestedRadius = 5
except ImportError:
    pass

#O.run(20000)
                 population=population.real)  #, pim=population.imag )


def savePlotData():
    plot.saveDataTxt('dt=' + str(O.dt) + '_gaussWidth=' + str(gaussWidth) +
                     '_cols_' + str(potentialColumnX) + '_' +
                     str(potentialColumnVal) + '.txt')


plot.liveInterval = .2
plot.plot(subPlots=False)

try:
    from yade import qt
    qt.Controller()
    qt.Renderer().blinkHighlight = False
    qt.Renderer().bgColor = Vector3(0, 0, 0)
    qt.Renderer().extraDrawers = [
        GlExtra_QMEngine(drawDTable=True,
                         dampColor=Vector3(1, 1, 1),
                         dampDisplayOptions=QMDisplayOptions(
                             partsScale=10,
                             renderSe3=(Vector3(0, 0,
                                                0), Quaternion((1, 0, 0), 0)),
                             **displayOptionsDamp))
    ]
    Gl1_QMGeometry().analyticUsesScaleOfDiscrete = False
    #Gl1_QMGeometry().analyticUsesStepOfDiscrete=False
    qt.View()
    #qt.controller.setWindowTitle("Packet inside a 1D well")
    qt.controller.setWindowTitle('dt=' + str(O.dt) + '_gaussWidth=' +
## 2. i as function of t on left y-axis ('|||' makes the separation) and z_sph, v_sph (as green circles connected with line) and z_sph_half again as function of t
plot.plots = {'t': ('error')}


def myAddPlotData():
    symId = 0
    numId = 1
    O.bodies[symId].state.update()
    psiDiff = ((O.bodies[symId].state) - (O.bodies[numId].state))
    plot.addData(t=O.time, error=(psiDiff | psiDiff).real)


plot.liveInterval = .2
plot.plot(subPlots=False)

try:
    from yade import qt
    qt.Renderer().blinkHighlight = False
    qt.View()
    qt.Controller()
    qt.controller.setWindowTitle("1D eigenwavefunction in Coulomb potential")
    qt.controller.setViewAxes(dir=(0, 1, 0), up=(0, 0, 1))
    qt.views()[0].center(False, 10)  # median=False, suggestedRadius = 5
    Gl1_QMGeometry().analyticUsesStepOfDiscrete = True
    Gl1_QMGeometry().analyticUsesScaleOfDiscrete = False
    qt.Renderer().bgColor = Vector3(1, 1, 1)
except ImportError:
    pass

#O.run(20000)
Beispiel #11
0
                     rGrid,
                     wire=True,
                     fixed=True,
                     material='iMat',
                     color=[0., 0., 1.]))
        id1 = O.bodies.append(
            gridNode(pos1,
                     rGrid,
                     wire=True,
                     fixed=True,
                     material='iMat',
                     color=[0., 0., 1.]))
        O.bodies.append(
            gridConnection(id0,
                           id1,
                           rGrid,
                           wire=True,
                           material='walMat',
                           color=[0., 0., 1.]))

# initial run for contact between top nodes and membrane body (change this when mesh changes)
while 1:
    O.run(100, True)
    #~ if O.forces.f(4*int(mshName[-1])).norm() > 1e-2:
    if O.forces.f(75).norm() > 1e-2:
        break

# save exterior DE scene
qt.Renderer().bgColor = color
O.save('DE_ext_' + mshName + '_' + str(int(degrees(phi_m2i))) + '.yade.gz')
    dim=dimensions, hbar=1, coefficient=potentialCoefficient_3)
potentialBody.state = QMStPotentialCoulomb(
    se3=[potentialCenter, Quaternion((1, 0, 0), 0)])
O.bodies.append(potentialBody)

O.dt = 5

O.save('/tmp/a.xml.bz2')
#o.run(100000); o.wait(); print o.iter/o.realtime,'iterations/sec'

try:
    from yade import qt
    qt.Controller()
    qt.controller.setViewAxes(dir=(0, 1, 0), up=(0, 0, 1))
    qt.controller.setWindowTitle(sys.argv[0])
    qt.Renderer().blinkHighlight = False
    qt.View()
    #qt.Renderer().light2Pos=[Pot_x,Pot_y,30]
    qt.Renderer().light1Pos = [1175, 1130, 500]
    qt.Renderer().light2Pos = [-1130, 575, 230]
    qt.views()[0].center(False,
                         size1d * 1.5)  # median=False, suggestedRadius = 5

except ImportError:
    pass

#for i in range(100):
#	O.step()
#	if(i%5==0):
#		O.save(str(str(sys.argv[0])+"_"+str(i)+".yade.bz2"))