Python语言在Abaqus中的应用---2.2.2Abaqus脚本接口中数据类型(数组、布尔类型和序列)

Abaqus脚本接口的数据类型分为:
1、符号常数(symbolic constant)
2、库(repository)
3、数组(array)
4、布尔类型(Boolean)
5、序列(sequence)

前一篇文章讲述了符号常数和库
本篇来讲一下其余三个数组、布尔类型和序列
一、数组(arrays)
数组是一个被索引的容器,与序列中的数组类似。
如:节点数组:MeshNodeArrays、单元数组:MeshElementArrays

二、布尔类型(Booleans)
Python语言中的布尔类型为<type ‘bool’>
布尔类型定义了两种布尔值:True和False
Abaqus脚本接口中也定义了布尔类型的对象(Boolean objects)
由符号常数对象(SymbolicConstant objects)派生而来,其值为ON和OFF
如:noPartsInputFile是Model对象的成员,它表示是否将部件和装配件信息写入INP文件,类型为<type’AbaqusBoolean’>
布尔类型的使用方法和符号常数的类似,由于布尔类型包含判断关系,可以用来测试布尔类型的值
如:视口对象中包含成员titleBar,它属于布尔类型,用来确定是否显示标题栏

if vp.titleBar:    #vp代表一个视口对象
	print("The title bar will be displayed.")

第1行代码判断vp.titleBar是否为正,如果判断结果为ON,则执行第2行代码
编写脚本时,读者一定要避免出现不确定的布尔值

newModel = mdb.ModelFromInputFile(name = "beamTutorial", 
inputFileName = "Deform")
newModel.setValues(noPartsInputFile = False)
print(newModel.noPartsInputFile)

第1行代码调用构造函数ModelFromInputFile创建名为beamTutorial的新模型,并赋予给变量newModel
第2行代码用方法setValues设置noPartsInputFile为False
第3行代码输出noPartsInputFile的布尔值
第4行代码输出结果为OFF,但是代码中尾明确表示是否写入部件和装配信息,阅读脚本时容易引起混淆
为了避免出现混淆现象,可以根据不同的布尔值,使用分支判断语句执行不同的代码,测试布尔值应该避免出现0、OFF或False等特征值

if newModel.noPartsInputFile:
	print("Input file will be written without parts and assemblies")
else:
	print("Input file will be written with parts and assemblies")

第1行代码判断newModel.noPartsInputFile的布尔值,如果判断结果为ON,则执行第2行代码,如果为OFF,则执行第4行代码。
附:新版本的Abaqus软件没有了Abaqus布尔类型,读者需要使用Python语言中的布尔类型

三、序列(sequences)
Abaqus脚本接口某些方法的参数是由浮点型或整型数据组成的序列。
如:在Abaqus/CAE的Property模块中,定义随温度变化的弹性模量和泊松比的对话框如图所示:
在这里插入图片描述
abaqus.rpy或PythonReader软件将记录与对话框等效的下列命令:

mdb.models["Model-1"].materials["Steel"].Elastic(temperatureDependency
= ON, table = ((200000000000.0, 0.3, 0.0), (210000000000.0, 0.3, 100.0), 
(220000000000.0, 0.3, 200.0), (230000000000.0, 0.3, 300.0)))

此外,Abaqus脚本接口还定义了由相同类型对象组成的专门序列,包括:
1)由几何对象(顶点、边等)组成的GeomSequence序列
2)由节点或单元组成的MeshSequence序列
3)由表面组成的SurfSequence序列
下列代码通过对矩形草图(70×70)进行拉伸(厚度为20),创建了名为Switch的三维变形体部件:

from abaqusConstants import *
mdb.Model("Body")
mySketch = mdb.models["Body"].ConstrainedSketch(name = "__profile__", 
sheetSize = 200.0)
mySketch.rectangle(point1 = (0.0, 0.0), point2 = (70.0, 70.0))
switch = mdb.models["Body"].Part(name = "Switch", dimensionality = 
THREE_D, type = DEFORMABLE_BODY)
switch.BaseSolidExtrude(sketch = mySketch, depth = 20.0)

下面介绍在命令行接口中查询Switch对象的成员和类型的方法
1)调用__members__方法查询三维部件Switch的所有成员

print(mdb.models["Body"].parts["Switch"].__members__)

2)显示edges序列的相关信息:

print("Single edge type = ", type(switch.edges[0]))

本行代码将输出switch对象第1条边的类型。如果只有一条边,输出类型为Edge。

print("Edge sequence type = ", type(switch.edges))

本行代码将输出switch所有边的类型,输出结果为EdgeArray

print("Members of edge sequence =", switch.edges.__members__)

本行代码将输出边的所有成员,结果为pointsOn

print("Number of edges in sequence =", len(switch.edges))

本行代码将输出Edges序列中元素的个数,输出结果为12
下列有几种方法查询对象的属性
1)调用type()方法查询数据类型
2)调用__members__方法查询所有成员
3)调用__methods__方法查询方法
4)调用del方法删除对象

猜你喜欢

转载自blog.csdn.net/qq_35412059/article/details/105558255