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

上传人(卖家):晟晟文业 文档编号:4989128 上传时间:2023-01-31 格式:PPT 页数:24 大小:2.23MB
下载 相关 举报
Python在ABAQUS二次开发中的应用实例2课件.ppt_第1页
第1页 / 共24页
Python在ABAQUS二次开发中的应用实例2课件.ppt_第2页
第2页 / 共24页
Python在ABAQUS二次开发中的应用实例2课件.ppt_第3页
第3页 / 共24页
Python在ABAQUS二次开发中的应用实例2课件.ppt_第4页
第4页 / 共24页
Python在ABAQUS二次开发中的应用实例2课件.ppt_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、Python在在ABAQUS二次开发中二次开发中的应用实例的应用实例主要内容 一、ABAQUS 脚本概述 二、Python 语言简介 三、ABAQUS脚本编写一、ABAQUS 脚本概述ABAQUS 脚本概述lABAQUS软件简介ABAQUSABAQUS是国际著名的是国际著名的CAECAE软件,它以解决实际工业问题能力和强大的非线性功能赢得广泛声誉。软件,它以解决实际工业问题能力和强大的非线性功能赢得广泛声誉。航空工业是航空工业是ABAQUSABAQUS最重要的应用领域之一,波音、空中客车、洛克希德最重要的应用领域之一,波音、空中客车、洛克希德 马丁等是其长期合作马丁等是其长期合作的用户。的用户

2、。ABAQUSABAQUS分析过程由三个步骤组成:分析过程由三个步骤组成:n前处理(前处理(ABAQUS/CAE););n模拟计算模拟计算(ABAQUS/Standard或者或者ABAQUS/Explicit););n后处理(后处理(ABAQUS/CAE)。)。建模过程主要集中在前处理步骤中。建模过程主要集中在前处理步骤中。ABAQUS 脚本概述lABAQUS建模方法常用的常用的ABAQUSABAQUS建模方法主要有三种:建模方法主要有三种:在在ABAQUS/CAEABAQUS/CAE界面建模界面建模n优点:界面直观,简单易懂;优点:界面直观,简单易懂;n缺点:操作步骤繁琐,不利于修改,缺乏通

3、用性。缺点:操作步骤繁琐,不利于修改,缺乏通用性。通过通过inpinp文件建模文件建模n优点:可以直接在优点:可以直接在ABAQUS中提交;中提交;n缺点:只包含模型节点信息,代码较多,修改不便;缺点:只包含模型节点信息,代码较多,修改不便;使用使用PythonPython语言建模语言建模n优点:代码少,语言友好,可移优点:代码少,语言友好,可移植性好,可进行参数化修改;植性好,可进行参数化修改;n缺点:不够直观。缺点:不够直观。ABAQUS 脚本概述lABAQUS脚本接口ABAQUSABAQUS有限元分析软件二次开发环境提供的脚本接口,是基于有限元分析软件二次开发环境提供的脚本接口,是基于P

4、ythonPython语言进行的定制开发。语言进行的定制开发。在在ABAQUS/CAEABAQUS/CAE中进行建模和进行后处理时,对中进行建模和进行后处理时,对话框中做的所有设置都由话框中做的所有设置都由ABAQUS/CAEABAQUS/CAE从内部发从内部发出与之对应的出与之对应的命令(命令(commandcommand)。A B A Q U SA B A Q U S 脚 本 接 口 直 接 与 内 核 进 行 通 信脚 本 接 口 直 接 与 内 核 进 行 通 信(communicatecommunicate),而与),而与ABAQUS/CAEABAQUS/CAE的图形用户的图形用户界

