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

上传人:小飞机 文档编号:1455770 上传时间:2022-11-27 格式:PPT 页数:24 大小:2.23MB
返回 下载 相关 举报
Python在ABAQUS二次开发中的应用实例课件.ppt_第1页
第1页 / 共24页
Python在ABAQUS二次开发中的应用实例课件.ppt_第2页
第2页 / 共24页
Python在ABAQUS二次开发中的应用实例课件.ppt_第3页
第3页 / 共24页
Python在ABAQUS二次开发中的应用实例课件.ppt_第4页
第4页 / 共24页
Python在ABAQUS二次开发中的应用实例课件.ppt_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《Python在ABAQUS二次开发中的应用实例课件.ppt》由会员分享,可在线阅读,更多相关《Python在ABAQUS二次开发中的应用实例课件.ppt(24页珍藏版)》请在三一办公上搜索。

1、Python在ABAQUS二次开发中的应用实例,主要内容,一、ABAQUS 脚本概述二、Python 语言简介三、ABAQUS脚本编写,一、ABAQUS 脚本概述,ABAQUS 脚本概述,ABAQUS软件简介ABAQUS是国际著名的CAE软件,它以解决实际工业问题能力和强大的非线性功能赢得广泛声誉。航空工业是ABAQUS最重要的应用领域之一,波音、空中客车、洛克希德马丁等是其长期合作的用户。,ABAQUS分析过程由三个步骤组成:前处理( ABAQUS/CAE );模拟计算(ABAQUS/Standard或者ABAQUS/Explicit);后处理( ABAQUS/CAE )。建模过程主要集中在

2、前处理步骤中。,ABAQUS 脚本概述,ABAQUS建模方法常用的ABAQUS建模方法主要有三种:在ABAQUS/CAE界面建模优点:界面直观,简单易懂;缺点:操作步骤繁琐,不利于修改,缺乏通用性。通过inp文件建模优点:可以直接在ABAQUS中提交;缺点:只包含模型节点信息,代码较多,修改不便;使用Python语言建模优点:代码少,语言友好,可移植性好,可进行参数化修改;缺点:不够直观。,ABAQUS 脚本概述,ABAQUS脚本接口ABAQUS有限元分析软件二次开发环境提供的脚本接口,是基于Python语言进行的定制开发。,在ABAQUS/CAE中进行建模和进行后处理时,对话框中做的所有设置

3、都由ABAQUS/CAE从内部发出与之对应的命令(command)。ABAQUS脚本接口直接与内核进行通信(communicate),而与ABAQUS/CAE的图形用户界面(GUI)无关。如果将所有的脚本接口命令存储于文件中,该文件则称为脚本(script)。脚本由一系列纯ASCII格式的Python语句组成,扩展名一般为.py。,ABAQUS 脚本概述,ABAQUS脚本接口编写脚本可以实现以下功能:自动执行重复任务;进行参数分析;创建和修改模型;访问输出数据库(ODB文件);定制ABAQUS环境文件;创建ABAQUS插件程序。编写完成的脚本文件,可以直接在ABAQUS运行:File Run

4、Script,打开相应的.py文件,即可执行;刚打开ABAQUS界面,直接选择Run Script也可;可以在GUI界面下部的命令行接口输入脚本语句执行。,ABAQUS 脚本概述,创建ABAQUS脚本创建脚本有3种常用方法:在GUI建模时录制宏(macro)File Macro Manager可以按需录制任何操作对应的命令直接编辑abaqus.rpy文件建模时工作目录下自动生成abaqus.rpy文件使用软件EditPlus可以直接打开编辑保存.cae文件并退出后才能生成.rpy文件借助PythonReader.exe软件中国石油大学焦中良开发可以实时获取CAE每步操作对应的脚本命令,ABAQ

5、US 脚本概述,调试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 脚本

