99网
您的当前位置:首页ABAQUS中mdb对象详细讲解

ABAQUS中mdb对象详细讲解

来源:99网


ABAQUS Mdb object介绍

1 ABAQUS python中的三大对象:

Session、Mdb和Odb对象,使用python脚本进行编写程序的时候需要创建这三大对象的实例,方法为:from abaqus import * 这样就分别导入了Session、Mdb和Odb对象,同时并实例化了三个对象,其名称分别为session、mdb和odb。 2 ABAQUS Mdb对象:

Mdb对象包括了两大对象:jobs对象和models对象

3 ABAQUS/CAE模块

导入模块的方法:import modulename

4 对象的复制方法:

使用结构来进行复制:ObjectName(name=’name’, objectToCopy=objectToBeCopied) 复制对象可以在同一个mdb中进行复制,也可以在不同对象模型中进行复制 [注意]:这里面的ObjectName必须是容器(Container) 例如:

import material import section

impactModel=mdb.Model(name=’Model A’) mySteel=impactModel.Material(name=’Steel’) #Create a section

firstSection=impactModel.HomogeneousSolidSection(name=’steelSection 1’,material=’Steel’,\\

thickness=1.0)

#Copy the section

secondSection=impactModel.Section(name=’steelSection 2’,objectToCopy=firstSection)

5 删除对象

使用del语句来删除某个对象,但是需要注意的是,当在使用del来删除某个对象所指向的变量时,仅仅删除的是该变量,没有删除该对象,此时需要再用del语句来删除该对象的完整路径,例如:

myMaterial=mdb.models[‘Model-1’].Material(name=’aluminum’) del mdb.models[‘Model-1’].materials[’aluminum’] #此时删除了这个材料对象,但是没有删

除myMaterial变量,该变量仍然存在;

del myMaterial #此时才删除了myMaterial变量

【注意】:同理先删除对象制定的变量名时,该对象仍然存在,可以将该对象重新指定一个

变量,也可以进行删除对象操作

6 ABAQUS中库(Repository)和结构(Structure)的关系:

ABAQUS中的结构是一种方法,该方法是专门用于生成对象的,用结构生成的对象之间具有相似的类型,这些对象就构成了一个库。

结构的首字母总是大写的且是单数表示的,生成相应的库的名称与结构的名称一致,只是全用小写字母表示且是复数形式,访问一个库中的某个对象方法:库名[‘结构生成的对象名称(不是该对象所指向的变量名)’]

7 ABAQUS/CAE序列(sequence) (1) 材料参数表(table)

材料参数表的组织形式为float形式的序表,参数表的行的索引值与序表的索引值是保持一致的,即第i行的参数数据按照“从左到右”的顺序依次放入到该参数表对于的序表的第i个索引值下面。 【注】:序表中数据格式不要求保持一致,但是定义了一个序表后就不能再修改了。 (2) 几何序列(GeomSequence)

一个部件的几何对象,如边(edge或edges)、顶点(vertices)、面(faces)等,这些都是序列对象,它们都有各自的成员(members)和方法(methods)。 【注】:可以使用对象的成员’_members_’和’_keys_’分别列出该对象的所有成员和方法;使用len()函数来查询一个序列的长度。 (3) 网格序列(MeshSequence)

这个序列分别包含网格节点和网格单元两个序列。 (4) 面序列(SurfSequence)

所有面构成的一个序列

8 命名空间(Namespace)

命名空间用于存储变量,同一命名空间中不允许存储同名变量,但是不同命名空间中可以存储同名变量,在ABAQUS的脚本语言中存在两种命名空间,在运行脚本文件时只能在一个命名空间中。 (1) Script namespace

这Script namespace命名空间的名称为main,运行脚本文件和在CAE中输入命令均在

Script namespace命名空间中进行。 (2) Journal namespace

GUI(即利用CAE)进行的操作是在Journal namespace空间中进行的。这些变量存储在replay file中(即abaqus.rpy文件),故应注意进行CAE操作建模和利用脚本文件生成或在CLI窗口中输入命令在是在不同命名空间中进行的,即变量存储于不同命名空间中。即不能CAE和脚本命令混合使用,但是脚本文件和在窗口中输入脚本命令是可以同时配合使用的。 例如:

利用CAE进行操作,生成的replay file为: p1=mdb.models[‘Model A’].parts[‘part 3D A’] e=p1.edges edges=(e[23],)

p1.PartitionEdgeByParam(edges=edges,parameter=0.5)

在利用CLI窗口输入下列命令来分割这条边

p1.PartitionEdgeByParam(edges=edges,parameter=0.75) 此时会提示错误:NameError:p1

这是由于二者命名空间不同,上面的p1存在于Journal命名空间中,故在Script命名空间中找不到p1,所以会出错。 【注】:虽然存在两种命名空间,二者上的变量不能互相利用,但是对象库是通用的,即利用CAE建立的库,在脚本文件和命令中均可以使用,需要使用库的全部路径和库的方法,来完成不同建模方法之间的协调工作。

