def xyplot_history(self, s, x, y): """ Display curves of theoretical and computed results in a new viewport x='Reaction force: RF1 at Node 58 in NSET SET-NODE-BOTTOM' y='Spatial displacement: U1 at Node 574 in NSET SET-NODE-MIDDLE' """ sName = self.myOdbDat.steps.keys()[s] x1 = xyPlot.XYDataFromHistory( odb=self.myOdbDat, outputVariableName=x, steps=(sName, ), ) y1 = xyPlot.XYDataFromHistory( odb=self.myOdbDat, outputVariableName=y, steps=(sName, ), ) xy1 = xyPlot.combine(x1, y1) # xy3.setValues(sourceDescription='combine ( "XYData-strain","XYData-stress" )') # session.xyDataObjects.changeKey(xy3.name, 'XYData-stress-strain') c1 = session.Curve(xyData=xy1) self.chart.setValues(curvesToPlot=(c1, ), ) self.myVp.setValues(displayedObject=self.xyp) chartName = self.xyp.charts.keys()[0] self.chart = self.xyp.charts[chartName] self.chart.axes1[0].labelStyle.setValues( font='-*-verdana-medium-r-normal-*-*-240-*-*-p-*-*-*') self.chart.axes1[0].titleStyle.setValues( font='-*-arial-medium-r-normal-*-*-240-*-*-p-*-*-*') self.chart.axes2[0].titleStyle.setValues( font='-*-arial-medium-r-normal-*-*-240-*-*-p-*-*-*') self.chart.axes2[0].labelStyle.setValues( font='-*-verdana-medium-r-normal-*-*-240-*-*-p-*-*-*') #session.printOptions.setValues(vpDecorations=OFF, reduceColors=False) path_filename = '%s_XYplot_step-%s_x-%s_y-%s.png' % \ (self.myOdbDat.name.replace('.odb',''), sName, x.split(':')[1].split(' ')[1], y.split(':')[1].split(' ')[1] ) print(path_filename) # fname = self.myOdbDat.name.replace('.odb','')+'_XYplot_step-'+sName+'_'+x.split(':')[1].split(' ')[1]+'_'+y.split(':')[1].split(' ')[1]+'.png' #session.printToFile(fileName=fname, format=PNG, canvasObjects=(self.myVp, )) self.myVp.setValues(height=250, width=350) self.simple_png_save(path_filename) path_filename = path_filename.replace('png', 'avi') session.animationController.setValues(animationType=TIME_HISTORY, viewports=(self.myVp.name, )) session.animationController.animationOptions.setValues( xyShowSymbol=True, xySymbolSize=LARGE) session.animationController.play(duration=UNLIMITED) self.simple_avi_save(path_filename)
def xyUcolTop(modelName, column): ''' Prints U2 at top of removed column in APM. modelName = name of odb column = name of column that is removed in APM printFormat = TIFF, PS, EPS, PNG, SVG stepName = name of a step that exist in the model ''' #Open ODB odb = func.open_odb(modelName) #Find correct node number and name of column nodeSet = odb.rootAssembly.instances['FRAME-1'].nodeSets['COLTOP'] nodeNr = nodeSet.nodes[0].label u1Name ='Spatial displacement: U1 PI: FRAME-1 Node '+str(nodeNr)+\ ' in NSET COLTOP' u2Name ='Spatial displacement: U2 PI: FRAME-1 Node '+str(nodeNr)+\ ' in NSET COLTOP' u3Name ='Spatial displacement: U3 PI: FRAME-1 Node '+str(nodeNr)+\ ' in NSET COLTOP' #Create XY-curve xyU1colTop = xyPlot.XYDataFromHistory(odb=odb, outputVariableName=u1Name, suppressQuery=True, name='U1colTop') xyU2colTop = xyPlot.XYDataFromHistory(odb=odb, outputVariableName=u2Name, suppressQuery=True, name='U2colTop') xyU3colTop = xyPlot.XYDataFromHistory(odb=odb, outputVariableName=u3Name, suppressQuery=True, name='U3colTop') #Plot func.XYplot(modelName, plotName='U1colTop', xHead='Time [s]', yHead='Displacement [mm]', xyDat=xyU1colTop) func.XYplot(modelName, plotName='U2colTop', xHead='Time [s]', yHead='Displacement [mm]', xyDat=xyU2colTop) func.XYplot(modelName, plotName='U3colTop', xHead='Time [s]', yHead='Displacement [mm]', xyDat=xyU3colTop)
def xplot_history(self, s, x): """plots the historys based on a list x = 'Reaction force: RF1 at Node 58 in NSET SET-NODE-BOTTOM' Building the input from info from the odb """ sName = self.myOdbDat.steps.keys()[s] xy1 = xyPlot.XYDataFromHistory( odb=self.myOdbDat, outputVariableName=x, steps=(sName, ), ) xy1 = butterworthFilter(xyData=xy1, cutoffFrequency=0.1) c1 = session.Curve(xyData=xy1) self.chart.setValues(curvesToPlot=(c1, ), ) self.myVp.setValues(displayedObject=self.xyp) chartName = self.xyp.charts.keys()[0] self.chart = self.xyp.charts[chartName] path_filename = '%s_Xplot_step-%s_x-%s.png' % \ (self.myOdbDat.name.replace('.odb',''), sName, x.split(':')[1].split(' ')[1]) print(path_filename) # fname = self.myOdbDat.name.replace('.odb','')+'_Xplot_step-'+sName+'_'+x.split(':')[1].split(' ')[1]+'.png' #session.printToFile(fileName=fname, format=PNG, canvasObjects=(self.myVp, )) self.myVp.setValues(height=250, width=350) try: session.printToFile(path_filename, PNG, (self.myVp, )) print('%s saved' % path_filename) except: print('failed to save %s' % path_filename)
def viewPlot(plot): import section import regionToolset import displayGroupMdbToolset as dgm import part import material import assembly import step import interaction import load import mesh import optimization import job import sketch import visualization import xyPlot import displayGroupOdbToolset as dgo import connectorBehavior odb = session.odbs['E:/Abaqus/za duze/explosive_3D_DT_Air_H30_H03-ALE.odb'] xy1 = xyPlot.XYDataFromHistory(odb=odb, outputVariableName=plot, suppressQuery=True, __linkedVpName__='Viewport: 1') c1 = session.Curve(xyData=xy1) xyp = session.xyPlots['XYPlot-1'] chartName = xyp.charts.keys()[0] chart = xyp.charts[chartName] chart.setValues(curvesToPlot=(c1, ), ) session.viewports['Viewport: 1'].setValues(displayedObject=xyp)
def xyCenterU2_colBaseR2(modelName, x, z): odb = func.open_odb(modelName) #=========== R2 at column base ============# xyR2 = xyR2colBase(modelName, x, z) #=========== U2 at center slab ============# xyU2 = xyPlot.XYDataFromHistory( odb=odb, outputVariableName= 'Spatial displacement: U2 PI: SLAB-1 Node 25 in NSET CENTERSLAB', ) func.XYplot(modelName, plotName='U2centerSlab', xHead='Time [s]', yHead='Displacement [mm]', xyDat=xyU2) #=========== Force-Displacement ============# xyRD = combine(-xyU2, xyR2) func.XYplot(modelName, plotName='forceDisp', xHead='Displacement [mm]', yHead='Force [N]', xyDat=xyRD)
def viewPlot2(plot, odbName): import section import regionToolset import displayGroupMdbToolset as dgm import part import material import assembly import step import interaction import load import mesh import optimization import job import sketch import visualization import xyPlot import displayGroupOdbToolset as dgo import connectorBehavior o7 = session.odbs[odbName] session.viewports['Viewport: 1'].setValues(displayedObject=o7) odb = session.odbs[odbName] xy1 = xyPlot.XYDataFromHistory(odb=odb, outputVariableName=plot, suppressQuery=True, __linkedVpName__='Viewport: 1') c1 = session.Curve(xyData=xy1) xyp = session.XYPlot('XYPlot-1') chartName = xyp.charts.keys()[0] chart = xyp.charts[chartName] chart.setValues(curvesToPlot=(c1, ), ) session.viewports['Viewport: 1'].setValues(displayedObject=xyp) session.mdbData.summary()
def xyR2colBase(modelName, x, z): odb = func.open_odb(modelName) steps = tuple(odb.steps.keys()) lst = [] nodeLst = [] for node in odb.rootAssembly.instances['FRAME-1'].nodeSets['COLBOT'].nodes: nodeLst.append(node.label) for nodeNr in nodeLst: varName='Reaction force: RF2 PI: FRAME-1 Node '+str(nodeNr)+\ ' in NSET COLBOT' lst.append( xyPlot.XYDataFromHistory( odb=odb, outputVariableName=varName, steps=steps, )) tpl = tuple(lst) xyR2 = sum(tpl) func.XYplot(modelName, plotName='R2colBase', xHead='Time [s]', yHead='Force [N]', xyDat=xyR2) return xyR2
def Eigenvalues(): import section import regionToolset import displayGroupMdbToolset as dgm import part import material import assembly import step import interaction import load import mesh import optimization import job import sketch import visualization import xyPlot import displayGroupOdbToolset as dgo import connectorBehavior odb = session.odbs['C:/temp/Job-2.odb'] xy1 = xyPlot.XYDataFromHistory(odb=odb, outputVariableName='Eigenvalue: EIGVAL for Whole Model', suppressQuery=True, __linkedVpName__='Viewport: 1') c1 = session.Curve(xyData=xy1) xyp = session.xyPlots['XYPlot-1'] chartName = xyp.charts.keys()[0] chart = xyp.charts[chartName] chart.setValues(curvesToPlot=(c1, ), ) session.viewports['Viewport: 1'].setValues(displayedObject=xyp)
def xyForceDisp(modelName, x, z): odb = func.open_odb(modelName) #=========== R2 at column base ============# #Create xy data for each col base alph = map(chr, range(65, 65 + x)) #Start at 97 for lower case letters numb = map(str, range(1, z + 1)) count = 0 lst = [] for a in alph: for n in numb: count = count + 1 inst = 'COLUMN_' + a + n + "-1" name = 'Reaction force: RF2 PI: ' + inst + ' Node 1' lst.append( xyPlot.XYDataFromHistory(odb=odb, outputVariableName=name)) tpl = tuple(lst) #Compine all to one xyData xyR2 = sum(tpl) #Plot func.XYplot(modelName, plotName='R2colBase', xHead='Time [s]', yHead='Force [N]', xyDat=xyR2) #=========== U2 at center slab ============# xyU2 = xyPlot.XYDataFromHistory( odb=odb, outputVariableName= 'Spatial displacement: U2 PI: SLAB_A1-1 Node 61 in NSET CENTERSLAB', name='xyU2') func.XYplot(modelName, plotName='U2centerSlab', xHead='Time [s]', yHead='Displacement [mm]', xyDat=xyU2) #=========== Force-Displacement ============# xyRD = combine(-xyU2, xyR2) func.XYplot(modelName, plotName='forceDisp', xHead='Displacement [mm]', yHead='Force [N]', xyDat=xyRD)
def xyEnergyPlot(modelName): ''' Prints External work, internal energy and kinetic energy for whole model modelName = name of odb ''' #Open ODB odb = open_odb(modelName) #Internal Work xyIW = xyPlot.XYDataFromHistory(odb=odb, outputVariableName='Internal energy: ALLIE for Whole Model', suppressQuery=True, name='xyIW') XYplot(modelName, plotName='InternalWork', xHead='Time [s]', yHead='Work [mJ]', xyDat=xyIW) #Kinetic Energy xyKE = xyPlot.XYDataFromHistory(odb=odb, outputVariableName='Kinetic energy: ALLKE for Whole Model', suppressQuery=True, name='xyKE') XYplot(modelName, plotName='KineticEnergy', xHead='Time [s]', yHead='Work [mJ]', xyDat=xyKE)
def xyColBaseR2(modelName, x, z): odb = func.open_odb(modelName) #=========== Get xy data for each colBot ============# alph = map(chr, range(65, 65 + x)) #Start at 97 for lower case letters numb = map(str, range(1, z + 1)) count = 0 lst = [] for a in alph: for n in numb: count = count + 1 inst = 'COLUMN_' + a + n + "-1" name = 'Reaction force: RF2 PI: ' + inst + ' Node 1' lst.append( xyPlot.XYDataFromHistory(odb=odb, name='R2colBot-' + a + n, outputVariableName=name)) #=========== Individual columns ============# for col in lst: func.XYplot( modelName, plotName=col.name[1:], # "1:"" to not include "_" added by abaqus xHead='Time [s]', yHead='Force [N]', xyDat=col) #=========== Total force ============# tpl = tuple(lst) #Compine all to one xyData xyR2 = sum(tpl) #Plot func.XYplot(modelName, plotName='R2colBot', xHead='Time [s]', yHead='Force [N]', xyDat=xyR2)
lst = [[model + 'conWep', model + 'incidentWave'] for model in modelList] jobLst = [] map(jobLst.extend, lst) #Itterate over jobs #RF1 for job in jobLst: odb = func.open_odb(job) #Create names of history outputs xyNames = {} for name in names: xyNames[name] = 'Reaction force: RF1 PI: ' + name + ' Node 1' #Get xy data xyDic = {} for name, xyName in xyNames.iteritems(): xyDic[name] = xyPlot.XYDataFromHistory(odb=odb, outputVariableName=xyName) #Print xy data for name, xyDat in xyDic.iteritems(): func.XYplot(modelName=job, plotName='RF1-' + name.lower(), xHead='Time [s]', yHead='Force [N]', xyDat=xyDat) #RF3 for job in jobLst: odb = func.open_odb(job) #Create names of history outputs xyNames = {} for name in names: xyNames[name] = 'Reaction force: RF3 PI: ' + name + ' Node 1' #Get xy data
# PLotting xyp = session.XYPlot(name='XYPlot-1') ## can be run multiple times but the line >>>session.xyPlots['XYPlot-1'] , can only be run once >>>ession.XYPlot('XYPlot-1') chartName = xyp.charts.keys()[0] chart = xyp.charts[chartName] chart.legend.setValues(show=False) chart.legend.titleStyle.setValues( font='-*-verdana-medium-r-normal-*-*-240-*-*-p-*-*-*') chart.gridArea.style.setValues(fill=False) xyp.title.style.setValues(font='-*-arial-medium-r-normal-*-*-240-*-*-p-*-*-*') x = 'Strain energy: ALLSE for Whole Model' sName = myOdb.steps.keys()[s] xy1 = xyPlot.XYDataFromHistory( odb=myOdb, outputVariableName=x, steps=(sName, ), ) c1 = session.Curve(xyData=xy1) chart.setValues(curvesToPlot=(c1, ), ) myViewport.setValues(displayedObject=xyp) chartName = xyp.charts.keys()[0] chart = xyp.charts[chartName] path_filename = '%s_Xplot_step-%s_x-%s' % \ (myOdb.name.replace('.odb',''), sName, x.split(':')[1].split(' ')[1]) try: myViewport.view.fitView() session.printToFile(path_filename + '.png', PNG, (myViewport, )) myViewport.view.fitView() session.animationController.setValues(
#for i_num in range(len(aa)): del session.xyDataObjects[aa[i_num]] ###################################################################################### ###################################################################################### #RF1のデータ取り出し # RF1, RF2, U1, U2中本君頑張ってください。 xy_tuple_load=[] kk=step1.historyRegions.keys() for tt in range(len(kk)): if "Node" in kk[tt]: if "R-BOBAN-1" in kk[tt]: new_kk=kk[tt].replace("Node ","").replace("."," Node ") try: xy = xyPlot.XYDataFromHistory(odb=odb, outputVariableName='Reaction force: RF1 PI: '+ str(new_kk), steps=('Step-1', 'Step-2', ), suppressQuery=True) except XypError: print("e") else: xy_tuple_load.append(xy) xy_sum = sum(xy_tuple_load) session.XYData(name='load', objectToCopy=xy_sum ) #↓ここからはXYデータをテキストデータで出力するコード コピペで大丈夫 aa=session.xyDataObjects.keys() aa_temp=[s for s in aa if "temp" in s] for te_num in range(len(aa_temp)): del session.xyDataObjects[aa_temp[te_num]] ##csvファイルへ保存 aa=session.xyDataObjects.keys()
def xyShell(modelName): ''' Prints xy data for displacment at mid col, forces at top and force-displacemnt ''' #Open ODB odb = func.open_odb(modelName) #=========== Displament at mid col ============# #Get node numbers sideNodeNr=odb.rootAssembly.instances['PART-1-1'].\ nodeSets['MID-SIDE'].nodes[0].label # backNodeNr=odb.rootAssembly.instances['PART-1-1'].\ # nodeSets['MID-BACK'].nodes[0].label # frontNodeNr=odb.rootAssembly.instances['PART-1-1'].\ # nodeSets['MID-FRONT'].nodes[0].label #Create output names sideName= 'Spatial displacement: U1 PI: PART-1-1 Node '+str(sideNodeNr)+\ ' in NSET MID-SIDE' # backName= 'Spatial displacement: U1 PI: PART-1-1 Node '+str(backNodeNr)+\ # ' in NSET MID-BACK' # frontName='Spatial displacement: U1 PI: PART-1-1 Node '+str(frontNodeNr)+\ # ' in NSET MID-FRONT' #Get xy data xyU1side = xyPlot.XYDataFromHistory(odb=odb, outputVariableName=sideName, name='U1midSide') # xyU1back = xyPlot.XYDataFromHistory(odb=odb, # outputVariableName=backName, name='U1midBack') # xyU1front = xyPlot.XYDataFromHistory(odb=odb, # outputVariableName=frontName, name='U1midFront') #Print to file func.XYplot(modelName, plotName='U1midSide', xHead='Time [s]', yHead='Displacement [mm]', xyDat=xyU1side) # func.XYplot(modelName, plotName = 'U1midBack', # xHead='Time [s]', yHead='Displacement [mm]', # xyDat= xyU1back) # func.XYplot(modelName, plotName = 'U1midFront', # xHead='Time [s]', yHead='Displacement [mm]', # xyDat= xyU1front) #=========== R2 at top and bot ============# #Get node numbers topNodeNr = [] for nodes in odb.rootAssembly.instances['PART-1-1'].nodeSets['TOP'].nodes: topNodeNr.append(nodes.label) botNodeNr = [] for nodes in odb.rootAssembly.instances['PART-1-1'].nodeSets['BOT'].nodes: botNodeNr.append(nodes.label) #Create output names topNames = [] for nr in topNodeNr: topNames.append('Reaction force: RF1 PI: PART-1-1 Node ' + str(nr) + ' in NSET TOP') botNames = [] for nr in botNodeNr: botNames.append('Reaction force: RF1 PI: PART-1-1 Node ' + str(nr) + ' in NSET BOT') #Get xy data xyTopLst = [] for name in topNames: xyTopLst.append( xyPlot.XYDataFromHistory(odb=odb, outputVariableName=name)) xyTopTup = tuple(xyTopLst) xyBotLst = [] for name in botNames: xyBotLst.append( xyPlot.XYDataFromHistory(odb=odb, outputVariableName=name)) xyBotTup = tuple(xyBotLst) xyR1Top = sum(xyTopTup) xyR1Bot = sum(xyBotTup) xyR1Tot = sum(xyR1Top, xyR1Bot) #Print to file func.XYplot(modelName, plotName='R1top', xHead='Time [s]', yHead='Force [N]', xyDat=xyR1Top) func.XYplot(modelName, plotName='R1bot', xHead='Time [s]', yHead='Force [N]', xyDat=xyR1Bot) func.XYplot(modelName, plotName='R1', xHead='Time [s]', yHead='Force [N]', xyDat=xyR1Tot) #=========== Force Displacement ============# xyRU = combine(xyU1side, -xyR1Tot) func.XYplot(modelName, plotName='forceDisp', xHead='Displacment [mm]', yHead='Force [N]', xyDat=xyRU)
def xyBeam(modelName): #Open ODB odb = func.open_odb(modelName) #=========== Displacemnet ============# #Get node numbers nodeNr = odb.rootAssembly.instances['COLUMN-1'].\ nodeSets['COL-MID'].nodes[0].label #Create names name = 'Spatial displacement: U1 PI: COLUMN-1 Node '+\ str(nodeNr)+' in NSET COL-MID' #Get xy data xyU1mid = xyPlot.XYDataFromHistory(odb=odb, outputVariableName=name) func.XYplot(modelName, plotName='U1mid', xHead='Time [s]', yHead='Displacement [mm]', xyDat=xyU1mid) #=========== Reaction Force ============# #Get node numbers topNodeNr = odb.rootAssembly.instances['COLUMN-1'].\ nodeSets['COL-TOP'].nodes[0].label baseNodeNr = odb.rootAssembly.instances['COLUMN-1'].\ nodeSets['COL-BASE'].nodes[0].label #Create names topName = 'Reaction force: RF1 PI: COLUMN-1 Node '+\ str(topNodeNr)+' in NSET COL-TOP' baseName = 'Reaction force: RF1 PI: COLUMN-1 Node '+\ str(baseNodeNr)+' in NSET COL-BASE' #Get xy data xyR1top = xyPlot.XYDataFromHistory(odb=odb, outputVariableName=topName) xyR1base = xyPlot.XYDataFromHistory(odb=odb, outputVariableName=baseName) xyR1tot = sum(xyR1top, xyR1base) func.XYplot(modelName, plotName='R1', xHead='Time [s]', yHead='Force [N]', xyDat=xyR1tot) # #=========== Force-displacement ============# # plotName='force-Disp' # rf1 = xyPlot.XYDataFromHistory(odb=odb, # outputVariableName='Reaction force: RF1 PI: COLUMN-1 Node 1 in NSET COL-BASE') # rf2 = xyPlot.XYDataFromHistory(odb=odb, # outputVariableName='Reaction force: RF1 PI: COLUMN-1 Node 3 in NSET COL-TOP') # u = xyPlot.XYDataFromHistory(odb=odb, # outputVariableName='Spatial displacement: U1 PI: COLUMN-1 Node 2 in NSET COL-MID') xyUR = combine(xyU1mid, -xyR1tot) func.XYplot(modelName, plotName='ForceDisp', xHead='Displacement [mm]', yHead='Force [N]', xyDat=xyUR)