做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等接口可供调用。
另外还有一个基于指定PID来获取该部件最大应力(应变)的接口,感兴趣可私信后台。
"C:\Users\Administrator\AppData\Local\Apps\BETA_CAE_Systems\meta_post_v22.0.0\meta_post64.bat" -nogui-s *.py
希望大家点个关注,不迷路。