Python语言在Abaqus中的应用---4.2输出数据库对象模型

提交分析作业后,Abaqus生成的输出数据库包括模型数据(model data)结果数据(result data)

1、模型数据(model data)
模型数据用来描述根装配(root assembly)中的部件和部件实例。例如:节点坐标、集合定义、单元类型等。

2、结果数据(results data)
结果数据用来描述各种分析结果。例如:应力、应变和位移等。读者可以根据输出请求来设置结果数据。结果数据既可以是场数据,也可以是历史数据。

4.2.1 模型数据
模型数据用来定义分析模型。例如:部件、材料、边界条件、物理常数等。Abaqus脚本接口未将所有的模型数据都写到输出数据库。例如:编写脚本时很少访问荷载,因此荷载不会写到模型数据库中。存储在输出数据库中的模型数据主要包括:部件(parts)、根装配(root assembly)、部件实例(part instances)、区域(regions)、材料(materials)、截面(sections)、截面分配(section assignments)和截面分类(section categories),上述模型数据均存储在Abaqus脚本接口对象。

1、部件
在装配模块中,同一个部件可以创建多个部件实例。部件不能直接参与有限元分析,输出数据库的部件包含节点、单元、表面和集合的信息。

2、根装配
根装配包含定位部件实例的相关信息,有限元需要对根装配的边界条件、约束、相互作用和加载历史。每个输出数据库只能包含一个根装配。

3、部件实例
装配模块中对部件实例进行定位和装配,在Part模块中定义的所有部件特征都将由部件实例继承,即:所有部件特征都是该部件实例的特征。根装配中每个部件实例的定位都是相互独立的。

4、材料
材料模型可以重复使用,根装配中的部件实例可以用相同的材料模型。模型数据库中可能定义了多个材料模型,但只有根装配使用了的材料模型才会复制到输出数据库中。

5、截面
在Property模块中定义的材料属性与部件实例毫无关系,Abaqus/CAE通过截面把两者联系起来。首先Abaqus将材料属性赋予给某种类型的截面(如三维实体部件选择Solid Section),此时该截面拥有这种材料属性,然后再将该截面分配给对应的部件实例,此时部件实例就拥有与截面对应的材料属性。只有根装配使用过的截面才会复制到输出数据库中。

6、截面分配
截面分配指的是将定义的截面分配给对应的部件实例或部件实例对应的区域。输出数据库中的截面分配将与分配区域保持关联。

7、截面分类
截面分类将相同截面定义的区域组集在一起。例如:将使用的5个截面点的壳截面区域组集在一起。同一个截面分类可以通过截面点来判断分析结果的位置。

扫描二维码关注公众号,回复: 16307768 查看本文章

8、相互作用
相互作用主要用于定义分析中表面与表面之间的接触关系。只有接触对定义的相互作用才会写出到输出数据库中。

9、相互作用特性
相互作用特性定义了相互作用表面的物理特性(例如:切向和法向特性)。值得注意的是,只将切向摩擦特性写出到输出数据库。

上述模型数据对象是输出数据库的模型数据,与Abaqus/CAE的模型数据库储存的对象类似,不同之处在于:模型数据库中可能包含多个模型,编写脚本时需要指定模型名,输出数据库只包含一个模型,编写脚本时无需指定模型名。

下例代码引用了模型数据库中的实例对象housing:

mdb = openMdb(pathName = "///文件路径///")
myModel = mdb.models['Transmission']
myPart = myModel.rootAssembly.instances['housing']

第1行调用openMdb方法通过路径打开模型数据库,赋值变量给mdb
第2行打开模型数据库的名为“Transmission”的模型,赋值给变量myModel
第3行打开模型中根装配的部件实例“housing”赋值给变量myPart。

下列代码表示引用输出数据库(odb)中同一实例对象:

odb = openOdb(path = "///文件路径///")
myPart = odb.rootAssembly.instances['housing']

第1行代码调用openOdb方法打开路径下的输出数据库
第2行调用输出数据库的实例对象“housing”

调用prettyPrint可以查看输出数据库的状态和对象模型的层次结构关系。

例如:下列代码给出悬臂梁模型输出数据库的显示结果。

from odbAccess import *
from textRepr import *
odb = openOdb(path = '///文件路径///')
prettyPrint(odb, 2)

4.2.2 结果数据
结果数据指的是用户指定的有限元分析结果。Abaqus脚本接口将输出数据库中的结果数据分为下列几部分:

1、分析步(steps)
Abaqus有限元分析往往包含一个或者多个分析步,每个分析步包含对应的分析类型。例如:访问输出数据库中的分析步对象Crush命令如下:

crushStep = odb.steps['Crush']

2、帧(frames)
输出数据库中每个增量步的分析结果成为帧(frame),每个分析步包含多个帧。频率(frequency)提取分析或屈曲(buckling)分析将每个特征模块单独存储为一帧。访问Crush分析步最后一帧的命令如下:

crushFrame = crushStep.frames[-1]

3、场输出(field output)
场输出可以输出某个计算结果的所有分量,数据信息量非常大,包括:单元编号、节点编号、位置、积分点、截面点、类型等。为了提高脚本的执行效率,可以只输出结果数据的子集,即:自定义输出区域(例如:单元集)。下列命令表示输出应力场变量S:

stress = crushFrame.fieldOutputs('S')

4、历史输出(history output)
历史输出用于为某个点或模型的小部分区域定义结果输出(例如:能量),输出频率一般较高。与场输出不同,历史输出可以输出分析结果的某个单独变量(例如:某个应力分量)。下列命令表示输出位移的第2个分量U2:

u2Deflection = endPoint.historyOutputs['U2']

根据输出类型,历史输出中的HistoryRegion对象可以定义为:节点、积分点、某个区域、材料点或整个模型。访问历史输出所在区域的命令如下:

endPoint = crushStep.historyRegions['end point']

HistoryRegion对象还可以包含多个分析步所有时间间隔的历史输出结果。例如:(t1,U21),(t2,U22)等。给定历史输出对象u2Deflection后,提取结果的命令:

for time, value in u2Deflection.data:
	print("Time:", time, "U2 deflection:", value)

猜你喜欢

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