最近写了一个简单的python读取abaqus结果中的场输出数据,就在这里简单的讲一下整个流程。后续采用abaqus读取场输出结果应用也挺广泛。整个过程的流程图可以用下图来概括,因为不是计算机专业,考虑没那么细致,很多python函数也是即查即用,当然程序后续根据要求也可以不断更改。

下面就从这两个方面按照图片步骤讲解一下这个小程序:
引入头文件
# -*- coding: utf-8 -*-
from odbAccess import *
from abaqusConstants import*
import csv
读取数据
###1.打开文件###
#定义文件路径
OdbFilePath='E:/temp/kehu11-python/09g-B5.odb'
#打开Odb文件
myodb=openOdb(OdbFilePath)
###2.读取场输出结果###
#读取的是场输出DAMAGEC和DAMAGET结果,damagecField是自定义,数据类型是后面赋予的#
#简单说下python语言,如下,很直接了当,.连接就像中国.湖北.武汉.华科一样#
#读取结果里Step-earthquake的最后一帧的DAMAGEC#
damagecField=myodb.steps['Step-earthquake'].frames[-1].fieldOutputs['DAMAGEC']
damagetField=myodb.steps['Step-earthquake'].frames[-1].fieldOutputs['DAMAGET']
###3.保存到数组###
#场输出是一个大的类型,val1是它的所有结果#
val1=damagecField.values
#定义两个数组,分别存储单元编号和对应的数值#
val1nodeLabel=[]
val1DamagecData=[]
#用一个简单的循环将场输出中每一个结果的对应数值与单元编号写入到上述数组#
for v1 in val1:
val1nodeLabel.append(v1.elementLabel)
val1DamagecData.append(v1.data)
#将数组排序,abaqus场输出的数值并非按照单元编号一个接一个,经常有跳动,所以需要排序#
#下面的排序算法百度得到,就是将两个数组一一对应排序,作用如下#
#1,2,3,7,8,9,4,5,6对应a,b,c,h,i,j,e,f,排序后
#1,2,3,4,5,6,7,8,9对应a,b,c,d,e,f,g,h,i,j
Z1=zip(val1nodeLabel,val1DamagecData)
Z1=sorted(Z1)
sortedval1nodeLabel,sortedval1DamagecData=zip(*Z1)
##上面输出的只是damagec的对应结果,下面输出damaget对应结果#
val2nodeLabel=[]
val2DamagetData=[]
val2=damagetField.values
for v2 in val2:
val2nodeLabel.append(v2.elementLabel)
val2DamagetData.append(v2.data)
Z2=zip(val2nodeLabel,val2DamagetData)
Z2=sorted(Z2)
sortedval2nodeLabel,sortedval2DamagetData=zip(*Z2)
###4.关闭文件###
myodb.close()
输出数据
###1.打开文件###
#数据一般保存方式为csv,简单的可以用txt,这里方便后处理采用csv文件,定义文件路径#
CsvFilePath='https://www.gofarlic.com/damge.csv'
#打开csv文件
csvFile=open(CsvFilePath,'wb')
###2.写入数据###
writer=csv.writer(csvFile)
#写入抬头#
writer.writerow(['NodeLabel','DamagecData','DamagetData'])
#获取数组的长度#
#lenth(sortedval1nodeLabel)#这里太多我就只输出1000个单元数据#
lenth=1000
#逐行写入到csv文件中
i=0
while i<=lenth:
writer.writerow([sortedval1nodeLabel[i],sortedval1DamagecData[i],
sortedval2DamagetData[i]])
i=i+1
###3.关闭文件###
csvFile.close()


CAE仿真与数值模拟微信公众号,主要介绍CAE仿真与数值模拟的知识与应用。通过论坛,博客,论文,案例等为大家带来知识食粮。仿真软件:abaqus、ansys、flunet、comsol、hypermesh、moldflow等,涉及领域有机械材料土木物理等。