1,符号常值(SymbolicConstants)
在进行编程过程中有很多函数需要默认的参数,比如弹性材料对象的各项同性,正交(ISOTROPIC,ORTHOTROPIC)等性质均为其材料的默认参数种类。
例如下面程序中的[type=ORTHOTROPIC]
mdb.models['Model-1'].materials['Material-3'].Elastic(type=ORTHOTROPIC, table=(
(1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0), ))
这些参数全部是由大写字母组成,其中大部分SymbolicConstants都是在模块AbaqusConstants中定义的,另外有一小部分是在Abaqus模块中定义,在使用之前应将其导入到当前的工作空间中。
from AbaqusConstants import *
from SymbolicConstants import *
2,布尔值(Booleans)
Python中的布尔值为Ture和False,其类型为bool,Abaqus中自定义了一种布尔对象:ON和OFF。上述两种布尔值是通用的,例如下面两段程序是一样的:
程序段1:
session.viewports['Viewport: 1'].partDisplay.geometryOptions.setValues(
referenceRepresentation=OFF)
程序段2:
session.viewports['Viewport: 1'].partDisplay.geometryOptions.setValues(
referenceRepresentation=False)
3,特有的模型对象
Abaqus中有许多的特定对象。大的有模型数据相关对象(MDB)、结果数据相关对象(ODB)和视图对象相关对象(Session);模块级别的对象有部件对象(Part)、材料对象(Material)、载荷步对象(Step)等;细节级别的对象有几何节点(Vertgex)、几何边(Edge)、几何面(Face)、集合块(Cell)、表面(Surface)网格节点(Node)和网格单元(Element)等。
如下定义程序:
g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints
4,序列(Sequence)
Abaqus中的序列可以分为4中:数据序列、几何序列、网格序列和表面序列。
数据序列(Table)
mdb.models['Model-1'].materials['steel'].Elastic(table=((210000.0, 0.1), ))
如上段程序中定义材料的弹性模量和泊松比使用了该类型序列,使用type来查看该对象:
type(mdb.models['Model-1'].materials['steel'].Elastic(table=((210000.0, 0.1), )))
<type 'tuple'>
可以看出这个数据序列就是标准的Python提供的二元数组,但是其他三个序列均是Abaqus所特有的的数据类型。
几何序列(GeomSequence)
这里的几何包括点(Vertex),边(Edge)、面(Face)和体(Cell)。对象名字分别是:VertexArray、EdgeArray、FaceArray和CellArray。这几种序列通常在定义边界条件和载荷,绘制网格以及赋予材料界面截面属性等函数的主要输入。
如下定义边界条件(左端加入固定约束):
a = mdb.models['Model-1'].rootAssembly
v1 = a.instances['beam-1'].vertices
verts1 = v1.getSequenceFromMask(mask=('[#1 ]', ), )
region = a.Set(vertices=verts1, name='Set-1')
mdb.models['Model-1'].DisplacementBC(name='BC-1', createStepName='Step-1',
region=region, u1=0.0, u2=0.0, u3=0.0, ur1=0.0, ur2=0.0, ur3=0.0,
amplitude=UNSET, fixed=OFF, distributionType=UNIFORM, fieldName='',
localCsys=None)
Abaqus提供了几种可以根据一个集合序列生成一个细心地集合序列的方法:
findAt(..) | 使用一组坐标来查找并生成满足条件的集合序列 |
getSequenceFromMask(...) | 使用压缩序列生成几何序列 |
getByBoundingBox(...) | 生成在指定方形区域中的几何组成的几何序列 |
getByBoundingCylinder(...) | 生成在指定圆柱区域中的几何组成的几何序列 |
getByBoundingSphere(...) | 生成在指定圆形区域中的几何组成的几何序列 |
getBoundingBox(...) | 获取某个几何序列的坐标极限 |
网格序列(MeshSequence):
这里序列由一系列的网格节点(node)、单元(element)以及其表面(Face)和边(Edge)所组成序列。MeshNodeArray、MeshElementArray、MeshFaceArray和MeshEdgeArray。
sequenceFromLabels(...) | 通过指定网格或者节点的编号来建立对应的网格序列 |
getSequenceFromMask(...) | 使用压缩序列生成网格序列 |
getByBoundingBox(...) | 生成在指定方形区域中的网格或者节点组成的网格序列 |
getByBoundingCylinder(...) | 生成在指定圆柱区域中的网格或者节点组成的网格序列 |
getByBoundingSphere(...) | 生成在指定圆形区域中的网格或者节点组成的网格序列 |
getBoundingBox(...) | 获取某个网格序列的坐标极限 |
表面序列(SurfaceSequence):
表面序列是一种特殊的符合序列,其中的元素可以是边,面,单元或者节点。该类型中的面需要考虑方向,因此其参数中常常包含便是方向的参数。比如,对于一般的部件表面,存在两个参数side1Face/side2Face来指明面的取向;而对于六面体网格,每个面都分别使用face1Elements/face2Elements等来指定具体的面。
5,仓库(Repositories)
仓库是用来存储特定对象的容器,例如step仓库用来存储模型中定义的所有steps。一个仓库映射一系列的信息,就和Python中的字典一样,但是仓库中的对象只能是同一类型的。
例如,下免得仓库包含模型数据库中所有的model:
mdb.models
下面仓库则包含Model—1中所有的部件:
mdb.models['Model-1'].parts
和字典一样,你可以通过键值访问仓库中的对象,键值通常是你建立对象时在构建函数命令中提供的名称。例如,Viewport构造函数创建了新的Viewport对象在viewports仓库中:
session.Viewport(name='Side view', origin = (10,10), width=50, height=50)
这个Viewport对象的键值就是'Side view',可以使用这个键值去访问这个特定的Viewport对象,例如:
session.viewports['Side view'].viewportAnnotationOptions.\ setValues(legend=OFF, title=OFF)
通过将一个仓库中的对象进行命名可以增加程序的可读性,例如,可以将Viewport命名为myViewport来重新编写上述声明:
myViewport = session.viewports['Side view'] myViewport.viewportAnnotationOptions.setValues( legend=OFF, title=OFF)
通常,如果使用者可以创建对象,他的仓库键值是一个字符串。在一些情况下爱Abaqus/CAE创建的对象的键值可以使字符串、整数或者SymbolicConstant
和字典一样,你可以使用keys()去访问仓库键值。
>>> session.Viewport(name='Side view')
>>> session.Viewport(name='Top view')
>>> session.Viewport(name='Front view')
>>> for key in session.viewports.keys():
... print key
Front view
Top view
Side view
使用changeKey()方法来修改字典中键值名称:
myPart = mdb.models['Model-1'].Part(name='housing', dimensionality=THREE_D, type=DEFORMABLE_BODY) mdb.models['Model-1'].parts.changeKey(fromName='housing', toName='form')
参考:
[1]《ABAQUS Python二次开发攻略》
[2]http://dsk.ippt.pan.pl/docs/abaqus/v6.13/books/cmd/default.htm