本文摘要(由AI生成):
本文主要介绍了如何使用Altair Compose对HyperMesh数据库中的数据进行运算,以解决模型中重复施加压力载荷的问题。首先使用matrix提取每个载荷的单元信息,然后通过Altair Compose对查询到的数据进行运算,最后删除重复施加的压力载荷。Altair Compose是一个高层次和基于矩阵的数值计算语言,具有多语言编程环境、高级绘图功能和与HyperWorks其它模块紧密集成等亮点。
上一讲我们介绍了如何使用matrix获取HyperMesh数据库中的数据以及如何把修改后的结果(具体而言是component的名称)用于更新模型。
这一讲进一步介绍如何使用Altair Compose对matrix查询到的数据进行运算并获得希望的结果。这次中我们围绕一个问题来演示matrix+Compose的使用方法。
事不宜迟让我们开始吧~
问题描述
以下模型中的不同结果是因为某种原因把部分单元上压力载荷施加了多次。我们希望把重复施加的压力载荷检查出来并且删除掉。下图是有限元模型。
删除模型中重复载荷后(左)和之前(右)的变形结果对比如下图所示。
为了删除重复载荷,首先需要使用matrix把每个载荷的单元信息提取出来。
step1
打开Tools>matrix,在DataSource=HMdata,Entities=loads
然后选择query选择模型中的所有压力载荷。
得到的结果如下:
step2
点击loads列选择所有load id,在DataSource=HMdata,Entities=loads,Datanames=element,然后选择query选择载荷对应的单元id号,由于有重复载荷,结果中有的单元id号会重复出现。
查询结果如下:
接下来点击右上角的excel按钮在excel中打开数据
结果如下:
从文件菜单导出csv文件,假设保存的路径为D:\Compose\loads.CSV
step3
启动Compose并在Compose中输入如下代码
点击Start按钮运行Compose脚本后会在D:\Compose目录下生成loadid.csv文件。(不把结果输出到屏幕上是为考虑到实际工程中的大模型可能有百万单元,输出命令会花费很长的时间)。
step4
复制loadid.csv文件中的内容(载荷id号)
step5
打开HyperMesh按F2进入删除面板,类型选择loads,在扩展面板中先选择by id,然后ctrl-v把剪切板中的id号复制进去,然后再在扩展面板中选择reverse进行反选。点击delete entity删除。这样我们就把模型中的重复压力载荷全部删除了。
课后练习题
1、怎么删除id号较小的重复单元(重复单元是指节点完全相同的单元)?
2、怎么删除不属于某个component的重复单元?
接下来介绍一下Compose,毕竟大家都不熟悉,而且以后可能会经常在工作中用到。
Altair Compose能够让工程师、科学家和产品开发者有效地进行数值计算、开发算法以及分析和可视化各种类型的数据。Altair Compose是一个高层次和基于矩阵的数值计算语言,也是一个交互、统一的编程环境,可以用于从求解矩阵、微分方程到进行信号分析和控制设计所有类型的数学运算。Compose有三大亮点。
亮点1:多语言编程环境
Altair Compose兼容matlab®语法,可以直接运行.m文件。
Altair Compose支持和python联合编程,支持numpy,scipy等高级数据分析包,Compose和python可以进行变量的传递,比如用Compose读取有限元计算结果,然后传递给python进行处理。
Altair Compose环境直接支持TCL,具有语法高亮等功能。
亮点2:高级绘图功能
2D曲线图
三维曲面图
欧拉螺线
散点图(分形蕨)
亮点3:与HyperWorks其它模块紧密集成
具有全套CAE数据接口
Altair Compose直接使用了HyperGraph的CAE数据接口,这是很重要的一点,因为没有了数据源很多事就没法进行了。Altair Compose编写的函数可以给HyperGraph和HyperStudy使用。