3. OptiStruct拓扑优化设置
拓扑优化在 OptiStruct 中并不是“点一下求解”就结束的动作,它本质上是一个把工程意图翻译成数学问题的过程。设计空间决定“允许材料待在哪里”,响应决定“用什么指标衡量结构表现”,约束决定“哪些指标不能越界”,目标函数决定“优化器朝哪个方向努力”,制造约束则决定“结果能不能被加工出来”。这五者共同构成一个完整的优化问题定义,缺一不可。本节围绕这五个要素,结合一个悬臂梁支架的教学示例,说明在 HyperMesh/OptiStruct 中如何实际设置,以及设置后如何判断问题是否合理。
一、设计空间:优化的“舞台”
设计空间(design space)是拓扑优化中允许材料存在和分布的几何区域。它通常由两部分组成:非设计区域(如螺栓安装孔、轴承座、与其他零件的配合面)和设计区域(可被优化器自由填充或挖空的区域)。在 HyperMesh 中,一般通过 Optimization → Topology → Design Variables 创建 DESVAR,并关联到 PSOLID 或 PSHELL 属性上。
设计空间不是越大越好。过大的设计空间会带来两个问题:一是计算量显著增加,二是优化器可能生成难以制造的复杂结构。工程上通常先根据载荷路径、装配边界和运动包络,把设计空间压缩到“合理但不过度约束”的范围。例如一个悬臂梁支架,固定端为 60 mm × 40 mm 的安装面,自由端承受 500 N 向下集中力,设计空间可设为 200 mm × 80 mm × 30 mm 的长方体,固定端附近 20 mm 区域设为非设计区域以保留螺栓连接。
二、响应:优化的“度量尺”
响应(response)是优化过程中被监控和约束的物理量。OptiStruct 中常见的响应类型包括:
- 质量/体积响应:
MASS、VOLUME,用于控制材料用量; - 柔度响应:
COMPLIANCE,即应变能,越小表示结构越刚; - 位移响应:
DISPLACEMENT,用于限制关键点变形; - 应力响应:
STRESS、VONMISES,用于强度控制; - 频率响应:
FREQUENCY,用于模态或动刚度约束; - 制造响应:如拔模方向、最小成员尺寸等。
响应定义在 Optimization → Responses 面板中完成。每个响应需要指定类型、关联的载荷步或工况,以及可选的区域。例如定义柔度响应时,选择 COMPLIANCE,并关联到静态工况 SUBCASE 1;定义体积响应时,选择 VOLUME,并指定设计区域属性。
三、约束与目标函数:问题的“边界”与“方向”
约束(constraint)是优化必须满足的条件,目标函数(objective)是优化器要最小化或最大化的量。在拓扑优化中,最常见的组合是:以体积分数为约束,以柔度最小为目标,即“在材料用量不超过给定比例的前提下,让结构最刚”。
在 OptiStruct 中,约束通过 Optimization → Dconstraints 定义,目标函数通过 Optimization → Objective 定义。例如:
DESVAR = 1
RESP1 = COMPLIANCE (SUBCASE 1)
RESP2 = VOLUME (PSOLID 1)
DCONSTR = 1 RESP2 , , 0.30
OBJECTIVE = MINIMIZE RESP1
这段卡片含义是:设计变量为 1,柔度响应 RESP1 关联工况 1,体积响应 RESP2 关联 PSOLID 1,约束要求体积分数不超过 0.30,目标是最小化柔度。实际工程中,体积分数常取 0.2~0.4,具体取决于载荷水平和刚度要求。若同时存在多个工况,可定义多个柔度响应并加权,或采用 MINMAX 目标。
四、制造约束:让结果“可加工”
拓扑优化得到的数学最优结构往往包含大量细杆、尖角和内部空腔,直接用于铸造或增材制造会带来问题。OptiStruct 提供多种制造约束:
- 最小成员尺寸(
MINDIM):限制最小杆件或壁厚,避免过细结构; - 最大成员尺寸(
MAXDIM):限制最大实体区域,防止材料堆积; - 拔模方向(
DRAW):保证铸造拔模; - 挤压约束(
EXTRUSION):使结构沿指定方向等截面; - 对称约束(
PATTERN):强制对称或重复布局。
这些约束在 Optimization → Manufacturing Constraints 中设置。以最小成员尺寸为例,若设计空间最小特征为 5 mm,可设 MINDIM = 8,表示优化结果中任何杆件直径不小于 8 mm。拔模方向则需指定一个向量,如 Z = (0,0,1),并设置拔模角。
五、设置顺序与检查要点
实际项目中,建议按以下顺序组织设置:先划分设计/非设计区域并创建 DESVAR,再定义响应,然后建立约束和目标函数,最后添加制造约束。每完成一步,可用 Optimization → Analysis → Optimize 提交一次短迭代,观察 .out 文件中的收敛曲线和约束违反情况。
判断设置是否合理,重点看三个信号:一是体积分数是否在迭代中稳定趋近约束值;二是柔度是否单调下降并趋于平缓;三是密度云图中是否出现大面积灰色过渡区(通常表示惩罚不足或约束过紧)。若出现振荡或无法收敛,优先检查约束是否冲突、制造约束是否过严、网格是否过粗。