0 前言
基于二次开发,将有限元建模过程抽取出来,编写成规范化的程序,可以极大地提高建模的效率,节省人力成本,缩短开发周期,同时减少乃至避免模型错误,提高模型的规范化以及极大地便于后期模型的维护、更新以及优化。本文以在HyperMesh的前处理环境下,基于TCL/TK,讨论前处理建模二次开发的可能性以及优越性。
1 基于TCL/TK的手机整机跌落分析的二次开发
1.1模型描述
一部手机的模型规模大致在200-300个部件之间(有限元模型模拟要求),完成整机的模型网格化后,就需要通过BOM表建立部件的材料、属性以及边界条件。在HypeMesh(Abaqus Template)中,部件(Component)、属性(Property)、材料(Material)三者的连接关系如下:
图1 部件、属性与材料的连接关系
在整机跌落分析中,我们需要建立的边界条件是,在规定的特定的规范下,例如1.5m高度自由跌落,通过跌落高度,计算出整机快要接触地面时的初始速度。计算公式为:
公式一 手机跌落分析初始速度计算公式
此外,地面简化为刚体,并且约束地面所有自由度。
1.2二次开发思路
首先,我们需要建立标准的材料库,以便于我们在后期自动调用。
通过对于跌落模型的分析,我们可以通过BOM表中的材料与部件的对应关系,通过编程,针对模型中的每一个部件去BOM表中查找对应的材料信息,然后循环调用,导入我们模型中所需要的材料信息以及厚度信息。然后通过单元类型综合厚度信息,建立与之对应的属性并且将属性赋予部件。
实际上,根据分析和经验,建立属性和导入材料是在这个过程中是最繁重的工作内容,通过这样一个循环调用的过程,则可以在无人干预的情况下,快速自动并且无差错的完成这项耗时耗力的工作。
1.3代码实现
代码实现分为两个部分:GUI部分以及过程实现部分。
其中,GUI部分如下图所示:
图2 GUI部分
通过上图,将整个的整机跌落建模过程固化的一个面板中,可以极大地提高建模效率,简化操作。
1.4建模示例
以某整机跌落分析为例,模型网格化后模型情况如下图所示:
图3 手机跌落分析有限元模型
其简单的BOM表如下:
图4 手机零部件BOM表
材料库如下图所示:
图5 材料库清单
通过以上二次开发插件完成后的模型如下图所示:
图6 通过TCL二次开发后的界面
1.5小结
通过以上建模示例可以看出,通过二次开发插件建模,在极大地提高建模效率的同时,所建立出来的模型是标准化的、规划化的,这种方法建模,可以完全解决不同的工程师在建模习惯上的差异性。
2 二次开发在汽车整车结构有限元模型中的应用
通过以上二次开发在手机跌落建模过程中的应用,其优越性是显而易见的。不言自明的是,同样的,二次开发在汽车整车有限元模型的建立过程中也大有用武之地。
笔者在工作过程中,已经将汽车开闭件的抗凹性分析流程化。抗凹分析的困难性在于测试点比较的多,当你建好某一个测试点的模型时,在做其他的测试点则需要手动去移动压头,重新建立局部坐标系,更新载荷方向。如果一个开闭件的测试点达到七八个乃至十几个,那么,四门两盖总共加起来就有五六十个测试点需要单独建模,工作量可想而知。同时,由于是隐式分析(Abaqus),不同的建模差异,其模型的收敛性也是一个比较大的考验。通过二次开发,可以很方便的解决上述问题。
其二次开发思路与上述手机整机跌落类似,上述建立属性和材料信息的代码可以再这里重用。其他的部分,同样也需要建立标准的压头库,通过代码编写,自动在压头库中选择需要的压头并导入到现有模型中,然后只需要在目标测试点出选择关键的一个单元,插件即可以自动完成包括重新定位、局部坐标系、接触关系以及载荷加载、分析步的建立,根本不需要去手动干预。
这样建立出来的模型,除了测试点不同外,模型的其他部分完全相同,通过调节好压头的接触关系,所建立出来的模型在收敛性上也是非常好的。
二次开发在汽车建模中的另一个应用是在悬架建模中。由于悬架的结构比较的复杂,模型中包含很多的连接单元(connector单元),如弹簧单元、减震器、导向单元等等,连接单元的建立比较复杂,并且类型众多,同时很多类型的连接单元都需要建立局部坐标系。如此复杂的模型,很容易建出差异巨大的模型和收敛性不好甚至的结果不准确的模型。所以,通过将悬架的建模过程流程化是很有必要的。
在悬架的二次开发方面,只需要知道一些必要的硬点信息,同时将连接单元的类型信息赋予到节点编号当中,然后通过代码,解析出节点编号中所携带的信息,就可以自动化完成悬架其他所有的建模过程。
3 二次开发在其他可能的应用场景中的应用
当然,二次开发的应用场景绝不仅仅只限于以上过程当中,二次开发在提高工程师的建模效率和准确率上是有不可替代的地位的。例如,在用RigidBody做螺栓连接时,可能需要手动去一个一个选择螺栓孔上的节点,通过简单的二次开发,可以快速的只去选择螺栓孔上的单一节点就完成整个RigidBody的建立。其思路是通过所选择的螺栓孔上的节点信息,得到螺栓孔的自由边,然后通过自由边反过来得到螺栓孔上所有的节点,建立RigidBody;在比如对于CAD数据的处理,由于设计部门过来的几何数据可能每个部件的名称比较的凌乱,通过二次开发,去解析部件所在的Assembly,将部件的名称修改为正确的名称;另一个例子在整个汽车碰撞模型与结构刚强度模型的转化上。由于整车碰撞模型与结构刚强度所使用的求解器不同或者其建模要求存在差异,所以在一些建模方法上也就存在相当大的差异,可以通过二次开发的方法,很方便的将碰撞模型的建模转化为刚强度分析中所要求的建模方法。比如对于白车身RigidBody的转化,可能在碰撞模型当中,RigidBody的independent node是建立在螺栓孔上的节点,而刚强度中RigidBody的independent node则要求建立螺栓孔的中心处,如果在拿到碰撞模型中的白车身部分的时候,需要转化RigidBody。而白车身的螺栓连接何其多,大约有上千个,如果手动的一个一个去手动重建,其工作量可想而知,同时非常容易就会漏掉一些螺栓连接。通过二次开发可以非常快捷并且毫不遗漏的转化这些RigidBody。
4 总结
通过以上种种的简单的讨论,我们可以看出来二次开发对于有限元模型建模的重要性。它不仅可以极大地提高工程师的工作效率,将工程师从繁重单调的建模工作中解放出来,减少工程建模出错的概率。另一个更加重要的好处就是,将建模的过程流程化后,所建立出来的模型不会因为不同的工程师、不同的项目、不同的时间而存在很大的差异,便于我们对于模型进行排错、调试、维护以及更新。同时,在开发的不同阶段,设计部门可能会对部件结构进行优化改进,而通过二次开发出来的模型更加有利于工程师对于之前自己所做模型的可读性。
当然,二次开发是一个很大的概念,这里只是在笔者常用的工作环境下加以了简单且粗略的讨论。比如在其他的很多领域也会用到二次开发,比如Abaqus中利用二次开发对于模型结果进行后处理,通过二次开发建立自己所需要的本构模型等等。
实际上,二次开发都是在一定的平台上实现的,它是软件开发商在其自身的软件功能上,给用户提供的一个很好的扩展和定制化功能,绝大部分的软件都会提供类似的扩展接口,比如Abaqus提供的Python接口,用户子程序需要用到的Fortran接口,Ansa提供的C接口等等,其目的就是为了更好的为工程师的工作提供更大的想象空间以及便利性。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/