【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

0 评论

 

 

 

HyperWorks优化实例向导第三期来啦!上一讲我们介绍了各种梁单元相关的优化方法,这一讲打算再扩展一下这个主题,顺便展示一下Altair HyperMesh™的另类用法。

 

 

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

首先介绍一个使用tcl脚本实现梁结构参数优化的例子。

 

 

优化三要素如下:

1

设计变量

 

👉 L2是顶部长度尺寸变量,范围是10~18米(底部是车道/人行道位置,所以L1是固定值,不进行优化)。

👉H是外形高度尺寸变量,范围是1~10米

👉L2分成的段数也是一个变量,取值范围是3~20段

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

👉 圆形截面的半径也是一个优化变量,取值范围是20mm~100mm

👉 工字梁截面也是优化变量,但是只能在预定义的5种工字梁截面中进行选择。

所以模型可能是这样的:

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

也可能是这样的:

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

下图是右上角三个梁连接部位的局部放大视图,3D显示分离只是软件显示的效果,实际上是完全焊接为一体的。

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

响应是下图中底边中点999999号节点的y向位移绝对值和体积响应。

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

2

优化约束

 

999999号节点的y向位移绝对值小于50mm

3

优化目标

 

体积最小化

 

整个优化过程分为两步:

第一步:通过HyperMesh批处理程序hmbatch.exe运行一个tcl文件产生后续Altair OptiStruct™计算用的fem模型文件。为了方便后续Altair HyperStudy优化时选取响应点,对提取优化位移响应的节点进行了重新编号。

 

第二步:HyperStudy调用OptiStruct运行刚刚得到的fem文件得到优化计算结果。

 

TIPS:为了防止还没有开始优化就栽跟头,还需要以下预备工作!

1

编写tcl脚本,这个脚本从零开始完成了所有建模工作,如果有兴趣可以看看下面的视频教程(目前已经是HyperMesh二次开发视频教程库)的一部分。

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

(点击上方图片获取下载链接)

2

在cmd窗口用hmbatch.exe运行tcl脚本得到fem文件具体方法是用cd命令切换到tcl脚本所在目录后,执行如下程序:

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

如果执行成功,会在tcl目录下生成一个bridge.fem文件。

3

使用OptiStruct程序运行bridge.fem文件得到计算结果。

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

如果计算结果正确,那么说明tcl脚本得到的fem文件没毛病,接下来可以开始优化工作了!

  优化tcl文件

 

使用HyperStudy的Editor工具参数化tcl文件,并保存为tpl文件。文件很长,涉及参数化的部分如下:

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型
【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

  添加模型

 

启动HyperStudy,工作目录设定为tcl文件所在目录,然后添加两个模型。

 

模型1是Parameterized File,求解器选择HM Batch ,参数输入-tcl ${file}

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

模型2的类型是Operator,需要fem文件作为输入文件,但是此时还没有fem文件在该目录下,需要先点击Next到Test Models步骤后先运行一下model1生成一个fem文件(也可以从外部拷贝一个到模型1的目录下骗一下HyperStudy😄)。

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

运行后再次回到Define Models步骤继续,点击Model Resources,然后在对话框中添加一个resource,类型是Add File,表示每一次迭代运算都会生成一个新的模型。

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

Define Models设置好后如下图所示:

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

  定义设计变量

 

5个设计变量的范围如下:

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

设计变量的数据类型、模式及离散取值如下图:

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

注意到isecname项设置为了Categorical,表示各个截面之间没有先后关系。如果设置为离散变量,HyperStudy认为各个截面是有先后顺序的,DOE的时候可能只取前后两个截面进行。

  创建两个响应

 

分别是体积和999999节点的y向位移绝对值。

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

  优化设置

 

优化只需要设置好目标和约束。

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

  优化算法选择GRSM

 

迭代次数为15次(问题比较简单,因此不需要太多迭代步,以节约时间)。

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

  优化结果

 

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

  导入结果

 

将优化结果的fem文件导入到HyperMesh看看劳动成果,效果如下:

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

