首页/文章/ 详情

Hypermesh二次开发:开发个球

1天前浏览8

标题少写了几个字,完整标题是Hypermesh二次开发:开发个球体的六面体划分工具。

在有限元分析领域,六面体网格对于提高计算效率和结果精度具有重要意义。那么球体的六面体网格划分,堪称六面体网格划分的经典案例。从轴承中的钢珠到座椅的滚珠,诸多应用场景都离不开六面体球体的创建。

在众多关于球体六面体划分的视频教程中,常见的方法是

1、先将球切割为八分之一;

2、再对分割后的球体加点,加线切割出内部小正方形;

3、再添加正方体的面与球面的引导线;

4、然后再通过正方形与球体表面进行切割实体;

5、再合并多余的切割面,得到四个可以映射的实体;

6、再通过映射生成六面体;

7、最后利用旋转对称完成整个球体的网格划分。

二次开发按照上述逻辑开发虽然可行,但存在一个棘手的问题——每次切割实体后,其solid,line的ID都会发生变化,切割后要重新去获取ID,这无疑给开发带来了诸多不便。

为了少写代码

本篇文章展示的二次开发方法采用了不同的策略。虽然六面体映射的基本思路与传统方法一致,也是中间划分正方形,但并没有对模型进行实际切割。而是采用了单元对单元映射的方式,直接进行六面体映射,再配合上旋转完成球体网格的划分。这种方法不仅避免了切割导致的ID变化问题,还简化了操作流程,提高了开发效率。
但是这个方法对于球面网格生成提出了要求,如果球面的网格和中间六面体的网格不一致,那么实体映射将会失败,当前程序未考虑到这一点,球面网格生成是自动的,这一点可以通过对圆球表面进行切割,指定edge的种子数量确定,让程序变得稳健。

对其他软件生成的球的六面体,例如LS-prepost,ansys,ansa对于球的六面体网格生成也是按照上述逻辑,中心一个正方形,外侧则是一个球映射六面体。

如果你对二次开发脚本感兴趣,欢迎后台留言“六面体球体划分”。



来源:TodayCAEer
HyperMesh二次开发其他软件ANSAANSYS
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-02-09
最近编辑:1天前
TodayCAEer
本科 签名征集中
获赞 22粉丝 59文章 274课程 0
点赞
收藏
作者推荐

基于复合材料的车架尺寸优化