5、面(界面(GUIGUI)无关。如果将所有的脚本接口命令)无关。如果将所有的脚本接口命令存储于文件中,该文件则称为存储于文件中,该文件则称为脚本(脚本(scriptscript)。脚。脚本由一系列纯本由一系列纯ASCIIASCII格式的格式的PythonPython语句组成,语句组成,扩展扩展名一般为名一般为.py.py。ABAQUS 脚本概述lABAQUS脚本接口编写脚本可以实现以下功能:编写脚本可以实现以下功能:n自动执行重复任务;自动执行重复任务;n进行参数分析;进行参数分析;n创建和修改模型;创建和修改模型;n访问输出数据库(访问输出数据库(ODB文件);文件);n定制定制ABAQUS环

6、境文件;环境文件;n创建创建ABAQUS插件程序。插件程序。编写完成的脚本文件,可以直接在编写完成的脚本文件,可以直接在ABAQUSABAQUS运行运行:nFile Run Script,打开相应的,打开相应的.py文件,即可执行;文件,即可执行;n刚打开刚打开ABAQUS界面,直接选择界面,直接选择Run Script也可;也可;n可以在可以在GUI界面下部的命令行接口输入脚本语句执行。界面下部的命令行接口输入脚本语句执行。ABAQUS 脚本概述l创建ABAQUS脚本创建脚本有创建脚本有3 3种常用方法:种常用方法:在在GUIGUI建模时录制宏(建模时录制宏(macromacro)nFile

7、 Macro Managern可以按需录制任何操作对应的命令可以按需录制任何操作对应的命令直接编辑直接编辑abaqus.rpyabaqus.rpy文件文件n建模时工作目录下自动生成建模时工作目录下自动生成abaqus.rpy文件文件n使用软件使用软件EditPlus可以直接打开编辑可以直接打开编辑n保存保存.cae文件并退出后才能生成文件并退出后才能生成.rpy文件文件借助借助PythonReader.exePythonReader.exe软件软件n中国石油大学焦中良开发中国石油大学焦中良开发n可以实时获取可以实时获取CAE每步操作对应的脚本命令每步操作对应的脚本命令ABAQUS 脚本概述l调

8、试ABAQUS脚本调试脚本有多种方法,这里介绍调试脚本有多种方法,这里介绍AbaqusAbaqus自带的自带的PDEPDE中的调试。中的调试。PDEPDE(Python Development EnvironmentPython Development Environment,PythonPython开发环境)开发环境)有以下功能:有以下功能:n编辑编辑Python文件、调试文件、调试Python脚本或插件;脚本或插件;n创建创建guiLog脚本,录制所有的脚本,录制所有的GUI动作;动作;n通过通过GUI(guiLog)运行)运行Python脚本或在脚本或在ABAQUS/CAE之外运行之外运

9、行Python脚本;脚本;n设置延迟(设置延迟(delay)和断点()和断点(breakpoint),并查看代码的执行情况;),并查看代码的执行情况;n在在watch窗口中查看变量值等。窗口中查看变量值等。打开方式打开方式nFile Abaqus PDE,然后打开相应的,然后打开相应的.py文件,即可编辑调试。文件,即可编辑调试。ABAQUS 脚本概述l调试ABAQUS脚本n点点 按钮可以调试整个脚本文件;按钮可以调试整个脚本文件;n点点 按钮可以逐行调试脚本文件,调试行显示为蓝色;按钮可以逐行调试脚本文件,调试行显示为蓝色;n点点 按钮可以停止调试文件;按钮可以停止调试文件;n点点 按钮可以

10、设置断点,调试时将调到此行为止;按钮可以设置断点,调试时将调到此行为止;n点点 按钮,然后点按钮,然后点 按钮,可以录制按钮,可以录制CAE中的操作,点中的操作,点 可以停止录制。可以停止录制。二、Python 语言简介Python 语言简介l基本规则n代码按级别从大到小解读,之间用代码按级别从大到小解读,之间用操作符操作符“.”连接。如:连接。如:mdb.modelsModel-1.materialsBPCOMPOSITE.Depvar(n=5)表示将模型表示将模型model-1的材料的材料BPCOMPOSITE里的子程序相关参数设为里的子程序相关参数设为5。n语句前加上语句前加上#号,表示

11、是号,表示是注释注释内容,这个语句将不被执行;内容,这个语句将不被执行;n使用使用中文注释中文注释,要在文件最开始加上:,要在文件最开始加上:#-*-coding:UTF-8-*-n以以换行换行来识别一个逻辑语句的结束。如果需要在一个物理行中编写多个逻辑语句,需要用分号分开。如:来识别一个逻辑语句的结束。如果需要在一个物理行中编写多个逻辑语句,需要用分号分开。如:x=1;y=2;z=3。如果一个逻辑语句太长需要分行写,需要用反斜杠。如果一个逻辑语句太长需要分行写,需要用反斜杠“”进行连接(有括号括起来的内容就不进行连接(有括号括起来的内容就不用)。用)。n不同代码块之间要注意用不同代码块之间要

12、注意用冒号和缩进冒号和缩进来区分代码块之间的层次关系,如:来区分代码块之间的层次关系,如: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 语言简介l保留字段定义变量名、函数名的时候,避免使用保留字段。如:定义变量名、函数名的时候,避免使用保留字段。如:保留字段保留字段说明说明and not or逻辑逻辑“与与”“”“非非”“”“或或”break中止循环语句中止循环语句continue继续执行下一次循环继续

