您现在的位置:e-works > 智造书屋 > 书籍列表 > OptiStruct & HyperStudy 理论基础与工程应用 > 实例:支架的尺寸优化

第四章 尺寸优化技术实例

第一节 实例:支架的尺寸优化

本实例展示了如何在壳单元的焊接支架上进行尺寸优化以及通过定义离散设计变量,进行尺寸优化。图4-1所示的是带有载荷和约束的结构模型文件。优化的目标是在指定某一应力约束条件下达到使用材料最少。支架的厚度变化是相互关联的,即在达到最优化设计时,支架两侧的构件的厚度满足一定的数学关系。
1
图4-1  焊接支架的结构模型
 
模型文件中,约束条件、载荷、材料属性和载荷工况(载荷步)已经定义。
优化问题如下。
 
  • 设计目标:体积最小化。
  • 设计约束:支架上最大Von Mises应力低于100MPa。
  • 设计变量:支架厚度。
     
下面的练习内容如下:
 
  • 在HyperMesh中定义尺寸优化问题。
  • 求解尺寸优化问题。
  • 定义离散设计变量在此进行优化求解。
  • 查看结果。
     
1 启动HyperMesh Desktop,设置User Profile,打开文件
(1)启动HyperMesh Desktop。
(2)在User Profile对话框中选择OptiStruct并单击OK按钮。
(3)这样就加载了用户配置。它包括与以Bulk数据格式组织模型的RADIOSS和OptiStruct相对应的HyperMesh的功能的面板、宏菜单和导入器。
(4)User Profiles…也可以通过工具栏的Preferences下拉菜单进入。
(5)单击Open Model按钮 。
(6)选择bracket_size.hm文件,文件位于HyperWorks安装路径下的/tutorials/hwsolvers/ optistruct/文件夹,并单击Open按钮。
(7)bracket_size.hm数据文件在当前HyperMesh中载入。
 
2 定义设计变量
(1)在Analysis页面下,选择optimization面板。
(2)选择size面板。
(3)使用面板左侧的单选框选择desvar子面板。
(4)单击desvar =并输入part1。
(5)单击initial value =并输入2.5。
(6)单击lower bound =并输入1.0。
(7)单击upper bound =并输入2.5。
(8)将该变量的设置选项切换为move limit default。
(9)单击create按钮。
(10)一个名为part1的设计变量已经创建。该设计变量初始值为2.5,下限值为1.0,上限值为2.5。
(11)重复(4)~(9)步创建part2,使用相同的初始值和上下限。
(12)使用面板左侧的单选框选择generic relationship子面板。
(13)单击name =并输入part1_th。
(14)单击entity selection切换到prop。
(15)单击prop从component列表中选择part1。
(16)从comp按钮下自动弹出一个属性选择按钮。
(17)单击属性选择按钮,从弹出的菜单中选择Thickness T。
(18)单击designvars按钮。
(19)设计变量列表出现。
(20)从弹出的设计变量列表中,激活part1。
(21)该处线性系数(part1后面文本框中的数值)已被自动设置为1.000。
(22)单击return按钮。
(23)单击create按钮。
(24)即创建设计变量与属性的关联part_th,它将设计变量part1与名为part1的部件的PSHELL卡片厚度属性关联。
(25)重复(12)~(19)步,创建part2_th,将设计变量part2与part2的 PSHELL卡片厚度属性关联起来。
(26)单击return按钮返回Optimization Setup面板。
 
3 设计变量关联
(1)选择desvar link面板。
(2)单击dlink =并输入link1。
(3)单击dependent下的designvar=,选择part2。
(4)单击independent下的designvars,激活part1。
(5)该处线性系数(part1旁边文本框中的系数) 自动设置为1.000。
(6)单击return按钮。
(7)设置C0 =0.000,CMULT =1.000。
(8)单击create按钮。
(9)此时设计变量part2与设置变量“part1”成线性关系。
(10)单击return按钮返回Optimization Setup面板。
 
4 定义响应
详细描述可以在OptiStruct用户手册Responses板块下找到。
(1)选择responses面板。
(2)单击response =并输入volume。
(3)单击response type切换开关并从弹出的快捷菜单中选择volume。
(4)确认类型选择为total。
(5)单击create按钮。一个关于整个模型的volume体积响应已定义。
(6)单击response =并输入stress1。
(7)单击response type,从下拉菜单中选择static stress。
(8)单击props按钮,选择part1。
(9)单击select按钮。将出现一个应力类型选择按钮。
(10)单击“应力选择”按钮,并在弹出的快捷菜单中选择von mises。
(11)单击von mises下的选择按钮并从下拉菜单中选择both surfaces。
(12)单击create按钮。一个关于part1的单元响应stress1已定义。
(13)单击response =并输入stress2。
(14)单击props按钮。
(15)单击屏幕上任意一个粉红色壳单元,并选择part2这个部件。
(16)单击select按钮。
(17)单击create按钮。一个关于part2的单元响应stress2已定义。
(18)单击return按钮返回Optimization Setup面板。
 
5 定义目标函数
在本例中,目标函数是最小化之前定义的体积响应。
(1)选择objective面板。
(2)单击面板左上角的切换开关,并从下拉菜单中选择min。
(3)单击response =并从响应列表中选择volume。
(4)单击create按钮。
(5)目标函数定义完成。
(6)单击return按钮返回Optimization Setup面板。
 
6 定义约束
被定义为目标函数的响应不能再被定义为约束,在此模型中,不约束体积响应。约束stress1和stress2响应的上限值。
(1)选择dconstraints面板。
(2)单击constraint =并输入stress1。
(3)单击response =并从响应列表中选择stress1。面板中将会出现loadsteps按钮。
(4)单击loadsteps按钮。
(5)激活STEP并单击select按钮。
(6)激活upper bound =。
(7)单击upper bound =并输入100。
(8)单击create按钮。一个关于stress1响应的约束已定义。该响应具有上限值100,并与STEP工况相连。
(9)单击constraint =并输入stress2。
(10)单击response =并从响应列表中选择stress2。
(11)单击loadsteps按钮。
(12)激活STEP并单击select按钮。
(13)激活upper bound =。
(14)单击upper bound =并输入100。
(15)单击create按钮。一个关于stress1响应的约束已定义。该响应具有上限值100,并与STEP工况相连。
(16)单击return按钮两次返回主菜单。
 
7 存储HyperMesh数据
(1)在File 下拉菜单中,选择Save As命令。
(2)弹出Save file对话框。
(3)选择想要保存数据的路径,并输入文件名bracket_size.hm,单击Save按钮。