关于复合材料,以及尺寸优化的内容不在赘述。根据查询的资料,在实际应用中,例如在全地形运输车辆的车架设计中,通过这些优化步骤(尺寸优化只是其中一步),复合材料车架的质量可以从原钢制车架的52.3kg减少到28.4kg,减重幅度达到45.7%。。在本教程中,您将对复合结构执行铺层厚度优化。在开始之前,请将本教程中使用的文件复 制到您的工作目录。http://majorv.help.altair.com/minorv/simulation/tutorials/hwsolvers/optistruct/OS-T-4020/bicycle_frame.zip 图1.自行车车架模型本教程的优化问题表述为:Objective:最小化体积。Constraints:A给定的最大节点位移。Design variables:thickness。一、启动HyperMesh并设置OptiStruct用户配置文件1.启动HyperMesh。此时将打开User Profile对话框。2.选择OptiStruct,然后单击OK。这将加载用户配置文件。它包括相应的模板、宏菜单和导入阅读器,将HyperMesh的功能缩减为与生成OptiStruct模型相关的功能。二、打开模型1.单击File>Open>Model。2.选择保存到工作目录的bicycle_frame.hm文件。3.单击Open。 bicycle_frame.hm数据库被加载到当前的HyperMesh会话中,替换任何现有数据。三、设置模型1 2 3 3.1创建Load Collectors1.在Model Browser中,右键单击并从上下文菜单中选择Create>Load Collector。默认Load Collector显示在Entity Editor中。2.对于Name ,输入crank。3.单击Color并从调色板中选择一种颜色。4.将Card Image设置为None。5.创建另一个Load Collector 。a)对于Name ,输入spcs。b)对于Card Image,选择None。3.2创建载荷1.在Model Browser的Load Collectors文件夹中,右键单击crank,然后从上下文菜单中选择Make Current。2.创建力。a)在Analysis页面中,单击forces面板。b)选择create子面板。c)将entity选择器设置为nodes,然后选择位于刚性spider中心的节点。d)将坐标系切换设置为global system。e)在magnitude = 字段中,输入-100.0。f)将方向定义设置为z-axis。g)单击create。h)单击return。在踏板点位置创建力。3.创建一个moment。a)在Analysis页面中,单击moments面板。b)选择create子面板。c)将实体选择器设置为nodes,然后选择位于刚性spider中心的节点。d)将坐标系切换设置为global system。e)在magnitude = 字段中,输入100.0。 f)将方向定义设置为x-axis。g)单击create。h)单击return。在踏板点位置创建一个力矩。Note:这是一个简化的加载模型,代表一个人的脚踩踏板的转换载荷。 图2.施加到自行车中轴的载荷3.3创建约束1.在Model Browser的Load Collectors文件夹中,右键单击spcs,然后从上下文菜单中选择Make Current。2.在Analysis页面中,单击constraints面板。3.选择create子面板。4.将entity选择器设置为nodes,然后通过单击刚性spider的中心来选择要约束结构的节点。 图3.应用于框架后轮位置的SPC 图4.应用于头管上部和下部的SPC5.约束所有dof。带有勾选的自由度将被约束,而未勾选的自由度将是自由的。自由度1、2和3分别是x、y和z方向的平移自由度。自由度4、5和6分别是x、y和z方向的旋转自由度。6.单击create。7.单击return。 约束将应用于所选节点。3.4创建Load Step1.在Model Browser中,右键单击并选择Create>Load Step。2.对于Name ,输入crank。3.将Analysis type设置为linear static。4.定义SPC。a)对于SPC,请单击Unspecified>Loadcol。b)在Select Loadcol对话框中,选择spcs,然后单击OK。5.定义LOAD。a)对于LOAD,单击Unspecified>Loadcol。b)在Select Loadcol对话框中,选择crank,然后单击OK。3.5创建设计变量1.在2D页面中,单击HyperLaminate面板。HyperLaminate打开。2.创建设计变量thk1。a)在LaminateBrowser中,展开设计变量,右键单击DESVAR,然后从上下文菜单中选择New。将添加一个新的设计变量,默认情况下名为NewDv1。b)在Desvar字段中,输入thk1。c)在Initial value字段中,输入1.0。d)在Lower bound字段中,输入0.0。e)在Upper bound字段中,输入2.0。f)单击Apply。3. 使用与thk1 相同的值,再创建四个名为thk2、thk3、thk4 和thk5 的设计变量。Tip:右键单击thk1并从上下文菜单中选择Duplicate来快速创建相同的设计变量。4.检查PCOMP分支以查看模型中的所有PCOMP。5.选择seat_tube PCOMP。将显示Laminate的详细信息。6.单击中间面板顶部Optimization旁边的复选框。铺层叠层顺序表中出现了新的字段,允许将设计变量与铺层厚度或铺层方向相关联。7.在铺层顺序表的第1 行中,将Thickness Designvar设置为thk1。 8.更改其他行的Thickness Designvar,如图5 所示。 图5.9.单击Update Laminate。设计变量thk(i) 现在与该Laminate的层(i) 的厚度相关联。在本例中,ply(11-i) 也是如此,因为这是一个对称的Laminate。10.对TOP_tube和down_tube使用与seat_tube属性相同的DV重复此过程。11.在菜单栏中,单击File>Exit。四、设置优化4 4.1创建优化响应1.在Analysis页面中,单击optimization。2.单击Responses。3.创建体积响应,它定义设计空间的体积分数。a)在responses= 字段中,输入volume。b)在响应类型下方,选择volume。c)将regional selection设置为total和no regionid。d)单击create。4.创建displacement响应。a)在response= 字段中,输入disp。b)在响应类型下方,选择static displacement。c)使用节点选择器,选择支架底部施加载荷的节点。d)将置换类型设置为total disp。dof1、dof2、dof3:在X、Y和Z方向上平移。dof4、dof 5、dof 6:绕X、Y和Z轴旋转。total disp:x、y和z方向的平移位移的合力。total Rotate:x、y和z方向的旋转位移的结果。e)单击create。5.单击return返回Optimization面板。4.2创建设计约束 1.单击dconstraints面板。2.在constraint= 字段中,输入Disp。3.单击response =并选择disp。4.选中upper bound旁边的框,然后输入1.8。5.使用loadsteps选择器,选择crank。6.单击create。7.单击return返回Optimization面板。在响应disp上定义约束。它指出,任何解决方案(最小体积)都需要具有小于1.8 mm的位移才可行。4.3定义目标函数1.单击objective面板。2.验证是否选择了min。3.单击response并选择volume。4.单击create。5.单击return两次以退出Optimization面板。五、运行优化1.在Analysis页面中,单击OptiStruct。2.单击save as。3.在Save As对话框中,指定写入OptiStruct模型文件的位置,并在文件名中输入bicycle_frameOPT。对于OptiStruct求解器模型,建议使用.fem扩展名。4.单击Save。input file字段显示在Save As对话框中指定的文件名和位置。5.将导出选项切换设置为all。6.将run options切换设置为optimization。7.将内存选项切换设置为memory default。8.单击OptiStruct运行优化。作业完成时,窗口中会显示以下消息:OPTIMIZATION HAS CONVERGED.FEASIBLE DESIGN (ALL CONSTRAINTS SATISFIED).如果存在错误消息,OptiStruct还会报告错误消息。可以在文本编辑器中打开bicycle_frameOPT.out文件,以查找有关任何错误的详细信息。此文件将写入与.fem文件相同的目录。 9.单击Close。六、查看结果在此步骤中,您将查看设计变量和目标历程记录。1.在Page Controls工具栏中,单击 以打开HyperView会话。2.在菜单栏中,单击File > Open > Session。3.在Open Session File对话框中,导航到您的工作目录并打开bicycle_frameOPT_hist.mvw文件。此文件包含目标、约束和设计变量相对于迭代历程记录的图。第一页显示目标函数。 图6.每次迭代的目标函数(Volume)第二页显示最大约束冲突。 图7.每次迭代的最大约束冲突(% [disp > 1.8 mm])接下来的页面显示了组合在一起的设计变量(DV),以便比较不同层的行为。可以通过打开bicycle_frameOPT.hgdata文件来创建此图。 图8.为每次迭代设计变量值 来源:TodayCAEer

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