使用python进行ABAQUS的二次开发的简要说明(byYoung2017.06.27)

更新时间:2023-07-05 00:59:56 阅读: 评论:0

使用python进行ABAQUS的二次开发的简要说明(byYoung2017.06.27)
(所有用词以英文为准,翻译仅供参考)
一、abaqus二次开发总述:
首先最重要的知识点需要明确,abaqus在求解核心(Solver/ Kernel)和图形用户界面(GUI)之间使用的交互语言天然就是python,因此使用python进行abaqus二次开发是十分自然的选择(当然你也可以用C++,但是鉴于python所拥有的各类开源库函数的优势,python应当是二次开发的首选)。abaqus已经使用python写好了很多用于计算、建模、GUI等操作的模块,因此二次开发的重点在于灵活调用这些模块,完成自己的设计计算需求。所以原则上,所有能通过abaqus/CAE交互完成的操作,使用脚本都可以实现。并且由于Python提供的丰富的函数资源库,会使得很多复杂的建模的过程更加参数化,更加可控,有时候甚至更加简单。
其次二次开发的学习要点在于勤查手册,其中Abaqus Scripting Ur's Manual和Abaqus Scripting Ur's Reference Manual是查阅的重点,其中后者是abaqus中各个object内置方法,路径,输入参数等的详细说明。
最后关于调用脚本的几种用法说明:
(1)直接在命令行调用
调用脚本并打开cae界面: abaqus cae script=myscript.py
调用用于可视化操作脚本,打开显示界面(注意:此时只有visualization模块被激活): abaqus cae viewer=myscript.pyautolisp
调用脚本在命令行执行,同时不打开GUI界面,但会进入python交互界面:abaqus cae noGUI=myscript.py
(2)在abaqus的GUI界面调用模具培训
santa fe按照Main Menu: File->Run Script,选择需要调用的脚本文件,abaqus会进行执行
(3)在abaqus的命令行交互界面调用(command line interface,CLI)
在abaqus的GUI界面打开之后,窗口的最下方会有命令输入的位置,在这里也可以调用python脚本,执行方法是键入命令:
execfile('myscript.py')
abaqus的python脚本其实和其他应用场景下的python脚本没有太多区别,只不过有很多abaqus已经开发好的对象库可供使用,其学习过程和学习任何其他python库都是一致的。因此这条在写python代码时的规律对于理解abaqus脚本中的各种现象同样很有帮助:一切皆对象(当然这也是python语言美感的来源之一)。
这里篇幅有限,无法展开介绍python编程,因此只明确python中的几个基本概念:
惊喜英文怎么写对象(object): 将具有特定数据结构与组织形式的数据和在数据上所定义的操作全部封装到一起的封装体称为对象;
成员(member):对象内所定义的数据;
方法(method):在对象内定义的对于数据的操作;
构造函数(constructor):一类特殊的方法,用于创建新的对象;
类(class):创建对象的模板,本质也是一种对象,但是更强调它的模板性;
模块(module):已经写好的类,对象,方法或者函数等等的集合,通过一系列操作完成某种特定的功能,module的作用在于方便代码复用,例如from abaqus import * 这个语句就是导入了abaqus这个模块,使得其中功能可以被脚本引用;
字典(dictionary):python中的一种数据类型,无序排列的(key,value)的pair的集合,在abaqus的脚本开发中是十分重要的概念。
二、abaqus python脚本构成简述:
尽管整体上看,abaqus的python脚本没有什么特殊之处,但是毕竟作为在abaqus环境下使用的脚本,还是有一些特殊之处是值得一提的。
首先介绍abaqus python脚本中几个比较重要的基本概念:
数据库(databa):负责存储模型的各种信息,本质上是一类特殊的对象,也可以理解成带有强烈abaqus特征的对象,比较典型的databa就是mdb;
容器(Repository):负责一对一少儿英语外教同一类型的对象的存储,可以视为python中的字典,只不过这
个字典专门用于存储某一类对象,比如dels中存储了当前环境下所建立的所有模型对象,通过对象的键值,可以实现对于特定对象的调用;
声明使用(Access):通过在脚本开头声明导入某类模块,从而获得该模块中对象、成员和方法的使用权(实际上新的ssion被打开时,所有模块都被装载了,大部分声明是为了可读性与完备性,但有一些声明是不可以缺少的,后文会提到)
国际民主日路径(Path):调用某个特定方法的具体语句实现,比如这里dels[name].parts[name].DatumAxisByCylFace就说明了使用DatumAxisByCylFace这个方法的完整路径,需要从mdb这个数据库出发,索引到叫name的model对象,在这个model对象下索引叫name的part对象,这个part对象里面定义了一个方法叫DatumAxisByCylFace。当然同一个方法的路径可以有很多,这一点应当与python语言内在的继承性有关,相似的对象(类)继承自同一个父类,那么不同对象下具有同样的方法其实并不奇怪;
参数(Argument):对象的方法在使用时所需要的输入参数;
2.1. 所有的脚本都必须保证以下面两个语句开头:铆钉英文
1.from abaqus import *
2.olivettifrom abaqusConstants import *
第一个语句保证脚本可以使用abaqus中基本的object,同时保证脚本可以使用默认的模型数据库(mdb),在abaqus中以mdb标识;
第二个语句保证Abaqus中定义的各个符号常量可以被脚本正确获取;
当然如果有涉及结果文件后处理还需要:
from odbAccess import *
flat如果涉及可视化操作则需要:
from visualization import *
2.2. 随后脚本会导入需要使用的具体的各个模块,例如:
1.import sketch
汉英翻译在线
2.import part
3.import asmbly
4.import material
5.import visualization
这一步的操作是为了保证所需要使用的对象的成员(Members)和方法(Methods)可以被脚本所使用,以material为例:
1.import material
2.dels[name].materials[name]
这里插一句,对于多数已经适应了面向过程编程的人而言,在使用面向对象语言时常常会有看不到赋值操作的慌张。因为乍看起来那个语句没有输出,但显然如果真的没有任何“输出”那必然是无效的编程语句,因此会感到十分困惑和迷茫。所以这里需要强调的是,在面向对象语言中,对象(Object)是数据(Member)和在数据上定义的操作方法(Methods)
的集合体,所以当我们使用一个对象的方法时,它所对应的数据成员有可能已经得到了修改,因此我们并不需要额外的赋值操作,对数据的操作(包括赋值)已经在对象的方法里预先定义好了,而这也是为什么人们觉得面向对象的封装性更好的原因。
这里给出一个材料定义的例子:
1.dels[crash].Material[steel]
2.dels[crash].materials[steel].Elastic(table=((30000000.0, 0.3), ))
3.elasticityType =&dels[crash].materials[steel].pe
通过观察,其实我们已经能发现一个小规律,那就是在abaqus中,同样名称的单词(如这里的material),当它首字母大写(通常作为单数)出现时一般是构造函数(Constructor),而当它全小写(通常作为复数)出现时,它一般是类似字典的容器(abaqus里叫做

本文发布于:2023-07-05 00:59:56,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/167316.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:脚本   对象   使用   方法
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图