13、执行下一次循环class定义类定义类def定义函数或者方法定义函数或者方法if else elif条件判断语句条件判断语句print输出语句输出语句while循环语句循环语句from import导入模块导入模块return返回函数计算结果返回函数计算结果Python 语言简介l数据类型数据类型主要有数字类型、字符串类型;数据类型主要有数字类型、字符串类型;数字类型主要有四种:整型数字类型主要有四种:整型intint、长整型、长整型longlong、浮点型、浮点型floatfloat、复数型、复数型complexcomplex;PythonPython语言可自动判断数据类型,不需要编写者定义说

14、明类型,如:语言可自动判断数据类型,不需要编写者定义说明类型,如:i=10.5,即可。不需要用:,即可。不需要用:float i=10.5 ;不同数据类型之间可通过函数转换,如不同数据类型之间可通过函数转换,如intint()、()、floatfloat()。()。可以用替代符号表示定制字符串,如可以用替代符号表示定制字符串,如stress=1234.56print The stress is%f MPa%stress即可输出:即可输出:The stress is 1234.56 Mpa The stress is 1234.56 Mpa 符号符号描述描述符号符号描述描述%c定制字符及其定制字

15、符及其ASCII码码%o定制无符号八进制数定制无符号八进制数%s定制字符串定制字符串%x定制无符号十六进制数定制无符号十六进制数%d定制整数定制整数%f定制浮点型数据定制浮点型数据%u定制无符号整数定制无符号整数%e用科学计数法定义浮点型数据用科学计数法定义浮点型数据Python 语言简介l运算符主要有赋值运算符、算术运算符、逻辑运算符、关系运算符;主要有赋值运算符、算术运算符、逻辑运算符、关系运算符;下表按优先级排列,从上往下优先级增加。下表按优先级排列,从上往下优先级增加。运算符运算符描述描述or逻辑或逻辑或and逻辑与逻辑与not 逻辑非逻辑非,=,!=,=小于,小于等于,大于,大于等于

16、,不等于,等于小于,小于等于,大于,大于等于,不等于,等于+,-加、减运算加、减运算*,/,%乘、除、取余数运算乘、除、取余数运算*指数运算指数运算不支持自加或自减运算,如:不支持自加或自减运算,如:i+、i-;但类似但类似 i+=1 这样的语句是可以的。这样的语句是可以的。三、ABAQUS脚本编写ABAQUS脚本编写l定义和导入模块在每个脚本文件的最开始处,首先要导入相应的在每个脚本文件的最开始处,首先要导入相应的ABAQUSABAQUS模块;模块;每个步骤均有对应的模块,如每个步骤均有对应的模块,如partpart模块,模块,materialmaterial模块、模块、assemblyas

17、sembly模块等,通过以下语句可以直接导入模块等,通过以下语句可以直接导入caecae模块的所有对象模块的所有对象:from caeModules import*如果需要用到各种符号常数,如单元类型如果需要用到各种符号常数,如单元类型C3D8RC3D8R,还要导入符号常数模块:,还要导入符号常数模块:from abaqusConstants import*l定义和导入对象还需要导入相应的还需要导入相应的ABAQUSABAQUS对象,包括对象,包括nSession对象(包括视口、远程队列、视图对象)对象(包括视口、远程队列、视图对象)nMdb对象(包括对象(包括Model对象和对象和Job对象

18、)对象)nOdb对象对象通过类似如下的语句导入对象:通过类似如下的语句导入对象:from abaqus import*ABAQUS脚本编写l创建新实体myModel=mdb.modelsModel-1myViewport=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)mySket

19、ch.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)通过以上语句,在通过以上语句,在PartPart模块中生成两个三维实体。模块中生成两个三维实体。#建立新模型Model-1#创建新的视口#创建一个草图,并绘制两个矩形#对上面创建的两个矩形进行拉伸操作,生成三维部件 ABAQUS脚本编写l装配实体、导入边界条件

20、myAssembly=myModel.rootAssemblydoorInstance=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,crea