9 指定视图窗口中显示的内容

利用脚本文件可以很方便的指定视图窗口中想要显示的内容,这些内容包括下面的几种对象类型:

改变视图窗口内容的语法为:

session.viewports[‘name’].setvalues(displayedObject=对象变量)

其中对象变量的类型如上所述,如果对象变量为None,则ABAQUS/CAE将会显示一个空白窗口。

10 指定区域

ABAQUS中常常需要指定一个区域,如:(详情参见:ABAQUS脚本参考文件”Region commands”) a. 施加载荷

b. 划分网格时,需要单元类型和划分网格指定区域 c. 定义集合

ABAQUS的区域要么是一个预先定义的一个集合(包括节点集和单元集)对象或一个面对象,要么是一个临时区域对象(temporary Region object) (1) 直接定义区域

ABAQUS中点、边、面和体均有相应的ID编号,这个编号会自动发生改变(当模型的特征发生改变或不同软件版本),因此,在定义区域时,不要使用ID编号来定义,而是利用findAt()方法来定义点、边、面和体,findAt()方法中的参数为任意个数的点的坐标,返回一个包含参数中包含点的对象。 【注】:findAt()参数中所给定的点不能被其他边、面或体所占有,如果给定的点是两条直线的交点,则findAt()返回的是电脑搜索到的第一条直线,同时点的参数必须写成序表的形式,如:topFace=doorInstance.faces.findAt(((-25,30,10),)) (2) 对已存在的区域进行指定操作

11 人机交互模式

ABAQUS提供了三个要求用户输入并提取用户输入数据的函数: (1) getInput()函数:

a. getInput(‘strings’):其中’strings’为提示用户输入数据的文字,用户在一个文本框中输入一个数据;getInput()函数返回的值为字符串。详细参见“ABAQUS脚本参考手册,section 49.5.1”

Number=float(getInput(‘Enter a number:’))

b. getWarningReply():参数default=’ 字符串’,该字符串为默认显示在对话框中的值; 例如:number=getInput('Enter a number:',default='200')

c. 还可以对该函数进行设置,使得用户的鼠标停留在对话框上时显示一些提示信息,格式

为:getInput(‘Enter a number:\Enter the number of nodes to delete’) d. 用户点击OK,则返回用户填入的值,点击Cancel,则返回None; (2) getInputs()函数

a. 该函数返回一个字符串序列,该序列元素为用户填入的数据,如果用户按Cancel,则返

回None;

b. 该函数的必填参数为:fields=字符串元表序列,例如定义一个元表序列m:

m=((‘Width:’,’10’),(‘Length:’,’20’),(‘Height:’,’30’))

length,width,height=getInputs(fields=m,label=’Specifyblock dimensions:’,dialogTitle=’Create

Block’)

print length,width,height

c. 参数中的字符串序表是一个内部元素也是一个字符串序表,其内部序表格式为:(‘对话

框的描述:’,’默认值’),如果没有默认值,则也必须用(‘对话框的描述:’,’’)来代替,不能省略’’;label参数和dialogTitle参数为可选参数,其含义见上述例子代码。 (3) getWarningReply()函数

该函数返回一个警告窗口,框口中显示的内容由必填参数message提供,按钮的字符由必填参数buttons提供,其中buttons为一个元表序列,同时函数的返回值跟按钮的字符是一致的。 例子:

from abaqus import *

reply=getWarningReply(message='Okay to continue?\\nor No to return None!',buttons=(YES,NO))

12 与ABAQUS/Standard和ABAQUS/Explicit的计算过程进行协同操作 (1) 处理来自ABAQUS/Standard和ABAQUS/Explicit的信息

使用定义信息回调函数(callback function),当ABAQUS/CAE从ABAQUS/Standard或者ABAQUS/Explicit中得到指定的信息,则这个信息回调函数就会执行。(详情见ABAQUS用户脚本文件的Chapter 29,”Messaging commands”) a. 定义信息回调函数的格式:

def functionName(jobName, messageType, data, userData) b. 参数详解:

<1> JobName:用于指定用于监测的job名称,如果想与每个job均进行信息监测,则

ANY_JOB

<2> messageType:这个参数只能用ABAQUS中的常量符号,如果想要出现任何符号就要执

行信息回调函数,则使用ANY_MESSAGE_TYPE,常见的符号常量有:

<3> data:是一个数据对象,包含了信息数据,该对象包含了如下一些成员:

---clientHost:计算机名的一个字符串 ---clientName:可能的取值为:

---phase:符号常量用于指定分析类型,可能的取值为:

---processId:一个整数,用于指定分析过程;

---threadId:一个整数,只用于平行计算或多核处理中,通常设为0; ---timeStamp:一个整数,用于指定信息。

<4>userData:任意一个对象类型或None

因篇幅问题不能全部显示,请点此查看更多更全内容