在对Abaqus分析结果使用Python脚本进行后处理时,如果有合适的单元集 合(或节点集 合,下文同,略),可以使用getSubset()方法读取单元集 合所包含的单元的输出变量,精准取值,减少后处理数据规模。
如果在前处理时,忘记创建单元集 合,在后处理时怎么办呢?
1 打开ODB
下面介绍使用Python脚本在ODB中创建Element Set,如下图所示的Em_1、Em_2,然后读取这两个单元集 合中单元的应力值,并写入文件。
因为要在ODB中新建增加单元集 合,所以使用Abaqus打开ODB时不要勾选Read-only,如下图所示。
2 Python脚本
下图为使用单元编号在ODB中创建单元集 合的方法crtElemSetFromLabel()。返回的对象setEm可以作为region使用。
下图为使用单元索引(序号)在ODB中创建单元集 合的方法crtElemSetFromIndex()。返回的对象setEm可以作为region使用。
下图为使用getSubset()方法,读取单元集 合中单元的应力值。单元单元应力数据保存在列表stress_vals中,每个单元的一组应力值构建一个字典对象em_val。
下图为将单元应力数据写入文本文件。
上面4个方法,前两个用于创建Element Set,第3个方法读取Element Set对应的应力值,第4个方法将数据写入文件。
下面就用上面4个方法,创建Element Set、读取单元应力、写入文件,如下图所示:
先创建Em_1、Em_2两个单元集 合;
读取两个集 合单元的应力;
分别写入em1.txt、em2.txt。
以上所有代码为一个py文件,打开ODB后,运行该脚本文件。(路径、名称等可适当修改)
3 查看读取数据
两个文本文件的数据如下图所示,在PyCharm中查看,数据还是比较整齐的。用记事本打开文件查看会发现每列数据可能会歪歪扭扭,字符显示问题,不必纠结。
4 帮助文件介绍
下图中ElementSet()方法Path的介绍不是很全面。本文用的rootAssembly.ElementSet()。注意elements的参数形式。
下图中ElementSetFromElementLabels()的Path介绍较全面,注意elementLabels的参数形式。
5 怎么删除创建的Element Set?