各个设计变量的值以及响应如下:

体积从1.42e9减小到了1.14e9

y向位移绝对值从48减小到了37

刚度提高的同时重量还变小了,有什么理由不使用优化呢?

 

其实上面这个优化例子,绝大部分的工作量都被写脚本给揽走了,从节点-单元-材料-属性-载荷-工况一步步都是代码搞定的。

 

如果你遇到了类似的需求可是自己又搞不定脚本编写,不妨联系一下澳汰尔公式的ESG团队,他们也许可以帮你哦。

 

 

具体方法我们也来举个🌰。下面这个例子是HyperStudy开发部门的同事分享的。

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

RIB1板只可以调厚度,其余板只可以选择有或者没有。

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

对下图中ID号为3的component选择export

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

对应命令*entitysuppressoutput components 3 0

修改ID号为1的属性的厚度为0.00545

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

对应命令*setvalue props id=1 STATUS=1 95=0.00545

 

前后再加上打开模型,加载OptiStruct模板,后面在加上导出fem文件,完整的tcl脚本如下(总共就10行,而且大部分都是抄的command.tcl):

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

有了tcl脚本后,剩下的事情和上一个例子也就差别不大了。

  优化tcl文件

 

使用HyperStudy的Editor工具参数化tcl文件,并保存为tpl文件。

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

  添加模型

 

启动HyperStudy,工作目录设定为tcl文件所在目录,然后添加第一个模型。

 

模型1是Parameterized File,求解器选择HM Batch ,参数输入-tcl ${file}

 

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

由于每次运行都需要rib_parameterization.hm,所以需要通过Model Resources 复制到工作目录。

 

模型2的类型是Operator,需要fem文件作为输入文件,但是此时还没有fem文件在该目录下,需要先点击Next到Test Models步骤后先运行一下model1生成一个fem文件(也可以从外部拷贝一个到模型1的目录下骗一下HyperStudy😄)。

 

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

运行后再次回到Define Models步骤继续,点击Model Resources,然后在对话框中添加一个resource,类型是Add File。

 

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

Define Models设置好后如下图所示:

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

  定义设计变量

 

4个设计变量的变化范围如下:

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

设计变量的数据类型、模式及离散取值如下图:

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

  创建两个响应并设置好目标和约束

 

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

  优化算法选择GRSM

 

迭代次数为15次(问题比较简单,因此不需要太多迭代步,以节约时间)。

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

  优化结果

 

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

各个设计变量的值以及响应如下图所示:

 

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型
【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

这个例子当然不是实际的结构,主要目的是展示一下HyperMesh怎么样在后台修改模型的。

 

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

实际上如果要做DOE也是类似的

 

我们可以做一个部分因子法DOE:

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

各次试验的变量组合即响应如下:

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

线性效应如下:

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

帕累托图如下:

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

通过使用程序控制HyperMesh,优化一下就变得自由了,例如某处的结构可以如下所示的各种不同结构中的一种。实际上几乎有无限的可能性。

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

或者是下图的样式

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

这些变形对于morph来说恐怕要求太高了,但是HyperMesh脚本却是可以轻松搞定的,只需要把morph的几个中间状态网格预存到hm文件里面,优化时就可以轻松切换了。

 

例2的的HyperMesh模型需要使用2020版才能打开哟~

 

 

如果你要优化下图中的输电塔,你可以这样做:

1.先从拓扑优化得到各个梁的位置分布

2.创建梁单元模型进行截面大小的优化

3.如果你想更进一步,还可以在上一步中同时加上形状优化

【HyperWorks优化实例向导】之HyperMesh后台生成参数化优化模型

 

相关软件
HyperWorks是一套杰出的企业级CAE仿真平台解决方案,它整合了一系列一流的仿真工具,包括建模、分析求解器、优化、可视化、流程自动化和数据管理等解决方案,在线性、非线性、结构优化、流固耦合、多体动力学、流体动力学等领域有着广泛的应用。
相关阅读