21、teStepName=impact,region=(pillarVertices,),cf1=12.50E4)通过以上语句,装配实体,并施加边界条件。通过以上语句,装配实体,并施加边界条件。此处使用了此处使用了findAtfindAt语句语句来查找顶点。来查找顶点。#导入实体,完成装配#选择两个顶点#创建静力分析步(static)#在选择的顶点上施加集中力 ABAQUS脚本编写lfindAt语句简介在在AbaqusAbaqus建模操作生成的建模操作生成的rpyrpy文件中,文件中,AbaqusAbaqus将自动为模型的特征进行编号,每个节点将自动为模型的特征进行编号,每个节点(node)(no

22、de)、单元、单元(element)(element)、顶点、顶点(vertex)(vertex)、边、边(edge)(edge)、面、面(face)(face)、体、体(cell)(cell),都有对应的,都有对应的IDID。n实例:对方形实体切割实例:对方形实体切割p=mdb.modelsModel-1.partsDoorc=p.cellspickedCells=c.getSequenceFromMask(mask=(#1,),)v,e,d=p.vertices,p.edges,p.datumsp.PartitionCellByPlaneThreePoints(point1=v0,poin

23、t2=v2,point3=v6,cells=pickedCells)如果后续对模型进行编辑(增加、删除),特征如果后续对模型进行编辑(增加、删除),特征IDID会改变,这时再用原来的语句就报错。会改变,这时再用原来的语句就报错。解决方法:用该特征的解决方法:用该特征的空间坐标空间坐标来表示;来表示;对于点,坐标是唯一的;对于线、面、体,上面的任一坐标都可以,但不要用两个特征的交点坐标。对于点,坐标是唯一的;对于线、面、体,上面的任一坐标都可以,但不要用两个特征的交点坐标。p.PartitionCellByPlaneThreePoints(point1=(-10,30,0),point2=(-4

24、0,30,20),point3=(-40,0,20),cells=pickedCells)c.findAt(-25,30,20),)ABAQUS脚本编写l定义材料属性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=pi

25、ckedCells,name=Set-all)p=mdb.modelsModel-1.partsDoorc=p.cellscells=c:region=p.setsSet-allp=mdb.modelsModel-1.partsDoorp.SectionAssignment(region=region,sectionName=Section-1,offset=0.0)#定义材料“steel”。#定义材料“steel”的工程弹性常数。#定义截面属性“steel”,将材料“steel”赋予截面#c:可以选取全部的实体#定义集合“Set-all”,将全部实体定义成一个集合#将截面属性赋予给集合“Se

26、t-all”ABAQUS脚本编写l布置种子a=mdb.modelsModel-1.rootAssemblye1=a.instancesDoor-1.edgespickedEdges=e1:#e1:可以选取全部的边a.seedEdgeByNumber(edges=pickedEdges,number=4)通过以上语句布置种子。通过以上语句布置种子。a=mdb.modelsModel-1.rootAssemblypartInstances=(a.instancesDoor-1,)a.generateMesh(regions=partInstances)通过以上语句,把实体划分网格。通过以上语句,把

27、实体划分网格。l提交工作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,use

28、rSubroutine=,scratch=,multiprocessingMode=DEFAULT,numCpus=1)mdb.jobsJob-1.submit(consistencyChecking=OFF,datacheckJob=True)ABAQUS脚本编写l参考资料ABAQUSABAQUS帮助手册帮助手册Abaqus Scripting Reference ManualAbaqus Scripting Reference Manual中关于中关于PythonPython部分;部分;曹金凤,王旭春,孔亮曹金凤,王旭春,孔亮.Python.Python 语言在语言在AbaqusAbaqu

29、s中的应用中的应用M.M.机械工业出版社,机械工业出版社,2012.2012.总结 ABAQUS在建模过程中生成脚本文件,贮存在rpy文件中;提取rpy文件,可以用EditPlus编辑,保存生成py文件,在ABAQUS中直接运行。运行py文件的方式有:Run Script、在PDE中运行、在GUI底部的命令窗口运行;写好的语句一般在GUI窗口底部的命令窗口或PDE中逐句运行调试;rpy文件中,模型的点、线、面、体等特征是通过ID编号记录的,在二次开发过程中,要把这些ID编号改成特征的唯一坐标值,以利于修改识别;建模过程有很多重复的操作步骤,要合理使用循环语句进行简化;过于冗长的语句段,定义成函数,再在其他语句中调用,可以使程序简洁;注意Python语句段中的换行、缩进等,使用中文注释要事先声明;ABAQUS特定的函数,可查看帮助手册Abaqus Scripting Reference Manual。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(Python在ABAQUS二次开发中的应用实例2课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|