近日,水哥收到不少同学关于采用Workbench进行瞬态分析后提取数据的问题,今天就以本篇文章来解惑。
ANSYS数据后处理主要分为两大类:通用后处理和时间历程后处理,通用后处理也即处理固定时刻结构不同点位的情况,时间不动,结果查看位置变动;而时间历程后处理,则是处理不同时刻固定点位的情况,时间变动,结果查看位置不动。
我们在进行瞬态分析后,经常需要查看和提取不同点位的时间历程结果,例如位移变化曲线,应力、应变变化曲线,与经典界面采用APDL命令流相比,WB界面的时间历程后处理相对较为繁琐。
本文便以水哥WB2021初级教程中的简支梁移动荷载为例,来简述如何通过Python代码批量提取位移响应数据并输出文件。
首先阐述在WB后处理中如何一个点位的时间变化曲线。在WB时间历程后处理过程中,如果要查看一个点位的响应情况,可通过几何选择或者创建ns组然后选择ns组的方法来进行,确定点位后,评估结果,出来的曲线就是响应情况,如下所示。
点击旁边的Tabular Data,则可显示具体时刻的数值。
在表格数据范围,点击鼠标右键,在弹出来的选项中选择Export,即可将当前的数据导出,数据可存为txt,也可存为excel文件,导出的内容如下所示,但遗憾的是这里无论是否勾选Min,Max,Avg,默认都是将三列数据导出。
上述操作对于点位较少时,操作比较友好简单,但如果一旦查看的点位超过一定数值,那就是重复性操作,并且如果求解条件稍微改一下,那么数据又要重新来一遍,导出操作自然也要重新来一遍,费时费力,因而,适当的使用Python代码来进行批处理对数据点位比较多的情况非常有必要。
第一步:确定输出点位,由于采用脚本时,不可能通过手动来进行指定点位,这里的处理办法为根据用户输入的点位坐标,自动创建节点NS组,然后在后续评估结果的时候范围选择NS组即可。
相关代码如下:
上述代码运行后,即可创建一个名为Mynode的NS组,如下所示
第二步:进入后处理评估结果并导出,这里简单说下评估结果导出的脚本方法。
1)、进入后处理,添加结果及定义评估范围,相关代码如下所示:
运行上方代码后,即可生成相应的结果,如下所示:
2)、在具体输出之前,首先介绍下数据文件的结构形式,上述代码中myrs对象包含了所有的结果数据,需要用plotdata打印出来。但此时这个对象里面并没有时程的概念,也即其保存的结果只有指定荷载步的结果,如下所示:
在结果输出对象中,第一列代表结果序号,第二列代表节点的编号,按从小到大排序,属于不变变量,第三列属于可变类型变量,代表具体的值,根据提取结果的类型变化而变化。我们要做的工作便是提取这个Value,提取代码如下:
最终提取的数值如下,可见上述代码能够准确提取具体的值。
3)、根据第二步的操作,即可提取每个荷载步情况下的具体数值,然后保存到数组中,写出文件即可,但这其中就涉及到每个荷载步都需读取评估,非常耗时,水哥这里推荐一次性获取在所有荷载步的情况,然后在批量读取结果对象,这样速度会比较快,值得注意的是,为了方便后续绘制图形,还需写出对应的时刻,操作代码如下:
运行的结果如下,从结果可见,上述代码能够准确获取到该节点在每个时刻的响应数值。
第三步:获取到上述数据后,即可写出到文件,相关代码如下所示:
结果如下所示:
第四步:上述过程只是针对一个节点,如果有多个节点,则需要将上述过程封装一个函数CreateData,依次调用即可,在最后的处理方面,可以将所有数据都写到一个文件里面,也可以每个节点都写出一个文件,最后的代码如下所示:
最后的结果如下:
从上面可见,采用Python代码能够批量处理时程数据后处理,相比于APDL语法来讲,Python通俗易懂,其很容易调整格式,对输出处理比较友好,但同样的,需要学员掌握一定的脚本知识,关于脚本知识,推荐水哥的原创课程:
基于Python语言ANSYS WorkBench软件二次开发专题教程
本文源代码及配套的训练模型支付积分后即可下载:
- 最新
- 最热
只看作者