6、概述,调试ABAQUS脚本点 按钮可以调试整个脚本文件;点 按钮可以逐行调试脚本文件,调试行显示为蓝色;点 按钮可以停止调试文件;点 按钮可以设置断点,调试时将调到此行为止;点 按钮,然后点 按钮,可以录制CAE中的操作,点 可以停止录制。,二、Python 语言简介,Python 语言简介,基本规则代码按级别从大到小解读,之间用操作符“.”连接。如:mdb.modelsModel-1.materialsBPCOMPOSITE.Depvar(n=5)表示将模型model-1的材料BPCOMPOSITE里的子程序相关参数设为5。语句前加上 # 号,表示是注释内容,这个语句将不被执行;使用中文注释

7、,要在文件最开始加上:# -*- 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 语言简介,保留字

8、段定义变量名、函数名的时候,避免使用保留字段。如:,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,Python

9、 语言简介,运算符主要有赋值运算符、算术运算符、逻辑运算符、关系运算符;下表按优先级排列,从上往下优先级增加。,不支持自加或自减运算,如:i+、i-;但类似 i+=1 这样的语句是可以的。,三、ABAQUS脚本编写,ABAQUS脚本编写,定义和导入模块在每个脚本文件的最开始处,首先要导入相应的ABAQUS模块;每个步骤均有对应的模块,如part模块,material模块、assembly模块等,通过以下语句可以直接导入cae模块的所有对象:from caeModules import *如果需要用到各种符号常数,如单元类型C3D8R,还要导入符号常数模块: from abaqusConstan

10、ts import * 定义和导入对象还需要导入相应的ABAQUS对象,包括Session对象(包括视口、远程队列、视图对象)Mdb对象(包括Model对象和Job对象)Odb对象通过类似如下的语句导入对象: from abaqus import *,ABAQUS脚本编写,创建新实体myModel = mdb.modelsModel-1myViewport=session.Viewport(name=Region syntax, origin=(20, 20), width=200, height=100)mySketch = myModel.Sketch(name=Sketch A, she

11、etSize=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# 创建新的视口

12、# 创建一个草图,并绘制两个矩形# 对上面创建的两个矩形进行拉伸操作,生成三维部件,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=

13、1, timePeriod=1)myPillarLoad = myModel.ConcentratedForce(name=pillarForce, createStepName=impact,region=(pillarVertices,), cf1=12.50E4)通过以上语句,装配实体,并施加边界条件。此处使用了findAt语句来查找顶点。,#导入实体,完成装配# 选择两个顶点# 创建静力分析步(static)# 在选择的顶点上施加集中力,ABAQUS脚本编写,findAt语句简介在Abaqus建模操作生成的rpy文件中,Abaqus将自动为模型的特征进行编号,每个节点(node)、单元

14、(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)如果后续对模型进行编辑(增加、删除),特

15、征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.materialsSte

16、el.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.partsDoorc = p.cellscells = c:region = p.setsSet-allp = mdb.modelsModel-1.partsDoorp.SectionAssignme

17、nt(region=region, sectionName=Section-1, offset=0.0),#定义材料“steel”。#定义材料“steel”的工程弹性常数。#定义截面属性“steel”,将材料“steel”赋予截面#c:可以选取全部的实体#定义集合“Set-all”,将全部实体定义成一个集合#将截面属性赋予给集合“Set-all”,ABAQUS脚本编写,布置种子a = mdb.modelsModel-1.rootAssemblye1 = a.instancesDoor-1.edgespickedEdges = e1: #e1:可以选取全部的边a.seedEdgeByNumber

18、(edges=pickedEdges, number=4)通过以上语句布置种子。a = mdb.modelsModel-1.rootAssemblypartInstances =(a.instancesDoor-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, memoryU

19、nits=PERCENTAGE, getMemoryFromAnalysis=True, explicitPrecision=SINGLE, nodalOutputPrecision=SINGLE, echoPrint=OFF, modelPrint=OFF, contactPrint=OFF, historyPrint=OFF, userSubroutine=, scratch=, multiprocessingMode=DEFAULT, numCpus=1)mdb.jobsJob-1.submit(consistencyChecking=OFF, datacheckJob=True),AB

20、AQUS脚本编写,参考资料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。,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号