您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 理学 > ABAQUS中mdb对象详细讲解
ABAQUSMdbobject介绍1ABAQUSpython中的三大对象:Session、Mdb和Odb对象,使用python脚本进行编写程序的时候需要创建这三大对象的实例,方法为:fromabaqusimport*这样就分别导入了Session、Mdb和Odb对象,同时并实例化了三个对象,其名称分别为session、mdb和odb。2ABAQUSMdb对象:Mdb对象包括了两大对象:jobs对象和models对象3ABAQUS/CAE模块导入模块的方法:importmodulename4对象的复制方法:使用结构来进行复制:ObjectName(name=’name’,objectToCopy=objectToBeCopied)复制对象可以在同一个mdb中进行复制,也可以在不同对象模型中进行复制[注意]:这里面的ObjectName必须是容器(Container)例如:importmaterialimportsectionimpactModel=mdb.Model(name=’ModelA’)mySteel=impactModel.Material(name=’Steel’)#CreateasectionfirstSection=impactModel.HomogeneousSolidSection(name=’steelSection1’,material=’Steel’,\thickness=1.0)#CopythesectionsecondSection=impactModel.Section(name=’steelSection2’,objectToCopy=firstSection)5删除对象使用del语句来删除某个对象,但是需要注意的是,当在使用del来删除某个对象所指向的变量时,仅仅删除的是该变量,没有删除该对象,此时需要再用del语句来删除该对象的完整路径,例如:myMaterial=mdb.models[‘Model-1’].Material(name=’aluminum’)delmdb.models[‘Model-1’].materials[’aluminum’]#此时删除了这个材料对象,但是没有删除myMaterial变量,该变量仍然存在;delmyMaterial#此时才删除了myMaterial变量【注意】:同理先删除对象制定的变量名时,该对象仍然存在,可以将该对象重新指定一个变量,也可以进行删除对象操作6ABAQUS中库(Repository)和结构(Structure)的关系:ABAQUS中的结构是一种方法,该方法是专门用于生成对象的,用结构生成的对象之间具有相似的类型,这些对象就构成了一个库。结构的首字母总是大写的且是单数表示的,生成相应的库的名称与结构的名称一致,只是全用小写字母表示且是复数形式,访问一个库中的某个对象方法:库名[‘结构生成的对象名称(不是该对象所指向的变量名)’]7ABAQUS/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)Scriptnamespace这Scriptnamespace命名空间的名称为main,运行脚本文件和在CAE中输入命令均在Scriptnamespace命名空间中进行。(2)JournalnamespaceGUI(即利用CAE)进行的操作是在Journalnamespace空间中进行的。这些变量存储在replayfile中(即abaqus.rpy文件),故应注意进行CAE操作建模和利用脚本文件生成或在CLI窗口中输入命令在是在不同命名空间中进行的,即变量存储于不同命名空间中。即不能CAE和脚本命令混合使用,但是脚本文件和在窗口中输入脚本命令是可以同时配合使用的。例如:利用CAE进行操作,生成的replayfile为:p1=mdb.models[‘ModelA’].parts[‘part3DA’]e=p1.edgesedges=(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脚本参考文件”Regioncommands”)a.施加载荷b.划分网格时,需要单元类型和划分网格指定区域c.定义集合ABAQUS的区域要么是一个预先定义的一个集合(包括节点集和单元集)对象或一个面对象,要么是一个临时区域对象(temporaryRegionobject)(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脚本参考手册,section49.5.1”Number=float(getInput(‘Enteranumber:’))b.getWarningReply():参数default=’字符串’,该字符串为默认显示在对话框中的值;例如:number=getInput('Enteranumber:',default='200')c.还可以对该函数进行设置,使得用户的鼠标停留在对话框上时显示一些提示信息,格式为:getInput(‘Enteranumber:\tEnterthenumberofnodestodelete’)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=’Specifyblockdimensions:’,dialogTitle=’CreateBlock’)printlength,width,heightc.参数中的字符串序表是一个内部元素也是一个字符串序表,其内部序表格式为:(‘对话框的描述:’,’默认值’),如果没有默认值,则也必须用(‘对话框的描述:’,’’)来代替,不能省略’’;label参数和dialogTitle参数为可选参数,其含义见上述例子代码。(3)getWarningReply()函数该函数返回一个警告窗口,框口中显示的内容由必填参数message提供,按钮的字符由必填参数buttons提供,其中buttons为一个元表序列,同时函数的返回值跟按钮的字符是一致的。例子:fromabaqusimport*reply=getWarningReply(message='Okaytocontinue?\norNotoreturnNone!',buttons=(YES,NO))12与ABAQUS/Standard和ABAQUS/Explicit的计算过程进行协同操作(1)处理来自ABAQUS/Standard和ABAQUS/Explicit的信息使用定义信息回调函数(callbackfunction),当ABAQUS/CAE从ABAQUS/Standard或者ABAQUS/Explicit中得到指定的信息,则这个信息回调函数就会执行。(详情见ABAQUS用户脚本文件的Chapter29,”Messagingcommands”)a.定义信息回调函数的格式:deffunctionName(jobName,messageType,data,userData)b.参数详解:1JobName:用于指定用于监测的job名称,如果想与每个job均进行信息监测,则ANY_JOB2messageType:这个参数只能用ABAQUS中的常量符号,如果想要出现任何符号就要执行信息回调函数,则使用ANY_MESSAGE_TYPE,常见的符号常量有:3data:是一个数据对象,包含了信息数据,该对象包含了如下一些成员:---clientHost:计算机名的一个字符串---clientName:可能的取值为:---phase:符号常量用于指定分析类型,可能的取值为:---processId:一个整数,用于指定分析过程;---threadId:一个整数,只用于平行计算或多核处理中,通常设为0;---timeStamp:一个整数,用于指定信息。4userData:任意一个对象类型或None
本文标题:ABAQUS中mdb对象详细讲解
链接地址:https://www.777doc.com/doc-6164364 .html