abaqus Python 简单梁的例子

from abaqus import * from abaqusConstants import * backwardCompatibility.setValues(includeDeprecated=True,reportDeprecated=False) # Create a model. myModel = mdb.Model(name='Beam') # Create a new viewport myViewport = session.Viewport(name='Cantilever Beam Example',origin=(20, 20), width=150, height=120) #------------------------------ import part # Create a sketch for the base feature. mySketch = myModel.ConstrainedSketch(name='beamProfile', sheetSize=250.) # Create the rectangle. mySketch.rectangle(point1=(-100,10), point2=(100,-10)) # Create a three-dimensional,deformable part. myBeam = myModel.Part(name='Beam', dimensionality=THREE_D,type=DEFORMABLE_BODY) # Create the part's base feature by extruding the sketch # through a distance of 25.0. myBeam.BaseSolidExtrude(sketch=mySketch, depth=25.0) #------------------------------ import material # Create a material. mySteel = myModel.Material(name='Steel') # Create the elastic properties: elasticProperties = (209.E3, 0.3) mySteel.Elastic(table=(elasticProperties, ) ) #--------------------------- import section # Create the solid section. mySection = myModel.HomogeneousSolidSection(name='beamSection', material='Steel', thickness=1.0) # Assign the section to the region. The region refers to the single cell in this model. region = (myBeam.cells,) myBeam.SectionAssignment(region=region,sectionName='beamSection') #----------------------------- import assembly # Create a part instance. myAssembly = myModel.rootAssembly myInstance = myAssembly.Instance(name='beamInstance', part=myBeam, dependent=OFF) #---------------------------- import step # Create a step. The time period of the static step is 1.0, and the initial incrementation is 0.1; the step is created after the initial step. myModel.StaticStep(name='beamLoad', previous='Initial',timePeriod=1.0, initialInc=0.1,description='Load the top of the beam.') #----------------------------- import load # Find the end face using coordinates. endFaceCenter = (-100,0,12.5) endFace = myInstance.faces.findAt((endFaceCenter,) ) # Create a boundary condition that encastres one end of the beam. endRegion = (endFace,) myModel.EncastreBC(name='Fixed',createStepName='beamLoad',region=endRegion) # Find the top face using coordinates. topFaceCenter = (0,10,12.5) topFace = myInstance.faces.findAt((topFaceCenter,) ) # Create a pressure load on the top face of the beam. topSurface = ((topFace, SIDE1), ) myModel.Pressure(name='Pressure', createStepName='beamLoad',region=topSurface, magnitude=0.5) #--------------------------- import mesh # Assign an element type to the part instance. region = (myInstance.cells,) elemType = mesh.ElemType(elemCode=C3D8I, elemLibrary=STANDARD) myAssembly.setElementType(regions=region, elemTypes=(elemType,)) # Seed the part instance. myAssembly.seedPartInstance(regions=(myInstance,), size=10.0) # Mesh the part instance. myAssembly.generateMesh(regions=(myInstance,)) # Display the meshed beam. myViewport.assemblyDisplay.setValues(mesh=ON) myViewport.assemblyDisplay.meshOptions.setValues(meshTechnique=ON) myViewport.setValues(displayedObject=myAssembly) #----------------------------- import job # Create an analysis job for the model and submit it. jobName = 'beam_tutorial' myJob = mdb.Job(name=jobName, model='Beam',description='Cantilever beam tutorial') # Wait for the job to complete. myJob.submit() myJob.waitForCompletion() #---------------------- import visualization # Open the output database and display a # default contour plot. myOdb = visualization.openOdb(path=jobName + '.odb') myViewport.setValues(displayedObject=myOdb) myViewport.odbDisplay.display.setValues(plotState=CONTOURS_ON_DEF) #---------------------------- from abaqus import session import visualization import xyPlot from abaqusConstants import # load odb file myViewport = session.Viewport(name='myViewport', origin=(10, 10), width=300, height=200) myOdb = visualization.openOdb(path='beam_tutorial.odb') myViewport.setValues(displayedObject=myOdb) # set viewport settings v = 'Iso' myViewport.view.setValues(session.views[v]) myViewport.maximize() myViewport.view.fitView() myViewport.odbDisplay.basicOptions.setValues(coordSystemDisplay=OFF, translucencySort=ON) myViewport.odbDisplay.commonOptions.setValues(visibleEdges=FEATURE) # NONE myViewport.odbDisplay.contourOptions.setValues(contourStyle=CONTINUOUS) # DISCRETE CONTINUOUS #-------------------------- # saving undeformed image myViewport.odbDisplay.display.setValues(plotState=(UNDEFORMED, )) path_filename = '%s_%s' % (myOdb.name.replace('.odb',''),v) try: session.printToFile(path_filename, PNG, (myViewport,)) print('saving %s' % path_filename) except: pass #----------------------++++++ # save stress plots v = 'Iso' ; o = 'S' ; c = 'S11' ; s = 0 ; f = -1 myViewport.odbDisplay.display.setValues(plotState=(CONTOURS_ON_DEF, )) myViewport.odbDisplay.setFrame(step=s, frame=f) myViewport.odbDisplay.setPrimaryVariable(variableLabel=o,outputPosition=INTEGRATION_POINT,refinement=(COMPONENT, c), ) path_filename = '%s_step-%s_%s_%s_%s' % (myOdb.name.replace('.odb',''),s,o,c,v) try: myViewport.view.fitView() session.printToFile(path_filename+'.png', PNG, (myViewport,)) print('saving %s' % path_filename) myViewport.view.fitView() session.animationController.setValues(animationType=TIME_HISTORY, viewports=(myViewport.name, )) # SCALE_FACTOR TIME_HISTORY session.animationController.play(duration=UNLIMITED) session.animationController.animationOptions.setValues(frameRate=15) session.writeImageAnimation(fileName=path_filename+'.avi', format=AVI, canvasObjects=(myViewport,)) print('saving %s' % path_filename+'.avi') except: pass #----------------------------- # 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(animationType=TIME_HISTORY, viewports=(myViewport.name, )) # SCALE_FACTOR TIME_HISTORY session.animationController.play(duration=UNLIMITED) session.animationController.animationOptions.setValues(xyShowSymbol=True, xySymbolSize=LARGE) session.writeImageAnimation(fileName=path_filename+'.avi', format=AVI, canvasObjects=(session.viewports[myViewport.name], )) print('saved %s' % path_filename+'.avi') except: pass
默认 最新
当前暂无评论,小编等你评论哦!
点赞 评论 收藏
关注