ABAQUS软件提供了大量可输出的场变量类型,用来进行结果分析,但仍然有一些场变量ABAQUS软件并不支持,对于这种情形我们可以通过以下两种方式向ABAQUS结果文件中加入:
(1)使用USDFLD子程序,对于计算过程有无影响的场变量均适用,可以参考本公众号的早期文章【阿信ABAQUS子程序(7)】USDFLD;
(2)使用Python脚本程序,该方式适用于对已经计算完的ODB结果文件加入新的场变量,该变量对计算过程不产生影响,仅做读取——计算——写入。
下面以一个例子来说明如何使用Python脚本程序对已有的计算结果文件加入新的场变量。需要说明的一点是,修改结果文件不能采用只读的模式打开。
如下图所示,我们将计算结果中的节点温度NT11提取出来,并创建新的场变量UserTemp到结果文件中,计算结果对比如下图所示。显然,新加入场变量和软件计算结果吻合,程序正确。具体实现方式见图后代码。
# coding: utf-8
###############################
# Python 脚本创建新的场变量 #
###############################
from odbAccess import *
odbName = 'heattransfermanifold.odb'
odb = openOdb(odbName)
stepName = 'heattransfer'
frameRepository = odb.steps[stepName].frames
for i in range(len(frameRepository)):
oldField = frameRepository[i].fieldOutputs['NT11']
newField = frameRepository[i].FieldOutput(name='UserTemp',
description='A simple test', type=SCALAR)
newField.addData(field=oldField)
odb.close()