收藏 分销(赏)

Python在ABAQUS二次开发中的应用实例.ppt

上传人:天**** 文档编号:7886988 上传时间:2025-01-24 格式:PPT 页数:24 大小:2.08MB 下载积分:10 金币
下载 相关 举报
Python在ABAQUS二次开发中的应用实例.ppt_第1页
第1页 / 共24页
Python在ABAQUS二次开发中的应用实例.ppt_第2页
第2页 / 共24页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,Python,在,ABAQUS,二次开发中,的应用实例,主要内容,一、,ABAQUS,脚本概述,二、,Python,语言简介,三、,ABAQUS,脚本编写,一、,ABAQUS,脚本概述,ABAQUS,脚本概述,ABAQUS,软件简介,ABAQUS,是国际著名的,CAE,软件,它以解决实际工业问题能力和强大的非线性功能赢得广泛声誉。航空工业是,ABAQUS,最重要的应用领域之一,波音、空中客车、洛克希德,马丁等是其长期合作的用户。,ABAQUS,分析过程由三个步骤组成:,前处理(,ABAQUS/CAE,);,模拟计算,(ABAQUS/Standard,或者,ABAQUS/Explicit,);,后处理(,ABAQUS/CAE,)。,建模过程主要集中在前处理步骤中。,ABAQUS,脚本概述,ABAQUS,建模方法,常用的,ABAQUS,建模方法主要有三种:,在,ABAQUS/CAE,界面建模,优点:界面直观,简单易懂;,缺点:操作步骤繁琐,不利于修改,缺乏通用性。,通过,inp,文件建模,优点:可以直接在,ABAQUS,中提交;,缺点:只包含模型节点信息,代码较多,修改不便;,使用,Python,语言建模,优点:代码少,语言友好,可移,植性好,可进行参数化修改;,缺点:不够直观。,ABAQUS,脚本概述,ABAQUS,脚本接口,ABAQUS,有限元分析软件二次开发环境提供的脚本接口,是基于,Python,语言进行的定制开发。,在,ABAQUS/CAE,中进行建模和进行后处理时,对话框中做的所有设置都由,ABAQUS/CAE,从内部发出与之对应的命令(,command,)。,ABAQUS,脚本接口直接与内核进行通信(,communicate,),而与,ABAQUS/CAE,的图形用户界面(,GUI,)无关。如果将所有的脚本接口命令存储于文件中,该文件则称为脚本(,script,)。脚本由一系列纯,ASCII,格式的,Python,语句组成,扩展名一般为,.py,。,ABAQUS,脚本概述,ABAQUS,脚本接口,编写脚本可以实现以下功能:,自动执行重复任务;,进行参数分析;,创建和修改模型;,访问输出数据库(,ODB,文件);,定制,ABAQUS,环境文件;,创建,ABAQUS,插件程序。,编写完成的脚本文件,可以直接在,ABAQUS,运行,:,File,Run Script,,打开相应的,.py,文件,即可执行;,刚打开,ABAQUS,界面,直接选择,Run Script,也可;,可以在,GUI,界面下部的命令行接口输入脚本语句执行。,ABAQUS,脚本概述,创建,ABAQUS,脚本,创建脚本有,3,种常用方法:,在,GUI,建模时录制宏(,macro,),File,Macro Manager,可以按需录制任何操作对应的命令,直接编辑,abaqus.rpy,文件,建模时工作目录下自动生成,abaqus.rpy,文件,使用软件,EditPlus,可以直接打开编辑,保存,.cae,文件并退出后才能生成,.rpy,文件,借助,PythonReader.exe,软件,中国石油大学焦中良开发,可以实时获取,CAE,每步操作对应的脚本命令,ABAQUS,脚本概述,调试,ABAQUS,脚本,调试脚本有多种方法,这里介绍,Abaqus,自带的,PDE,中的调试。,PDE,(,Python Development Environment,,,Python,开发环境)有以下功能:,编辑,Python,文件、调试,Python,脚本或插件;,创建,guiLog,脚本,录制所有的,GUI,动作;,通过,GUI,(,guiLog,)运行,Python,脚本或在,ABAQUS/CAE,之外运行,Python,脚本;,设置延迟(,delay,)和断点(,breakpoint,),并查看代码的执行情况;,在,watch,窗口中查看变量值等。,打开方式,File,Abaqus PDE,,然后打开相应的,.py,文件,即可编辑调试。,ABAQUS,脚本概述,调试,ABAQUS,脚本,点 按钮可以调试整个脚本文件;,点,按钮可以逐行调试脚本文件,调试行显示为蓝色;,点,按钮可以停止调试文件;,点,按钮可以设置断点,调试时将调到此行为止;,点,按钮,然后点 按钮,可以录制,CAE,中的操作,点 可以停止录制。,二、,Python,语言简介,Python,语言简介,基本规则,代码按级别从大到小解读,之间用操作符“,.,”连接。如:,mdb.modelsModel-1.materialsBPCOMPOSITE.Depvar(n=5),表示将模型,model-1,的材料,BPCOMPOSITE,里的子程序相关参数设为,5,。,语句前加上,#,号,表示是注释内容,这个语句将不被执行;,使用中文注释,要在文件最开始加上:,#-*-coding:UTF-8-*-,以换行来识别一个逻辑语句的结束。如果需要在一个物理行中编写多个逻辑语句,需要用分号分开。如:,x=1;y=2;z=3,。如果一个逻辑语句太长需要分行写,需要用反斜杠“,”进行连接(有括号括起来的内容就不用)。,不同代码块之间要注意用冒号和缩进来区分代码块之间的层次关系,如:,for i in range(0,b3):if(iAnglelowfgi=/):for l in range(0,i-j-1):c3k=c3k+iAnglelowfgj+l+1 j=i elif(iAnglelowfgi=):,Python,语言简介,保留字段,定义变量名、函数名的时候,避免使用保留字段。如:,保留字段,说明,and not or,逻辑“与”“非”“或”,break,中止循环语句,continue,继续执行下一次循环,class,定义类,def,定义函数或者方法,if else ,elif,条件判断语句,print,输出语句,while,循环语句,from import,导入模块,return,返回函数计算结果,Python,语言简介,数据类型,数据类型主要有数字类型、字符串类型;,数字类型主要有四种:整型,int,、长整型,long,、浮点型,float,、复数型,complex,;,Python,语言可自动判断数据类型,不需要编写者定义说明类型,如:,i=10.5,,即可。不需要用:,float i=10.5,;,不同数据类型之间可通过函数转换,如,int,()、,float,()。,可以用替代符号表示定制字符串,如,stress=1234.56print The stress is%f MPa%stress,即可输出:,The stress is 1234.56 Mpa,符号,描述,符号,描述,%c,定制字符及其,ASCII,码,%o,定制无符号八进制数,%s,定制字符串,%x,定制无符号十六进制数,%d,定制整数,%f,定制浮点型数据,%u,定制无符号整数,%e,用科学计数法定义浮点型数据,Python,语言简介,运算符,主要有赋值运算符、算术运算符、逻辑运算符、关系运算符;,下表按优先级排列,从上往下优先级增加。,运算符,描述,or,逻辑或,and,逻辑与,not,逻辑非,=,!=,=,小于,小于等于,大于,大于等于,不等于,等于,+,,,-,加、减运算,*,/,%,乘、除、取余数运算,*,指数运算,不支持自加或自减运算,如:,i+,、,i-,;,但类似,i+=1,这样的语句是可以的。,三、,ABAQUS,脚本编写,ABAQUS,脚本编写,定义和导入模块,在每个脚本文件的最开始处,首先要导入相应的,ABAQUS,模块;,每个步骤均有对应的模块,如,part,模块,,material,模块、,assembly,模块等,通过以下语句可以直接导入,cae,模块的所有对象,:,from,caeModules,import*,如果需要用到各种符号常数,如单元类型,C3D8R,,还要导入符号常数模块:,from,abaqusConstants,import*,定义和导入对象,还需要导入相应的,ABAQUS,对象,包括,Session,对象(包括视口、远程队列、视图对象),Mdb,对象(包括,Model,对象和,Job,对象),Odb,对象,通过类似如下的语句导入对象:,from,abaqus,import*,ABAQUS,脚本编写,创建新实体,myModel=mdb.modelsModel-1,myViewport=session.Viewport(name=Region syntax,origin=(20,20),width=200,height=100),mySketch=myModel.Sketch(name=Sketch A,sheetSize=200.0),mySketch.rectangle(point1=(-40.0,30.0),point2=(-10.0,0.0),mySketch.rectangle(point1=(10.0,30.0),point2=(40.0,0.0),door=myModel.Part(name=Door,dimensionality,=THREE_D,type=DEFORMABLE_BODY),door.BaseSolidExtrude(sketch=mySketch,depth=20.0),通过以上语句,在,Part,模块中生成两个三维实体。,#,建立新模型,Model-1,#,创建新的视口,#,创建一个草图,并绘制两个矩形,#,对上面创建的两个矩形进行拉伸操作,生成三维部件,ABAQUS,脚本编写,装配实体、导入边界条件,myAssembly=myModel.rootAssembly,doorInstance=myAssembly.Instance(name=Door-1,part=door,dependent=OFF),pillarVertices=doorInstance.vertices.findAt(-40,30,0),),(40,0,0),),myModel.StaticStep(name=impact,previous=Initial,initialInc=1,timePeriod=1),myPillarLoad=myModel.ConcentratedForce(name=pillarForce,createStepName=impact,region=(pillarVertices,),cf1=12.50E4),通过以上语句,装配实体,并施加边界条件。,此处使用了,findAt,语句来查找顶点。,#,导入实体,完成装配,#,选择两个顶点,#,创建静力分析步(,static,),#,在选择的顶点上施加集中力,ABAQUS,脚本编写,findAt,语句简介,在,Abaqus,建模操作生成的,rpy,文件中,,Abaqus,将自动为模型的特征进行编号,每个节点,(node),、单元,(element),、顶点,(vertex),、边,(edge),、面,(face),、体,(cell),,都有对应的,ID,。,实例:对方形实体切割,p=mdb.modelsModel-1.partsDoorc=p.cellspickedCells=c.getSequenceFromMask(mask=(#1,),)v,e,d=p.vertices,p.edges,p.datumsp.PartitionCellByPlaneThreePoints(point1=v0,point2=v2,point3=v6,cells=pickedCells),如果后续对模型进行编辑(增加、删除),特征,ID,会改变,这时再用原来的语句就报错。,解决方法:用该特征的空间坐标来表示;,对于点,坐标是唯一的;对于线、面、体,上面的任一坐标都可以,但不要用两个特征的交点坐标。,p.PartitionCellByPlaneThreePoints(point1=(-10,30,0),point2=(-40,30,20),point3=(-40,0,20),cells=pickedCells),c.findAt(-25,30,20),),ABAQUS,脚本编写,定义材料属性,mdb.modelsModel-1.Material(name=Steel),mdb.modelsModel-1.materialsSteel.Elastic(table=(220000.0,0.35),),mdb.modelsModel-1.HomogeneousSolidSection(name=Section-1,material=Steel,thickness=None),pickedCells=c:,p.Set(cells=pickedCells,name=Set-all),p=mdb.modelsModel-1.partsDoor,c=p.cells,cells=c:,region=p.setsSet-all,p=mdb.modelsModel-1.partsDoor,p.SectionAssignment(region=region,sectionName=Section-1,offset=0.0),#,定义材料“,steel,”。,#,定义材料“,steel,”的工程弹性常数。,#,定义截面属性“,steel,”,将材料“,steel,”赋予截面,#c:,可以选取全部的实体,#,定义集合“,Set-all,”,将全部实体定义成一个集合,#,将截面属性赋予给集合“,Set-all,”,ABAQUS,脚本编写,布置种子,a=,mdb.models,Model-1.,rootAssembly,e1=,a.instances,Door-1.edges,pickedEdges,=e1:#e1:,可以选取全部的边,a.seedEdgeByNumber,(edges=,pickedEdges,number=4),通过以上语句布置种子。,a=,mdb.models,Model-1.,rootAssembly,partInstances,=(,a.instances,Door-1,),a.generateMesh,(regions=,partInstances,),通过以上语句,把实体划分网格。,提交工作,mdb.Job,(name=Job-1,model=Model-1,description=,type=ANALYSIS,atTime,=None,waitMinutes,=0,waitHours,=0,queue=None,memory=90,memoryUnits,=PERCENTAGE,getMemoryFromAnalysis,=True,explicitPrecision,=SINGLE,nodalOutputPrecision,=SINGLE,echoPrint,=OFF,modelPrint,=OFF,contactPrint,=OFF,historyPrint,=OFF,userSubroutine,=,scratch=,multiprocessingMode,=DEFAULT,numCpus,=1),mdb.jobs,Job-1.submit(,consistencyChecking,=OFF,datacheckJob,=True),ABAQUS,脚本编写,参考资料,ABAQUS,帮助手册,Abaqus Scripting Reference Manual,中关于,Python,部分;,曹金凤,王旭春,孔亮,.Python,语言在,Abaqus,中的应用,M.,机械工业出版社,,2012.,总结,ABAQUS,在建模过程中生成脚本文件,贮存在,rpy,文件中;,提取,rpy,文件,可以用,EditPlus,编辑,保存生成,py,文件,在,ABAQUS,中直接运行。运行,py,文件的方式有:,Run Script,、在,PDE,中运行、在,GUI,底部的命令窗口运行;,写好的语句一般在,GUI,窗口底部的命令窗口或,PDE,中逐句运行调试;,rpy,文件中,模型的点、线、面、体等特征是通过,ID,编号记录的,在二次开发过程中,要把这些,ID,编号改成特征的唯一坐标值,以利于修改识别;,建模过程有很多重复的操作步骤,要合理使用循环语句进行简化;,过于冗长的语句段,定义成函数,再在其他语句中调用,可以使程序简洁;,注意,Python,语句段中的换行、缩进等,使用中文注释要事先声明;,ABAQUS,特定的函数,可查看帮助手册,Abaqus Scripting Reference Manual,。,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服