摘要
本文介绍了一个利用BETA/META软件和Python语言开发的脚本,旨在从一系列计算模型的结果文件中快速批量提取特定节点的位移和部件的最大应力/应变数据。脚本针对瞬态或准静态工况下的结果数据进行处理,包括数据截取、求平均值、求导、积分、傅里叶变换等操作。文中详细展示了如何调用META软件提供的接口函数,如meta.nodes.Node.get_deformations
和meta.models.Model.get_centroid_scalar
,来获取节点的变形和模型中心点的标量值。此外,还提到了通过指定PID获取部件最大应力(应变)的接口。最终,统计的结果数据文件可用于代理模型的创建或其他分析。
正文
做DOE时,批量提交了一系列计算模型,产生了对应的结果文件。如何不通过界面操作,快速批量地提取关注的结果数据,如指定节点的位移,指定部件的最大应力/应变。此外,针对瞬态或准静态工况,还需要对结果数据的曲线进行一些处理,如数据截取、求平均值、求导、积分、傅里叶变换等。
*如上图计算结果中,是一个准静态的计算结果,需要提取指定点的位移,同时,需要截取曲线红色方框内的数据段,再求得所截取数据的平均值,作为该计算的位移指标。
*此外,还需要提取部件的最大应变(应力),由于是准静态工况,因此也需要截取应变曲线红色方框内的数据段,再求平均值,作为该计算此部件的应变(应力)指标。
本次将使用BETA/META软件来进行开发,开发语言采用python。
最后统计的结果数据文件就可以通过简单整理,导入HyperStudy或者Optimus软件进行进行代理模型的创建,或用作其他。
meta.nodes.Node.get_deformations
获取指定节点的变形,示例代码如下:
# PYTHON script
import meta
from meta import nodes
from meta import models
def main():
m = models.Model(0)
n = nodes.Node(id=161, model_id=m.id)
res = m.get_current_resultset()
deform = n.get_deformations(res)
if deform:
print(deform.x) # X deformation
print(deform.y) # Y deformation
print(deform.z) # Z deformation
print(deform.total) # Total deformation
print(deform.node_id) # Id of the node
if __name__ == '__main__':
main()
meta.models.Model.get_centroid_scalar
This method gets all centroid scalar values for a model specified by its id.
# PYTHON script
import meta
from meta import models
def main():
m = models.Model(0)
res = m.get_current_resultset()
model_centroid = m.get_centroid_scalar(res, 'min')
#model_centroid = m.get_centroid_scalar(res, 'all', non_zero = True)
#model_centroid = m.get_centroid_scalar(res, 'min', layer = 'top' )
for centroid in model_centroid:
print(centroid.value, centroid.element_id, centroid.second_id, centroid.type)
if __name__ == '__main__':
main()
类似的还有meta.models.Model.get_corner_scalar等接口可供调用。
"C:\Users\Administrator\AppData\Local\Apps\BETA_CAE_Systems\meta_post_v22.0.0\meta_post64.bat" -nogui -s *.py