2. OptiStruct拓扑优化基础
拓扑优化不是“把模型丢给软件自动减重”,而是一个由设计变量、响应、约束和目标函数共同定义的数学问题。OptiStruct 的优化求解器本质上在反复执行“分析—灵敏度计算—设计更新”的循环,直到满足收敛条件。理解这五个要素以及它们之间的数据流,是后续所有增材制造优化案例的基础。
设计变量:优化的“可调旋钮”
在 OptiStruct 中,拓扑优化的设计变量是每个单元的相对密度 ρe,取值范围通常为 0.01~1.0。ρe 接近 1 表示该处保留材料,接近 0.01 表示该处可去除。软件通过 DESVAR 与 TOPOLOGY 卡片定义设计域,并用 DTPL 卡片指定哪些属性(PSHELL、PSOLID)参与优化。设计域必须与有限元网格绑定,因此网格质量直接决定优化结果的可制造性。
除密度变量外,OptiStruct 还支持 TOPVAR 中的 MINMEM(最小成员尺寸)和 MAXMEM(最大成员尺寸)控制,以及 MANUFACTURING 卡片下的拔模、挤压、对称等制造约束。这些参数不改变设计变量本身,但会改变设计更新的可行域。
响应:把物理量翻译成优化语言
响应(Response)是优化器可以“看到”的物理量。OptiStruct 常用响应包括:
MASS/VOLUME:整体质量或体积,常用于目标函数或约束;COMPLIANCE:柔度,即应变能,最小化柔度等价于最大化刚度;DISPLACEMENT:指定节点或节点的位移;STRESS/VONMISES:单元或节点应力;FREQUENCY:模态频率;WEIGHTED_COMPLIANCE:多工况加权柔度。
响应通过 DRESP1 卡片定义,并可在 DRESP2 中组合成更复杂的函数。例如,把多个工况的柔度加权求和,得到一个综合响应。响应定义错误是优化失败最常见的原因之一:如果响应没有正确关联到属性或工况,优化器会“看不见”约束,导致迭代发散或结果无意义。
约束与目标函数:定义“要什么”和“不能怎样”
约束(Constraint)是优化必须满足的边界条件,目标函数(Objective)是优化要最小化或最大化的量。在 OptiStruct 中,二者都在 OPTIMIZATION 子工况中通过 DESOBJ 和 DCONSTR 指定。典型组合是:
- 目标:最小化柔度(
DESOBJ(MIN)=1,响应 1 为 COMPLIANCE); - 约束:体积分数 ≤ 0.3(
DCONSTR关联 VOLUME 响应,上限 0.3); - 附加约束:一阶频率 ≥ 80 Hz,最大应力 ≤ 材料屈服强度的 0.8 倍。
目标函数只能有一个,约束可以有多个。约束过多或过紧会导致可行域为空,求解器无法收敛。实际工程中建议先只保留体积约束和柔度目标,得到基础拓扑后再逐步加入频率、应力或制造约束。
优化流程与求解器设置
OptiStruct 拓扑优化的标准流程如下:
- 建立有限元模型,划分设计域与非设计域网格;
- 定义材料、属性、工况与边界条件;
- 用
DESVAR、TOPOLOGY、DTPL定义设计变量; - 用
DRESP1定义响应; - 用
DESOBJ指定目标,用DCONSTR指定约束; - 在
OPTIMIZATION子工况中引用上述卡片; - 提交求解,监控
.out文件中的迭代历史与收敛曲线; - 用
OSSmooth或 HyperMesh 提取等值面,生成可制造的几何。
求解器设置方面,OPTIMIZATION 子工况中的 DESMAX 控制最大迭代次数(默认 30),MINDIM 控制最小成员尺寸,CHECKER 控制棋盘格抑制。收敛判据通常为连续两次迭代的目标函数变化小于 OBJTOL(默认 0.001)。若迭代在 30 次内未收敛,可适当增大 DESMAX 或放宽约束。
上图把五要素与求解循环放在同一视图中:左侧是优化问题的定义输入,中间是求解器反复执行的四个步骤,右侧是实际提交的卡片、监控文件和最终输出。可以看到,设计变量、响应、约束和目标函数并不是孤立的卡片,而是通过 OPTIMIZATION 子工况被求解器统一读取,并在每次迭代中重新计算灵敏度、更新密度场。
一个可复现的示例设置
假设一个 200 mm × 80 mm × 10 mm 的悬臂梁设计域,材料为铝合金(E = 70 GPa,ν = 0.33,ρ = 2.7 g/cm³),左端固定,右端下表面施加 500 N 集中力。目标是最小化柔度,约束体积分数不超过 0.3。关键卡片可写为:
DESVAR, 1, TOPO, 0.01, 1.0
TOPOLOGY, 1, PSOLID, 1, , , , 1
DRESP1, 1, COMP, COMPLIANCE
DRESP1, 2, VOL, VOLUME
DESOBJ, MIN, 1
DCONSTR, 1, 2, , 0.3
OPTIMIZATION, 1
DESMAX, 30
MINDIM, 4.0
OBJTOL, 0.001
提交后,在 .out 文件中应看到类似“Iteration 1: Objective = 1.25E+02, Volume = 0.30”的记录。若第 8 次迭代后目标函数变化小于 0.001,求解器停止。此时用 HyperView 查看密度云图,ρe > 0.5 的区域即为建议保留的材料。再用 OSSmooth 以 0.5 等值面提取 STL,即可得到可导入增材制造切片软件的几何。