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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

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语言进行的定制开发。GUI命令行接口(CLI)脚本Python解释器rpy文件ABAQUS/CAEinp文件ABAQUS/StandardABAQUS/Explicitodb文件命令在ABAQUS/CAE中进行建模和进行后处理时,对话框中做的所有设置都由ABAQUS/CAE从内部发出与之对应的命令(command)。ABAQUS脚本接口直接与内核进行通信(communicate),而与ABAQUS/CAE的图形用户界面(GUI)无关。如果将所有的脚本接口命令存储于文件中,该文件则称为脚本(script)。脚本由一系列纯ASCII格式的Python语句组成,扩展名一般为.py。ABAQUS脚本概述ABAQUS脚本接口编写脚本可以实现以下功能:自动执行重复任务;进行参数分析;创建和修改模型;访问输出数据库(ODB文件);定制ABAQUS环境文件;创建ABAQUS插件程序。编写完成的脚本文件,可以直接在ABAQUS运行:File→RunScript,打开相应的.py文件,即可执行;刚打开ABAQUS界面,直接选择RunScript也可;可以在GUI界面下部的命令行接口输入脚本语句执行。ABAQUS脚本概述创建ABAQUS脚本创建脚本有3种常用方法:①在GUI建模时录制宏(macro)File→MacroManager可以按需录制任何操作对应的命令②直接编辑abaqus.rpy文件建模时工作目录下自动生成abaqus.rpy文件使用软件EditPlus可以直接打开编辑保存.cae文件并退出后才能生成.rpy文件③借助PythonReader.exe软件中国石油大学焦中良开发可以实时获取CAE每步操作对应的脚本命令ABAQUS脚本概述调试ABAQUS脚本调试脚本有多种方法,这里介绍Abaqus自带的PDE中的调试。PDE(PythonDevelopmentEnvironment,Python开发环境)有以下功能:编辑Python文件、调试Python脚本或插件;创建guiLog脚本,录制所有的GUI动作;通过GUI(guiLog)运行Python脚本或在ABAQUS/CAE之外运行Python脚本;设置延迟(delay)和断点(breakpoint),并查看代码的执行情况;在watch窗口中查看变量值等。打开方式File→AbaqusPDE,然后打开相应的.py文件,即可编辑调试。ABAQUS脚本概述调试ABAQUS脚本点按钮可以调试整个脚本文件;点按钮可以逐行调试脚本文件,调试行显示为蓝色;点按钮可以停止调试文件;点按钮可以设置断点,调试时将调到此行为止;点按钮,然后点按钮,可以录制CAE中的操作,点可以停止录制。二、Python语言简介Python语言简介基本规则代码按级别从大到小解读,之间用操作符“.”连接。如:mdb.models[‘Model-1’].materials[‘BPCOMPOSITE’].Depvar(n=5)表示将模型‘model-1’的材料‘BPCOMPOSITE’里的子程序相关参数设为5。语句前加上#号,表示是注释内容,这个语句将不被执行;使用中文注释,要在文件最开始加上:#-*-coding:UTF-8-*-以换行来识别一个逻辑语句的结束。如果需要在一个物理行中编写多个逻辑语句,需要用分号分开。如:x=1;y=2;z=3。如果一个逻辑语句太长需要分行写,需要用反斜杠“\”进行连接(有括号括起来的内容就不用)。不同代码块之间要注意用冒号和缩进来区分代码块之间的层次关系,如:foriinrange(0,b3):if(iAnglelowfg[i]=='/'):forlinrange(0,i-j-1):c3[k]=c3[k]+iAnglelowfg[j+l+1]j=ielif(iAnglelowfg[i]==']'):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,即可。不需要用:floati=10.5;不同数据类型之间可通过函数转换,如int()、float()。可以用替代符号表示定制字符串,如stress=1234.56print‘Thestressis%fMPa’%stress即可输出:Thestressis1234.56Mpa符号描述符号描述%c定制字符及其ASCII码%o定制无符号八进制数%s定制字符串%x定制无符号十六进制数%d定制整数%f定制浮点型数据%u定制无符号整数%e用科学计数法定义浮点型数据Python语言简介运算符主要有赋值运算符、算术运算符、逻辑运算符、关系运算符;下表按优先级排列,从上往下优先级增加。运算符描述or逻辑或and逻辑与not逻辑非,=,,=,!=,==小于,小于等于,大于,大于等于,不等于,等于+,-加、减运算*,/,%乘、除、取余数运算**指数运算不支持自加或自减运算,如:i++、i--;但类似i+=1这样的语句是可以的。三、ABAQUS脚本编写ABAQUS脚本编写定义和导入模块在每个脚本文件的最开始处,首先要导入相应的ABAQUS模块;每个步骤均有对应的模块,如part模块,material模块、assembly模块等,通过以下语句可以直接导入cae模块的所有对象:fromcaeModulesimport*如果需要用到各种符号常数,如单元类型C3D8R,还要导入符号常数模块:fromabaqusConstantsimport*定义和导入对象还需要导入相应的ABAQUS对象,包括Session对象(包括视口、远程队列、视图对象)Mdb对象(包括Model对象和Job对象)Odb对象通过类似如下的语句导入对象:fromabaqusimport*ABAQUS脚本编写创建新实体myModel=mdb.models['Model-1']myViewport=session.Viewport(name='Regionsyntax',origin=(20,20),width=200,height=100)mySketch=myModel.Sketch(name='SketchA',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.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',createStepName='impact',region=(pillarVertices,),cf1=12.50E4)通过以上语句,装配实体,并施加边界条件。此处使用了findAt语句来查找顶点。#导入实体,完成装配#选择两个顶点#创建静力分析步(static)#在选择的顶点上施加集中力ABAQUS脚本编写findAt语句简介在Abaqus建模操作生成的rpy文件中,Abaqus将自动为模型的特征进行编号,每个节点(node)、单元(element)、顶点(vertex)、边(edge)、面(face)、体(cell),都有对应的ID。实例:对方形实体切割p=mdb.models['Model-1'].parts['Door']c=p.cellspickedCells=c.getSequenceFromMask(mask=('[#1]',),)v,e,d=p.vertices,p.edges,p.datumsp.PartitionCellByPlaneThreePoints(point1=v[0],point2=v[2],point3=v[6],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.models['Model-1'].Material(name='Steel')mdb.models['Model-1'].materials['Steel'].Elastic(table=((220000.0,0.35),))mdb.models['Model-1'].HomogeneousSolidSect

1 / 24
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功