4. 多工况约束设计的基本类型与数学表达
在 OptiStruct 的拓扑优化中,约束是决定优化问题“可行域”的核心要素。多工况条件下,约束不再只是单一工况下的一个数值上限,而需要同时满足多个载荷工况对同一物理量的要求。理解体积、质量、位移、应力四类约束在多工况下的表达形式与适用条件,是正确建立优化模型、避免求解失败或结果不可用的前提。
一、体积约束与质量约束:全局资源约束
体积约束(VOLUME)与质量约束(MASS)在数学上属于同一类——对设计变量的全局积分施加上限。其一般形式为:
min f(x)
s.t. Σ ρₑ·vₑ ≤ V* (体积约束)
Σ ρₑ·vₑ·ρₘ ≤ M* (质量约束)
0 < ρ_min ≤ ρₑ ≤ 1
其中 ρₑ 为单元密度(设计变量),vₑ 为单元体积,ρₘ 为材料密度,V* 与 M* 分别为允许的体积与质量上限。关键点在于:体积/质量约束是全局约束,与工况数量无关。无论定义 1 个还是 10 个工况,材料总量只被限制一次,各工况共享同一份材料分布。因此它常作为多工况优化的“资源预算”,用来控制最终结构的轻量化程度。
适用条件上,体积约束适合以“材料用量百分比”为目标的轻量化设计,例如设定 VOLUME = 0.3 表示保留 30% 材料;质量约束则适合已有明确重量指标的场合,如某支架总质量不得超过 2.5 kg。二者一般只取其一,同时施加会造成冗余约束。需要注意的是,体积分数过小(如低于 0.1)时,多工况下结构可能无法同时承受所有载荷,求解器会因可行域过窄而难以收敛。
二、位移约束:多工况下最典型的约束类型
位移约束(DISP)在多工况中最为常见,因为不同工况往往对应不同的加载点和关注方向。其数学表达为:
|u_j^(k)| ≤ u*_j^(k) k = 1,2,…,N(工况编号)
j 为指定节点与方向
即第 k 个工况下、第 j 个自由度的位移绝对值不超过给定上限。OptiStruct 中通过 DRESP1 定义位移响应,再用 DCONSTR 施加约束,并借由工况卡片引用。多工况位移约束的实质是:每个工况独立计算位移,但共享同一套密度变量,因此优化器必须在“兼顾所有工况位移”的前提下重新分配材料。
适用条件:位移约束适合对刚度、变形量有明确要求的场景,例如悬臂结构自由端挠度不超过 0.5 mm,或某安装点在两种载荷下位移均不超过 0.2 mm。工程中常配合“最大位移”响应使用,也可对多个节点分别设限。若各工况位移限值差异过大,建议先做量纲归一化,否则优化器会偏向约束更严的工况。
三、应力约束:多工况下的强度校核
应力约束(STRESS)用于控制材料是否屈服或失效,其多工况表达为:
σ_vm^(k)(ρ) ≤ σ_allow k = 1,2,…,N
其中 σ_vm 为 von Mises 等效应力,σ_allow 为许用应力(常取材料屈服强度除以安全系数)。与位移约束不同,应力是密度的非线性函数,且在多工况下每个工况的应力场分布不同,优化器需要同时压低所有工况的峰值应力。OptiStruct 中通过 STRESS 响应配合 DRESP1 的 ATTRIB 指定工况,再以 DCONSTR 施加。
适用条件:应力约束适合强度主导、且材料利用率要求高的设计,如承力接头、支架等。需要注意三点:一是应力约束计算量大,建议先做无应力约束的拓扑优化,再在尺寸/形状优化阶段加入;二是多工况下应关注“最危险工况”,若某工况应力远高于其他,可单独提高其权重或先排除;三是应力约束容易产生局部奇异,需设置合理的应力上限与松弛系数。
四、四类约束在多工况下的对比与选用
下表汇总了四类约束在多工况下的核心差异,便于快速选用:
| 约束类型 | 数学形式 | 与工况关系 | 典型适用条件 |
|---|---|---|---|
| 体积约束 | Σρₑvₑ ≤ V* | 全局,与工况数无关 | 轻量化、材料预算控制 |
| 质量约束 | Σρₑvₑρₘ ≤ M* | 全局,与工况数无关 | 有明确重量指标 |
| 位移约束 | |u_j^(k)| ≤ u* | 逐工况独立计算 | 刚度、变形量要求 |
| 应力约束 | σ_vm^(k) ≤ σ_allow | 逐工况独立计算 | 强度校核、屈服控制 |
实际建模时,推荐组合方式是:体积或质量约束作为全局资源约束,位移或应力约束作为性能约束。例如某多工况支架优化可写为:体积分数 ≤ 0.35,工况 1 与工况 2 的最大位移均 ≤ 0.3 mm,同时两工况 von Mises 应力 ≤ 180 MPa。这样既控制了材料用量,又保证了各工况下的刚度与强度。
从图中可以直观看出:体积与质量约束位于“全局层”,只对材料总量设限;位移与应力约束位于“性能层”,需要逐工况计算并同时满足。多工况优化的本质,就是让同一套密度变量 ρₑ 在全局资源约束下,尽可能兼顾所有工况的性能要求。理解这一分层关系,就能在 OptiStruct 中正确选择约束类型、设置响应与工况引用,避免把全局约束误设为逐工况约束,或遗漏某个工况的性能校核。