打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python提取Abaqus ODB中的场变量(Field output)与历史变量(History output)方法

Python 提取 Abaqus ODB 中的场变量 (Field output) 与历史变量 (History output)方法
胡剑桥 (jianqiaohu@126.com) (1) 创建 bat 文件,这一步并不是必须的,但是推荐使用。用来提供 ODB 路径以及写出文件路 径的方法。方便在 windows command 中提交。也可以直接在 Python 中提供读写路径。 (2) 关于场变量和历史变量的提取,Python 对接 odb 时有很简单严格的数据结构。具体的 ODB 数据结构如下所示:

(3) Field output 提取方法。 场变量输出是以一个个 set 来输出的,如果不选择 set,就默认为输出整个模型的对应的场变量,选 择 set 是为了输出研究者感兴趣区域的场变量。在 abaqus model 里面创建 set 时,是有两个地方是 可以用来创建 set,所以在选出需要输出场变量区域的时候就涉及到了如下的两种路径: 一是:odb—rootAssembly—Sets 二是:odb—rootAssembly—instances—Sets 用户可以通过相关命令查看对应的集合的名称,以节点集为例。 print 'Node sets = ',odb.rootAssembly.nodeSets.keys() print 'Node sets = ', odb.rootAssembly.instances['PART-1-1'].nodeSets.keys() 这两种分别能打印出所有节点集合,注意需要预先区分个人定义的节点集合是否在 instances 上。 定义需要输出区域的语句是: Region=odb.rootAssembly.nodeSets[‘要研究的 Set 名’] 而定义相关场变量输出时,语句就非常简单了。 例如,用户想要输出在 Step-3,第 i 个 Frame 时(也可以写个循环来调用不同 Frame)的 U3 位移 场,这样定义的场变量方式为: Frame=odb.steps[‘Step-3’].frame[i] RootU3=Frame.fieldOutputs[‘U3’]

或者直接就是 RootU3= odb.steps[‘Step-3’].frame[i] .fieldOutputs[‘U3’] 后续写出数据到文件只需遵照 Python 的读写文件操作即可。 读取 Abaqus 时所需要的头文件也都是 一样的。 所以,采用 Python 读取 Abaqus ODB 局部区域的某一场变量的整理思想是:先定义所关心的 Step 中所对应的第 i 个 frame,然后定义自己关心区域,最后结合这两者。(注意大小写,) 如下最初输出 Set-1 集合上的 U3 存储到 RegioncareU3 中: Frame=odb.steps[‘Step-3’].frame[i] RootU3=Frame.fieldOutputs[‘U3’] Regioncare=odb.rootAssembly.nodeSets[‘Set-1’] RegioncareU3= RootU3.getSubset(region=Regioncare)

(4) History output 提取方法 History output 提取方法类似,首先是 Pyhton 中对应的一些头文件: from odbAccess import * from abaqusConstants import * 定义 odb 对应的路径,写出文件的路径(建议这部分在 bat 文件中进行,后续处理会更简单) 。基 本思路也是类似的,但需要注意的是,history output 中并不存在 Frame 的问题。 所以定义需要输出的历史变量仅仅涉及到 Step 的问题。 于是定义区域基本语句为: Step1=odb.steps['Step-1'] RegionPoint1=Step1.historyRegions['位置名称'] 同样,此处需要知道自己输出了 model 中那些区域的“位置名称” ,可以通过如下语句在屏幕中打 印出来,打印出 step-1 加载步中输出的所有 historyregions 名称。 Step1=odb.steps['Step-1'] print Step1.historyRegions.keys() 通过以上命令打印出所有“位置名称” ,选择自己关心的区域即可。 选择需要输出的场变量(输出之前选择的“位置名称”上的 RF3) ,如下所示: RFPoint1=RegionPoint1.historyOutputs['RF3'].data 之后的流程及基本一样,写入到文件即可。 因此,综合来讲,核心语句有:

odb = openOdb(path=odbPath,readOnly=TRUE) Step1=odb.steps['Step-1'] RegionPoint1=Step1.historyRegions['位置名称'] RFPoint1=RegionPoint1.historyOutputs['RF3'].data

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Abaqus模型分析技巧
实战:基于OpenCV进行长时间曝光(内含彩蛋)
abaqus输出场变量小结
利用Python提取ABAQUS的计算结果(ODB)信息
C/C++中善用大括号
摄影爱好者玩编程:利用Python和OpenCV打造专业级长时曝光摄影图
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服