基于HyperMesh平台的属性界面二次开发*
2022-06-24刘泓廷刘昱甫薛宁鑫
王 剑,刘泓廷,刘昱甫,薛宁鑫
(1.大连交通大学 机车车辆工程学院,辽宁 大连 116028;2.中车长春轨道客车股份有限公司 国家轨道客车工程研发中心,吉林 长春 130062)
0 引言
结构有限元分析的第一步就是对结构进行前处理,包括模型的简化、几何处理、网格划分及属性赋值等。在HyperMesh中属性赋值的基本方法是依次建立所需的单元类型、实常数并确定材料参数,再将处理好的模型与之一一对应地匹配到一起,完成模型属性的赋值。对仿真分析工程师而言,这个过程是重复、枯燥但又不能忽视其技术含量的一项工作,需要依据模型部件仔细核实各个属性,分别赋值。对于一个复杂模型来说,工程师的精力会在参数核实与工作界面不断切换中不断消耗,繁琐冗长的操作不仅消耗掉仿真分析工程师们大量的时间精力,更会导致其工作效率下滑、人为失误概率增加,影响后续分析工作的效率和可信度。因此,简化模型属性赋予操作流程显得很有必要。
HyperMesh具有强大的前处理功能,并且提供了良好的二次开发环境,这为一些具有重复性操作的问题提供了良好的解决方案[1]。丁培林等[2]提出了基于HyperWorks自动加载及后处理的方法;刘伟[3]提出了基于HyperMesh实现转向机自动化创建连接的方法;米小珍等[4]基于HyperMesh开发了材料定义与重用工具。
本文基于HyperMesh软件,利用Tcl/Tk脚本语言结合模型属性赋值的实际操作,开发了集成化、简便化的属性赋予工具,并将其嵌入到HyperMesh操作界面中,以满足快速完成模型属性赋予的要求。
1 有限元模型属性赋值的基本方法
以某不锈钢点焊车车体分析为例介绍有限元模型属性赋值的基本流程。该不锈钢点焊车车体模型以壳单元为主,以用于顶升垫、横向拉杆底座及车体尾梁内的挡块实体单元为辅;梁单元用于表示电阻焊和螺栓,质量点单元用于表示设备和乘客质量。其中,壳单元平均尺寸约为25 mm,最小壳单元长度约为2 mm,最大壳单元长度为60 mm;最小实体单元长度为5 mm,最大实体单元长度为39 mm。Shell单元共计1 907 903个,Solid单元共计5 152个,Beam单元共计45 914个,Mass单元共计686 710个。涉及到的材料有不同型号的耐候钢、不锈钢、铝合金等十余种。
在整车有限元分析流程中,划分网格之后首先要将整车各部位零件按照位置、厚度、材料等进行分类,由于零件众多,模型部件及组件有1 000余个。常规的模型属性赋予操作首先要根据实际模型中出现的单元类型设置ET Type,如Shell181、Solid185等,部分单元类型需要设置实常数Real Sets,人工编辑名称及厚度等属性[5];其次要将所有用到的模型材料人工输入到Material中;最后在Component Manager中将处理模型时分好的comps与对应的ET Type、Real Sets、Material等结合起来。虽然之前将零件按照参数分好组别,可以一次性对同一种零件进行属性赋予,但是成百上千组数据的赋予仍然繁琐且耗费时间。以不锈钢点焊车为例,其有限元模型如图1所示,不锈钢点焊车的模型分为478组,从无到有地完成属性输入到关联每组ET Type、Real Sets、Material,仍需要耗费工程师数小时甚至一整天的时间,非常繁琐且工作量大。
图1 不锈钢点焊车有限元模型
2 界面设计与实现
针对HyperMesh软件常规模型属性赋予方法的不足之处,结合仿真分析本身操作规范化需求,使用Tcl/Tk脚本进行二次开发,以获得更高效、更便捷的模型属性赋予工具[6]。
以更高效、更便捷的模型属性赋予工具为目标,设计、开发过程中应注意满足以下几点:
(1) 新工具的操作界面应尽可能地简洁,便于操作。
(2) 按键设置逻辑应尽可能和基本属性赋予流程贴合,降低学习成本及应用难度。
(3) 新工具应摆脱弹窗式插入,而是嵌入到HyperMesh软件中去,方便随时调用。
传统操作模式中,属性赋予需要反复切换界面,重复属性关联、二次确认等过程。在新界面中,从上到下依次设计Material、ET Type、Property选项,其中Material下辖四个参数,分别是材料名称material name、弹性模量EX、泊松比NEXY、材料密度DENS等常用参数。ET Type包含的参数有Shell、Solid、Beam、Mass等单元,根据实际模型选出需要的参数类型,点击一次按钮即可创建。Property设置为点击即可自动提取comps名称中的关键字,自动生成Real Sets等参数,并对应地关联到Component Manager中完成模型的属性赋予操作。Property操作界面如图2、图3所示。
图2 Property界面表层
图3 Property界面里层
依据上述思路,基于ANSYS模板来进行二次开发。根据Property的设计,用户需要提前将处理模型、网格划分时的分组comps按照特定的命名规则进行规范化重命名,将comps名称使用“_”符号进行分割。例如:SW_shell_8mm_AL,其中第一位SW代指单元在模型中所处的位置,为sidewall的缩写(具体的位置名称可按工程师自己的习惯进行命名,方便阅读即可),第二位shell代指单元类型,第三位代指单元相关参数,如8 mm即为板件的厚度,第四位代指材料类型。
规范命名不但有助于二次开发的数据提取,也大幅提高了模型前处理的可读性,方便进行工作交接以及交流研讨。脚本会自动拆分后面三个位置并以此为基准对应地关联到Component Manager中[7],完成属性赋予的最终步骤。部分属性赋予程序如下:
set compslistname [hm_getmark comps 1]
foreach comp $compslistname {
set comps_listname [hm_getvalue comps id=$comp dataname=name]
set lst [split $comps_listname "_-"]
set prop_name [lindex $lst 1]
set prop_thick [lindex $lst 2]
set prop_mat [lindex $lst 3]
}
if {$prop_name == "shell"} {
*createentity props cardimage=SHELL181p
name = $prop_thick
*setvalue props name=$prop_thick STATUS=2
136 = {$prop_thick 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
set prop_id [hm_getvalue props name=$prop_thick dataname=id]
*setvalue comps id=$comp cardimage="HM_COMP"
*setvalue comps id=$comp propertyid={props $prop_id}
set sensors_id [hm_getvalue sensors name=shell dataname=id]
*setvalue comps id=$comp STATUS=2 3081={sensors $sensors_id}
set mat_id [hm_getvalue material name=$prop_mat dataname=id]
*setvalue comps id=$comp materialid={mats $mat_id}
}
新开发模型属性赋予工具的使用方法为:在完成模型几何清理、中面抽取、划分网格、按要求分组命名等常规操作之后,将材料参数输入到Material一栏中,点击Create即可完成材料创建。ET Type一栏里选择单元类型,点击一次即可完成单元类型的创建。最后的属性赋予以及关联到Component Manager过程需要在Property一栏中点击Auto Attribute,右侧会弹出窗口供工程师选择需要赋予属性的comps,勾选出需要赋予属性的comps后点击select以及proceed即可快速完成模型属性赋予工作。新开发属性赋予工具界面如图4所示。
图4 新开发属性赋予界面
开发模式分为同步模式与异步模式。同步模式是指开发插件随HyperMesh软件一同启动,不单独运行。异步模式是指二次开发的插件独立运行,只是在运行过程中调用HyperMesh软件,建立数据通信。以往的二次开发多将界面设计为弹窗式,每次使用时需要工程师在命令行输入source手动调用脚本,操作较为繁琐。此次二次开发利用Tcl/Tk脚本语言将属性赋予工具固化到HyperMesh主界面中,无需再次手动调用脚本,实现同步模式二次开发。将原先繁琐复杂的模型属性赋予操作简化、集成为在一个页面内即可完成的操作,工程师按照从上到下的顺序依次填入数据、点击按钮即可快速完成模型属性的赋予,且每次启动HyperMesh都会自动在主界面Tab页面下显示新开发的模型属性赋予工具界面,操作简洁明了。
3 实例与分析
以某项目车顶罩板模型为测试对象,测试新开发属性赋予工具的使用效果。该车顶罩板模型零部件共划分为10组,其中涉及单元类型2类、材料2种,单元总数为243 587。
原始HyperMesh软件界面及某项目车顶罩板模型如图5所示。模型中可见每一个component中的value值均为空,需要工程师填写Type、Property、Material三项。使用常规模型属性赋予方法,单次属性赋予至少需要34次点击操作、7次输入操作才能完成从材料建立、单元类型创建到属性关联等操作。未进行属性赋予的Component Manager界面如图6所示。
图5 原始HyperMesh软件界面
图6 未赋予属性的Component Manager界面
使用二次开发改进后的模型属性赋予工具,单次属性赋予仅需要8次点击、4次输入操作即可完成。工作界面位于Tab页面下,如图7所示,自上而下依次填入Material参数、选择单元类型,最后点击Auto attribute即可完成属性赋予工作。完成属性赋予后的Component Manager界面如图8所示。统计常规属性赋予操作次数和使用二次开发后的属性赋予工具所需的操作次数,统计对比结果见表1。
图7 二次开发后HyperMesh软件界面
图8 完成属性赋予的Component Manager界面
以前文提到的不锈钢点焊车为例,该大型模型使用二次开发工具赋予属性仅需十余分钟即可完成工作。通过表1中数据对比亦可见使用Tcl/Tk脚本进行二次开发改进后的模型属性赋予工具可使仿真分析工程师无需反复进行页面切换、点击、输入、关联等操作,不仅大大降低了赋属性时的工作强度,而且显著提高了模型赋属性的准确度与工作效率。
表1 操作次数对比
4 结论
当工程师使用HyperMesh软件进行产品的仿真分析前处理时,经常会遇到重复性、标准化的任务,若能对这些重复出现且具有标准操作的任务进行简化,则可大大提高前处理的效率,而前处理的效率直接影响产品设计周期。本文针对前处理中可简化的操作对HyperMesh进行了具备行业风格的二次开发,优化了操作流程,既减小了人工操作出错的概率又提高了前处理的效率,为相关工作人员提供了便利工具。