作为一名汽车仿真工程师做得最多的就是汽车相关工况的二次开发,本文就用一个最常见的白车身扭转工况来带大家再次领略ANSA二次开发的魅力,后期也会有更多针对工程实例的课程、文章,欢迎大家关注我的仿真秀专栏-ANSA攻城狮。
一、认识白车身扭转工况
首先介绍一下白车身扭转工况的具体加载、约束以及结果读取吧。
1、加载
扭转顾名思义需要在车身上加载一个扭矩,主流主机厂的仿真方法是在车身减震器安装点位置左右分别施加两个相反的力。如下图所示
2、约束
为了保证在加载过程中车身不会发生刚体 位移,我们需要施加约束。通常是在车身后部减震器安装点位置约束1-3方向自由度,有的主机厂还会在保险杠中部约束一个点的3方向自由度。
3、结果读取与计算
不同企业的计算方法不同,这里选取一个比较主流的车身扭转刚度计算方法
读取前减震器z向位移Z1,Z2(单位m)。扭矩为T(单位N.m),前左右安装点距离为D(单位m),车身扭转刚度计算公式为:
最终计算出来的扭转刚度单位为:N.m/deg
二、编程思路
首先创建一个界面用于和用户进行交互。
点击选点按钮后用户选择前后减震器安装点,软件会自动通过位置判断每个选点的位置,然后为其创建对应的集 合
点击创建模型按钮后,软件会自动根据模型里面的集 合来创建载荷以及约束。这样做的好处就是下次在使用之前已经选点好的模型进行白车身扭转刚度分析,只需要点击“创建模型”按钮就可以直接创建模型,而无需再次选点。
界面很简单,但是已经能够实现基本的功能,大家也可以在此基础上增加组件,实现更加复杂的交互功能。由于篇幅有限这里只进行最基础功能的实现,更加复杂的功能与丰富的工程实例请大家继续关注我后期的课程与文章。
总结下来我们一共要建立三个函数:
3.创建载荷、约束、Header的函数
三、代码编写实操
接下来我们开始编写代码
1、界面搭建
首先导入必要的库
接下来创建一个简单的界面,对代码不熟悉的同学请自行查看帮助文档或者跟着《ANSA二次开发从入门到精通》课程系统学习
这里面我们先把选点的函数SelectNode以及创建模型的函数CreateHeader创建出来,这样子才能显示出界面
2、用户选点
这里给大家讲解一下具体代码的变成思路
下面这段代码是允许用户选点,并且根据位置来判断选取的点是前后减震器中的哪一个并创建对应的集 合,其中还加了一些逻辑判断。
这段代码中由四部分逻辑相同的部分,这里拿出来其中一部分进行讲解
(1)PickEntities()是允许用户在界面中选择节点的函数,用户可以选择四个减震器安装点中任意几个。
(2)接下来通过.position的类属性来判断改点所在位置,并进行对应集 合的创建。
(3)然后通过GetEntity来获取集 合,如果存在我们就用已经存在的集 合,并且将集 合中的点通过CollectEntities()搜集起来,再通过RemoveFromSet()将集 合中的点移除集 合;不存在我们就使用CreateEntity()创建一个新的集 合。
这样做是为了我们在已经存在集 合(之前选取过点)的模型中重新选点时能够使用新选择的点来覆盖旧的点,增加程序的灵活性。当然了我们每个位置点所建立的Set是有固定的ID的,这样子方便索引。
(4)最后就是将这个点通过AddToSet()来储存到几何中进行位置判断时大家根据自己模型中的全局坐标系进行判断就好,我这里的全局坐标系如下图所示:
进行到这里大家可以测试一下程序能否正常运行,效果就是这样的
我们在第一次选择时会创建新的Set来装每个减震器安装点的节点,第二次选择时则会覆盖之前集 合中的节点。
3、创建Header
代码如下:
(5)首先通过GetEntity()获取四个减震器安装点储存的集 合
(6)然后我们判断一下集 合是否为空,如果为空我们弹出对话框提示用户“请检查约束点及加载点集 合”
(7)集 合不为空,我们搜集集 合中的节点,使用变量储存
(8)使用CreateEntity分别创建Force及SPC
(9)最后使用CreateEntity创建Header,使用SetNastranHeader来设置Header中的内容,进行求解
到这里我们的程序就写完了,其实其中还可以增加很多的逻辑判断来增强我们程序的容错率,不要出现错误就异常退出,比如说判断集 合中的节点数是否为1,如果节点数多余1说明这个集 合有问题,这时候可以提示用户检查集 合。再比如还可以增加在创建完Header后让用户选择路径输出计算文件。这里大家就自由发挥想象。
以下是课程安排(持续加餐中)
ANSA二次开发从入门到精通22讲:轻松掌握基于python的ANSA二次开发
此外,笔者为所有订阅用户提供知识圈答疑服务和VIP用户交流群。并附赠课程相关资料等(平台支持自行开具电子发票)。
熟练运用Ansa二次开发进行几何清理
熟练运用Ansa二次开发进行网格划分
熟练运用Ansa二次开发进行常见连接(焊点、焊线、螺栓、胶粘)的转换与实体化
熟练运用Ansa二次开发进行GUI界面设计,提高程序交互性
熟练掌握Ansa二次开发中Python的常用数据类型及语法
学习型仿真工程师
有限元分析兴趣爱好者和结构工程师
理工科在校生和教师
希望通过二次开发简化工作、提高效率的工程师
3、读者福利
读者福利:请在文章附件直接下载以下学习资料,如果遇到麻烦,请在文章下方留言或联系平台客服领取。欢迎大家加入QQ群(576156527),群里会不定期给大家分享一些ANSA及二次开发的相关干货知识。