首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python提取ABAQUS结果数据

当我们需要根据现有的理论知识,采用MATLAB等软件对有限元计算结果进行处理时,可以采用Python提取ABAQUS数据。在采用Python对ABAQUS结果提取之前,首先我们要了解ABAQUS odb文件结构。

ABAQUS odb文件结构

实例:(采用ABAQUS 2017调试)

(1)查询ABAQUS数据结构

#!/user/bin/python

# -*-coding:UTF-8 -*-

#***************************************

#**程序提取场变量输出**

#**主要为梁单元应力、内力和节点位移**

#***************************************

#导入模块

fromodbAccess import*

fromabaqusConstants import*

importsys

importos

odb =openOdb(path='C:\\Temp\\shangtest.odb')

cpFile=open('artlcF1.txt','w')

#----------------------------------------------------------------------------------------

#创建变量topCenter,得到单元集CENT

topCenter=odb.rootAssembly

printtopCenter

(2)采用Python提取位移

fromodbAccess import*

fromabaqusConstants import*

importos

myodb=openOdb(path='C:\\Temp\\jieguosuchu.odb')

RS=myodb.steps['Step-3'].frames[1].fieldOutputs['U'].values

cpFile=open('distance.txt','w')

for i inRS :

cpFile.write('%d %7.4f %7.4f\n' % (i.nodeLabel,i.data[0],i.data[1]))

else:

cpFile.close()

(3)采用Python提取mises应力

importos

myodb=openOdb(path='Job-1.odb')

cpFile=open('artlcF1.txt','w')

RF=myodb.steps['Step-1'].frames[1].fieldOutputs['S'].values

for i inrange(len(RF)) :

cpFile.write('%s\n' % (RF[i].mises))

else:

cpFile.close()

(4)提取节点集合上的位移

fromodbAccess import*

fromabaqusConstants import*

importsys

importos

odb =openOdb(path='C:\\Temp\\shangtest.odb')

#创建变量lastFrame,得到载荷步Step-1的最后一帧

lastFrame= odb.steps['Step-3'].frames[-1]

# Createa variable that refers to the displacement 'U'

# in thelast frame of the first step.

#创建变量displacement,得到最后一帧的位移场数据

displacement= lastFrame.fieldOutputs['U']

#创建变量center,得到节点集PUNCH

center =odb.rootAssembly.instances['SHANGBIAN-1'].\

nodeSets['SHANGTEST']

#创建变量centerDisplacement,得到region center的位移场数据

centerDisplacement= displacement.getSubset(region=center)

#输出各种信息,该节点集只有一个节点

for v incenterDisplacement.values:

print 'Position = ', v.position,'Type =',v.type

print 'Node label = ', v.nodeLabel

print 'X displacement = ', v.data[0]

print 'Y displacement = ', v.data[1]

print 'Displacement magnitude =',v.magnitude

odb.close()

#----------------------------------------------------------------------------------------

(5)提取节点集合上的力

#!/user/bin/python

# -*-coding:UTF-8 -*-

#***************************************

#**程序提取场变量输出**

#**主要为梁单元应力、内力和节点位移**

#***************************************

#导入模块

fromodbAccess import*

fromabaqusConstants import*

importsys

importos

odb =openOdb(path='C:\\Temp\\shangtest.odb')

cpFile=open('artlcF1.txt','w')

#----------------------------------------------------------------------------------------

#创建变量topCenter,得到单元集CENT

topCenter=odb.rootAssembly.instances['DIBIAN-1'].elementSets['XIAJIECHUTEST']

#创建变量stressField,得到位移场数据

stressField= odb.steps['Step-3']

stressField= odb.steps['Step-3'].frames[3].fieldOutputs['S']

#创建变量field,得到该单元集的积分点的数据

field =stressField.getSubset(region=topCenter,

position=INTEGRATION_POINT, elementType ='CPS4R')

#创建变量fieldValues,得到field的数值数据

fieldValues= field.values

#循环输出单元号,单元上的积分点号以及积分点的应力分量

for v infieldValues:

# cpFile.write(v.elementLabel,)

# cpFile.write ('Integration Point = ',v.integrationPoint)

# Foreach tensor component.

for component in v.data:

# Printusing a format. The comma at the end of the

# printstatement suppresses the carriage return.

cpFile.write ('%-15.5f' % component)

# Aftereach tuple has printed, print a carriage return.

cpFile.write('\n')

cpFile.close()

注意事项:

(1)在ABAQUS CAE中运行Python文件;

(2)A=odb.steps['Step-1'].frames和B=odb.steps['Step-1'].frames[-1]的理解

A是Python的一个列表,B是表示列表A中最后一个元素

例如:以下程序输出的结果是一个列表,元素个数(Step-1中增量步数目+1)

stressField= odb.steps['Step-1']

printstressField.frames

输出为:

(2)Python多行注释功能

例如:

'''

Aftereach tuple has printed, print a carriage return.

cpFile.write('\n')

cpFile.close()

'''

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180714G162LR00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券