了解如何使用HyperMesh和HyperStudy执行形状优化。您将使用有限元求解器Abaqus和HyperMorph来执行形状参数化。本教程还演示了当HyperMesh和HyperStudy在Windows中运行且求解器位于UNIX平台上时,如何解决问题。
在开始之前,请将本教程中使用的模型文件从/HS-1550/ 复 制到您的工作目录。
在本教程中,您将:
·使用HyperMorph生成形状变量。
·从HyperMesh中运行研究。
·使用HyperStudy执行形状参数化。
·设置研究。
·编写脚本以在UNIX上运行Abaqus,并在Preferences File.中注册脚本。
·运行优化研究。
本教程的目标是在应力约束为200MPa的情况下,将连接到轴的连杆的质量降至最低。输入变量由外部形状定义。
图1.
1.启动HyperWorks。
2.在Startup对话框中,验证HyperMesh是否已选中
3.对于Profile ,选择Abaqus。
4.单击Create Session。
5.在菜单栏中,单击File>Open>HyperMesh Model。
6.在Open Model对话框中,打开link.hm文件。
有限元模型出现在图形区域中。
图2.
1.如有必要,请启用HyperMorph面板。
a)在菜单栏中,验证View>Panels已启用。
b)在面板区域中,选择Tool子面板,然后单击HyperMorph。
图3.
2.创建域。
a)单击domains。
域子面板打开,您可以从中创建形状参数化的域。
b)单击第一个箭头,然后选择2D domains。
c)单击切换开关并选择all elements。
d)单击create。
图4.
生成域和手柄,并将其用于操纵网格的形状并生成形状优化所需的形状扰动。
图5.
3.单击return。
4.为链接的外边缘创建输入变量。
a)在HyperMorph面板中,单击morph。
Morph子面板将打开,从中可以变形网格的形状。
b)单击第二个箭头,然后选择translate。
c)在y val= 字段中,输入-5.0。
d)在模型视窗中,点击链接右上角的黄色手柄。
图6.
e)单击morph。
将生成第一个形状。
图7.
5.保存形状。
a)在Morph功能区的Save组中,单击Shapes工具。
此时将打开Edit Shapes对话框。
b)在Edit Shapes对话框中,单击。
保存形状。
c)右键单击保存的形状,从上下文菜单中选择**Rename,**然后输入sh1作为新名称。
d)单击Close。
6.通过单击菜单栏中的File>Save来保存模型。
7.关闭HyperWorks。
1.在文本编辑器中,打开HS-1550_solverScript.py。
HS-1550_solverScript.py文件使您能够在本地计算机上运行求解器。此python脚本使用您指定的参数调用Abaqus求解器。
2.将文件中的路径更改为计算机上的Abaqus可执行文件。
3.修改任何其他参数,例如内存请求。
4.**Optional:**在Windows上运行HyperStudy,并在Unix中运行Study Directory,并且求解器在Unix上运行
**Restriction:**仅适用于远程机器。
为了在远程Unix机器上运行命令,必须安装一个本地程序来远程传达命令。在此示例中,使用的是程序ssh,但存在其他等效或更好的程序。在大多数情况下,程序的协议需要通过密码进行身份验证。要使此设置正常工作,需要将环境配置为在没有活动密码输入的情况下工作。此设置可能需要网络管理员的帮助。
ssh_remote.bat文件是一个示例(Windows) 批处理文件,用于从Windows上运行的HyperStudy会话在Unix(run_abaqus.sh) 上运行脚本。
ssh user_nameunix_machine ./run_abaqus.sh %1 %HST_APPROACH_VARNAM % %HST_STEP_INDEX% %HST_APPROACH_MODELS%
批处理文件使用ssh命令登录到Unix计算机,并对HyperStudy创建的文件执行求解器。此脚本将在HyperStudy中注册为求解器脚本。
a)打开ssh_remote.bat文件
b)更改通用参数unix_machine以匹配网络上远程Unix计算机的名称。
c)更改通用参数user_name以匹配您在远程计算机上的登录信息。
**Note:**这个登录应该被配置为在这两台机器之间没有密码就可以工作。
d)打开run_abaqus.sh文件。
run_abaqus.sh文件是一个shell脚本,旨在在UNIX计算机上运行Abaqus解算器。此文件应放在Unix计算机上的HOME目录中。
e)在文件上使用命令dos2unix将文本格式更改为与Unix兼容:dos2unix run_abaqus.sh。
f)确保文件具有可执行权限,然后输入chmod 755 run_abaqus.sh。
g)编辑run_abaqus.sh文件,并根据需要修改可执行文件的路径和此命令的任何其他选项。
1.启动HyperStudy。
2.在菜单栏中,单击Edit>Solver Script。
此时将打开Register Solver Script对话框。
3.添加求解器脚本。
a)单击Add Solver Script。
此时将打开Add对话框。
b)在Label和Varname字段中,输入Abaqus。
c)从求解器脚本类型列表中,选择Generic。
d)单击OK。
图8.
4.在脚本Abaqus的路径列中,单击。
5.在Open对话框中,打开python.exe文件。
**Tip:**你也可以从Python Path字段中复 制并粘贴相同的路径和文件。
6.在Abaqus脚本的用户参数列中,单击。
7.在Open对话框中,导航到您的工作目录并打开HS-1550_solverScript.py文件。
8.**Optional:**仅适用于远程计算机:将Abaqus注册为求解器。
图9.
9.单击OK。
1.通过以下方式开始新研究:
a)在菜单栏中,单击File>New。
b)在功能区上,单击。
2.在Add Study对话框中,输入研究名称,选择研究的位置,然后单击OK。
**Important:**研究目录必须是你在映射的UNIX机器上的主目录。
3.转到Define Models步骤。
4.添加HyperMesh模型。
a)从Directory中,将HyperMesh(.hm) 文件link.hm拖放到工作区中。
图10.
b)在Solver Input File列中,输入link.inp。
这是HyperStudy在任何评估期间写入的求解器输入文件的名称。
c)在Solver execution script 列中,选择Abaqus。
d)在Solver Input Arguments列中,输入$filebasename。
e)**Optional:**此外,您可能需要编辑Abaqus环境文件。
例如:ask_delete=OFF或注释行ask delete=on(如果有)。
这是必需的,因为Abaqus会在重新运行分析时提示您覆盖旧文件。为了消除用户交互的需要,您需要命令Abaqus不要询问此问题并覆盖。
5.
6.图11.
7.导入变量。
a)单击Import Variables。
在HyperWorks中打开Model Parameters对话框。
b)展开Shape,然后单击sh1.S的。
c)将Lower limit更改为0.0,将Upper limit更改为1.0。
d)单击Add。
e)单击OK。
图12.
8.转到Define Input Variables步骤。
9.查看设计变量的下限、初始和上限范围。
图13.
1.转到Test Models步骤。
2.单击Run Define。
在study Directory中创建approaches/setup_1-def/ 目录。approaches/setup_1-def/run__00001/m_1目录包含输入文件,该文件是试运行的结果。
在此步骤中,您将创建两个输出响应:Mass和Max_Stress。
1.转到Define Output Responses步骤。
2.创建Mass output响应。
a)从Directory中,将位于approaches/setup_1-def/run__00001/m_1目录中的link.dat文件拖放到工作区中。
b)在File Assistant对话框中,将Reading技术设置为Altair® HyperWorks®,然后单击Next。
c)选择时间序列中的Single项,然后单击Next。
d)定义以下选项,然后单击Next。
将Type设置为ABAQUS.dat。
将Request设置为TOTAL MASS。
将Component设置为MASS。
e)将输出响应标记为Mass。
f)将表达式设置为First Element。
g)单击Finish。
Mass output响应将添加到工作区。
3.创建Max_Stress输出响应。
a)从目录中,将位于approaches/setup_1-def/run__00001/m_1目录中的link.obd文件拖放到工作区中。
b)在File Assistant对话框中,将Reading技术设置为Altair® HyperWorks®,然后单击Next。
c)选择Multiple items at multiple time steps(readsim),然后单击Next。
d)定义以下选项,然后单击Next。
将Subcase设置为Step-2。
将类型设置为S-Global-Stress components(PART-1-1)。
将Request设置为E1-E378。
将Component设置为vonMises。
e)将输出响应标记为Max_Stress。
f)将Expression设置为Maximum。
g)单击Finish。
Max_Stress输出响应将添加到工作区。
4.单击Evaluate以提取响应值。
1.添加优化。
a)在Explorer中,右键单击并从上下文菜单中选择Add。
b)在Add对话框中,选择Optimization。
c)对于Definition from,选择一种方法,然后单击OK。
2.转到Optimization>Definition>Define Output Responses步骤。
3.单击Objectives/Constraints - Goals选项卡。
4.添加目标。
a)单击Add Goal。
b)在Apply On列中,选择Mass(r_1)。
c)在Type列中,选择Minimize。