python csv 排序_Python提取ABAQUS场输出结果

2cb86f8ada62565741d794698b40130a.png

标星★公众号     爱你们♥

——还没找到组织?

CAE仿真与数值模拟公众号已设立交流群, 赶快加入和小伙伴们聊聊吧!加群方法:先加CAE仿真与数值模拟小编为好友(微信号 stokisyd ),发送消息“CAE群”   

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

042defd4abcbc19f9c1fdaaf75013386.png

下面就从这两个方面按照图片步骤讲解一下这个小程序:

引入头文件

1# -*- coding: utf-8 -*-
2from odbAccess import *
3from abaqusConstants import*
4import csv

读取数据

 1###1.打开文件###
2
3#定义文件路径
4OdbFilePath='E:/temp/kehu11-python/09g-B5.odb'
5#打开Odb文件
6myodb=openOdb(OdbFilePath)
7
8###2.读取场输出结果###
9
10#读取的是场输出DAMAGEC和DAMAGET结果,damagecField是自定义,数据类型是后面赋予的#
11#简单说下python语言,如下,很直接了当,.连接就像中国.湖北.武汉.华科一样#
12#读取结果里Step-earthquake的最后一帧的DAMAGEC#
13 damagecField=myodb.steps['Step-earthquake'].frames[-1].fieldOutputs['DAMAGEC']
14 damagetField=myodb.steps['Step-earthquake'].frames[-1].fieldOutputs['DAMAGET']
15
16 ###3.保存到数组###
17
18#场输出是一个大的类型,val1是它的所有结果#
19val1=damagecField.values
20#定义两个数组,分别存储单元编号和对应的数值#
21val1nodeLabel=[]
22val1DamagecData=[]
23#用一个简单的循环将场输出中每一个结果的对应数值与单元编号写入到上述数组#
24for v1 in val1: 
25     val1nodeLabel.append(v1.elementLabel)
26     val1DamagecData.append(v1.data)
27#将数组排序,abaqus场输出的数值并非按照单元编号一个接一个,经常有跳动,所以需要排序#
28#下面的排序算法百度得到,就是将两个数组一一对应排序,作用如下#
29#1,2,3,7,8,9,4,5,6对应a,b,c,h,i,j,e,f,排序后
30#1,2,3,4,5,6,7,8,9对应a,b,c,d,e,f,g,h,i,j
31Z1=zip(val1nodeLabel,val1DamagecData)
32Z1=sorted(Z1)
33sortedval1nodeLabel,sortedval1DamagecData=zip(*Z1)
34
35##上面输出的只是damagec的对应结果,下面输出damaget对应结果#   
36val2nodeLabel=[]
37val2DamagetData=[]
38val2=damagetField.values
39for v2 in val2: 
40      val2nodeLabel.append(v2.elementLabel)
41      val2DamagetData.append(v2.data)
42Z2=zip(val2nodeLabel,val2DamagetData)
43Z2=sorted(Z2)
44sortedval2nodeLabel,sortedval2DamagetData=zip(*Z2)
45
46###4.关闭文件###
47
48myodb.close()

输出数据

 1###1.打开文件###
2
3#数据一般保存方式为csv,简单的可以用txt,这里方便后处理采用csv文件,定义文件路径#
4CsvFilePath='D:/damge.csv'
5#打开csv文件
6csvFile=open(CsvFilePath,'wb')
7
8 ###2.写入数据###
9
10writer=csv.writer(csvFile)
11#写入抬头#
12writer.writerow(['NodeLabel','DamagecData','DamagetData'])
13#获取数组的长度#
14#lenth(sortedval1nodeLabel)#这里太多我就只输出1000个单元数据#
15    lenth=1000
16#逐行写入到csv文件中
17i=0
18while i<=lenth:
19    writer.writerow([sortedval1nodeLabel[i],sortedval1DamagecData[i],
20                                 sortedval2DamagetData[i]])
21    i=i+1
22
23###3.关闭文件###
24
25csvFile.close()
    最终得到一个csv文件,提取结果如下图

cc360322386fc844577be06065d866f8.png

    数据值为0,是因为其计算时间太长,等了一晚上才计算到第9秒还没有发生损伤,因此其数值均为0。    提取较多的结果可能是常见的应力应变,节点位移等,不过方法都是一样的,改动起来也较为简单。有兴趣的朋友不妨动手尝试一下。        使用Python脚本确实可以大大减轻我们的工作负担,毕竟认识苦短,而且学起来很简单,注重一个对Python以及abaqus的理解,后续很多函数也都是现搜现用。关于Python在ABAQUS中的应用,推荐曹金凤老师的书,可以用来当作工具书,随时需要了去翻一下,给我们提供指导。基本上也不用专门去学习下Python,书里附带的Python语言基础也够用了。如果大家有啥需要使用Python脚本的地方,也可以过来咨询我。

54a216561d9a81e664ed7a55dc41010d.png

更多精彩内容推荐阅读:

  • 材料本构弹塑性力学知识一

  • 材料本构弹塑性力学知识二

  • 材料本构弹塑性力学知识三

  • 材料力学中强度和刚度的理解

  • abaqus经验总结-分析步

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

ec0a067d8a162ab6831a4395ba3a26e7.png 你点的每个“在看”,我们都认真当成了喜欢
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值