第七章 ANSYS高级分析
第四节 拓扑优化范例解析——弹性梁的拓扑优化分析
1.问题描述
图7-23表示一个承载的弹性梁。梁的两端固定,承受两个载荷工况。梁的一个面是用一类单元划分的,用于拓扑优化,另一个面是用二类单元划分的,不做优化。目标是结构柔度能量最小(每一载荷)独立计算,最后的形状使第一类单元的体积减少50%。
2.问题分析
本问题是用下列的ANSYS命令流求解的。两个载荷工况定义并用LSWRITE命令写入文件。使用ANSYS选择功能,单元SOLID82通过类型号1和2分别指定优化和不优化部分。TOCOMP命令定义问题有两个载荷工况并用参照名MCOMP,TOVAR将MCOMP定义为目标(TOVAR,VOLUME,CON,50),要求50%体积减少。TOEXE命令在本例中没有使用,代之以用TOLOOP宏命令指定最大迭代次数为12次。
优化执行后,最后的目标(柔度)和约束(体积)的历史被绘图和打印输出,最优加权柔度值由ANSYS数据库(用*GET命令)获得。
3.求解结果
图7-24表示上例的计算结果。这些结果存入top.grph文件便于后续的显示处理。如果是交互的运行ANSYS程序,将/SHOW命令删除以观看每次迭代的结果。
图7-25为目标(柔度)和约束(体积)的历史图。优化结果柔度值为0.6E-0.4。
4.命令流文件
/PREP7 !进入前处理器
BLC4,0,0,3,1 !生成实体模型
ET,1,82 !二维实体单元,1号为优化
ET,2,82 !2号不优化
MP,EX,1,118E9 !线性各向同性材料
MP,NUXY,1,0.3
ESIZE,0.05 !较细的网格密度
TYPE,1
AMESH,ALL !自由矩阵网格划分
NSEL,S,LOC,X,0,0.4 !选择不优化的部分
ESLN
TYPE,2
EMODI,ALL !定义2号单元
ALLSEL
NSEL,S,LOC,X,0
D,ALL,ALL,0 !在X=0处固定
NSEL,S,LOC,X,3
D,ALL,ALL,0 !在X=3处固定
FORCE=1000 !载荷数值
NSEL,S,LOC,X,1
NSEL,R,LOC,Y,1
F,ALL,FY,FORCE !定义第一个载荷工况
ALLSEL
LSWRITE,1 !写第一个载荷工况
FDEL,ALL
NSEL,S,LOC,X,2
NSEL,R,LOC,Y,0
F,ALL,FY,-FORCE !定义第二个载荷工况
ALLSEL
LSWRITE,2 !写第二个载荷工况
FDEL,ALL
TOCOMP,MCOMP,MULTIPLE,2 !定义拓扑优化的多柔度函数“MCOMP”
TOVAR,MCOMP,OBJ !定义“MCOMP”作为拓扑目标
TOVAR,VOLUME,CON,,50 !定义“VOLUME”作为拓扑约束,50%体积
TOTYPE,OC !指定求解方法
TODEF !初始化拓扑优化过程
/SHOW,topo,grph !将图形输出到文件(在交互下删除本命令)
/DSCALE,,OFF
/CONTOUR,,2
TOLOOP,12,1 !执行不多于12次迭代
FINISH
TOGRAPH,OBJ !绘制最后目标(柔度)的历史
TOGRAPH,CON !打印最后目标(柔度)的历史
TOPRINT,CON !打印最后约束(体积)的历史
*GET,TITER,TOPO,,ITER !得到迭代次数
*GET,COMP,TOPO,TITER-1,TOHO !得到最后柔度值
图7-23表示一个承载的弹性梁。梁的两端固定,承受两个载荷工况。梁的一个面是用一类单元划分的,用于拓扑优化,另一个面是用二类单元划分的,不做优化。目标是结构柔度能量最小(每一载荷)独立计算,最后的形状使第一类单元的体积减少50%。
图7-23 承受两个载荷工况的梁
2.问题分析
本问题是用下列的ANSYS命令流求解的。两个载荷工况定义并用LSWRITE命令写入文件。使用ANSYS选择功能,单元SOLID82通过类型号1和2分别指定优化和不优化部分。TOCOMP命令定义问题有两个载荷工况并用参照名MCOMP,TOVAR将MCOMP定义为目标(TOVAR,VOLUME,CON,50),要求50%体积减少。TOEXE命令在本例中没有使用,代之以用TOLOOP宏命令指定最大迭代次数为12次。
优化执行后,最后的目标(柔度)和约束(体积)的历史被绘图和打印输出,最优加权柔度值由ANSYS数据库(用*GET命令)获得。
3.求解结果
图7-24表示上例的计算结果。这些结果存入top.grph文件便于后续的显示处理。如果是交互的运行ANSYS程序,将/SHOW命令删除以观看每次迭代的结果。
图7-24 拓扑优化结果——50%体积减少
图7-25为目标(柔度)和约束(体积)的历史图。优化结果柔度值为0.6E-0.4。
图7-25 目标和约束函数历史图
4.命令流文件
/PREP7 !进入前处理器
BLC4,0,0,3,1 !生成实体模型
ET,1,82 !二维实体单元,1号为优化
ET,2,82 !2号不优化
MP,EX,1,118E9 !线性各向同性材料
MP,NUXY,1,0.3
ESIZE,0.05 !较细的网格密度
TYPE,1
AMESH,ALL !自由矩阵网格划分
NSEL,S,LOC,X,0,0.4 !选择不优化的部分
ESLN
TYPE,2
EMODI,ALL !定义2号单元
ALLSEL
NSEL,S,LOC,X,0
D,ALL,ALL,0 !在X=0处固定
NSEL,S,LOC,X,3
D,ALL,ALL,0 !在X=3处固定
FORCE=1000 !载荷数值
NSEL,S,LOC,X,1
NSEL,R,LOC,Y,1
F,ALL,FY,FORCE !定义第一个载荷工况
ALLSEL
LSWRITE,1 !写第一个载荷工况
FDEL,ALL
NSEL,S,LOC,X,2
NSEL,R,LOC,Y,0
F,ALL,FY,-FORCE !定义第二个载荷工况
ALLSEL
LSWRITE,2 !写第二个载荷工况
FDEL,ALL
TOCOMP,MCOMP,MULTIPLE,2 !定义拓扑优化的多柔度函数“MCOMP”
TOVAR,MCOMP,OBJ !定义“MCOMP”作为拓扑目标
TOVAR,VOLUME,CON,,50 !定义“VOLUME”作为拓扑约束,50%体积
TOTYPE,OC !指定求解方法
TODEF !初始化拓扑优化过程
/SHOW,topo,grph !将图形输出到文件(在交互下删除本命令)
/DSCALE,,OFF
/CONTOUR,,2
TOLOOP,12,1 !执行不多于12次迭代
FINISH
TOGRAPH,OBJ !绘制最后目标(柔度)的历史
TOGRAPH,CON !打印最后目标(柔度)的历史
TOPRINT,CON !打印最后约束(体积)的历史
*GET,TITER,TOPO,,ITER !得到迭代次数
*GET,COMP,TOPO,TITER-1,TOHO !得到最后柔度值