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()
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()
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)
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")
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):
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)
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"))