J3-03 冷板流道拓扑优化:从目标函数到可制造几何
课程代码 J3-03 · 板块 J 仿真分析 CAE / J3 换热器·部件级 CFD 时长 约 4 小时(5 讲 + 1 次「基线蛇形冷板 → 拓扑优化 → 可制造几何」实操) 适合对象 冷板 / 流道方向的 CFD 与结构优化工程师(必修);冷板结构设计岗(必修——第 4 讲的可制造约束与第 5 讲的收益核算是你签字的那一页);电池包热管理系统工程师建议了解(选修——第 1 讲的目标函数选择与第 5 讲的「何时不划算」是你要拍的板) 前置 J3-02 电池包液冷流道 CFD 与流量均匀性 电池包液冷流道 CFD 与流量均匀性(本课全课沿用它的流量与泵功口径);J2-01 CFD 基础、湍流模型与网格划分(Fluent/STAR-CCM+) CFD 基础、湍流模型与网格划分;A2-01 管网水力学:沿程/局部压降与流量分配 管网水力学:沿程/局部压降与流量分配;D2-01 电池液冷冷板设计:流道、压降与温差均匀性 电池液冷冷板设计:流道、压降与温差均匀性(本课的基线与温差拆账口径由它给)。体系外前置(需自备):多元函数的梯度与拉格朗日乘子法、链式法则;一门求解器的脚本化能力(journal / macro / Python 驱动) 本讲义定位 讲师授课蓝本 / 学员自学讲义,是 J3-03 课题的完整展开版
引言:流道不是被画出来的,是被一个目标函数挑出来的
先把这门课要解决的那件事说清楚,因为它跟「再做一版 CFD」完全不是一回事。
拿到一块基线蛇形冷板,做过 CFD,发现两件事:压降偏高、进出口两端的温差偏大。接下来通常的动作是——把流道加宽一点、把弯头改成两条并联、把进出口挪个位置,再算一遍。这条路走得通,但它有一个说不出口的前提:你已经在心里假定了流道长什么样,你调的只是这个形状上的几个数。蛇形永远是蛇形,加宽的蛇形还是蛇形。
拓扑优化把这个前提拿掉了。它不问「这条蛇形该多宽」,它问的是:设计域里的每一小块材料,到底该让冷却液走过去,还是该留成实心的铝。这个问题的答案是一整个场,而不是几个数;流道的拓扑——有几条主干、在哪里分叉、有没有环路——是算出来的结果,不是画出来的输入。
这件事听起来很美,而它在工程上有三个说不清就会翻车的地方,本课的五讲就是围着这三个地方排的。
钉子①:目标函数选错,算出来的形状是另一个东西,而且它看起来完全合理。「让冷板更凉一点」这句话在数学上至少对应三个互不相同的优化问题——最小平均温度、最小最高温度、最小温差。它们不是同一件事的三种写法,它们的最优解形态不同,而且可以反向变化:第 1 讲会用一个五行手算的例子给出一组数——某个方案的平均温度比另一个低 7.2%,而它的温差从 0 K 涨到了 9.1 K。⇒ 只报「优化后更凉了」这一句话,是一句可以同时为真和为假的话。
钉子②:拓扑优化能算得起,靠的是伴随法;而伴随法能不能用,取决于你的目标函数可不可微。设计变量有十几万个,用有限差分逐个试探,一次迭代要跑十几万次 CFD——第 3 讲会把这个账算成年份。伴随法把它压到「一次正解 + 一次反解」。代价是:目标函数必须对设计变量可微。而「最高温度」和「最大温差」这两个工程上最想要的目标,恰好都是 max 型、不可微。⇒ 必须先做可微化聚合(p-范数或 KS 函数),而聚合参数取多大,是一个有解析误差界可算的决定,不是拍脑袋。第 3 讲把这个界写成一行,并用它反解出参数下限。
钉子③:算法交出来的是一个 0 到 1 之间的连续场,不是一张图纸。从这个场到一块能冲压、能钎焊、能通过耐压试验的冷板,中间隔着过滤、投影、阈值提取、连通性检查、最小流道宽检查、圆角补齐六道工序,每一道都在改性能。⇒ 优化收敛时求解器报出的那个目标函数值,不是这块冷板的性能。第 4、5 讲讲怎么把这两个数的差算出来、分账,并判断收益还剩多少。
⚠ 三根钉子相互独立:①管「你算的是不是你想要的那个问题」,②管「这个问题算不算得起、梯度靠不靠谱」,③管「算出来的东西能不能做成零件、做成之后还剩多少收益」。三者都过了,才叫一次可以交付的拓扑优化。
本课的定义域与本课不覆盖的
本课的定义域只有一段:单相液冷冷板(或类似的液冷流道件)在层流域内、稳态、共轭传热条件下的流体拓扑优化——从优化问题的提法,到密度法与伴随灵敏度的原理,到几何提取与可制造约束,再到回代高保真 CFD 的收益核算与「值不值得做」的判断。本课交付的是方法与判据,不是任何一个目标值。
下面这些事不在本课射程内,本课只写去向、不给限值、不给条款内容:
- 通用 CFD 前处理、湍流模型选型、壁面律与 y⁺、网格无关性与 GCI → J2-01 CFD 基础、湍流模型与网格划分(Fluent/STAR-CCM+);脏数模清理与计算域抽取 → J2-06 整车/机舱 CFD 前处理:从脏数模到可算网格(数模验收·删简·包面·计算域抽取);
- 共轭传热的建模方法本身(固-液耦合界面、接触热阻的引入)→ J2-04 共轭传热(CHT)仿真方法;
- 电池包多冷板并联的流量分配问题(集管、支路、节流孔)→ J3-02 电池包液冷流道 CFD 与流量均匀性;本课只做单块冷板腔体内部的流道形态;
- 冷板的温差预算怎么拆、进液温度与流量怎么定、扰流结构与热阻链 → D2-01 电池液冷冷板设计:流道、压降与温差均匀性;电芯温差目标本身 → D1-02 电芯温度不均与温差控制目标;
- 参数化 DOE、代理模型、遗传算法与多目标 Pareto 的通用方法 → J7-03 基于仿真的 DOE 与多目标优化(本课只讲拓扑优化这一支,以及它与 DOE 的分工边界);
- 冷板的结构强度、耐压与爆破 → J5-01 换热器/冷板结构强度与耐压 FEA;热应力与热疲劳 → J5-02 热应力、热变形与热疲劳仿真;耐压与泄漏试验 → L1-03 密封、耐压、爆破与泄漏试验;
- 钎焊工艺本身(钎料体系、炉温曲线、搭接设计)→ H2-01 铝换热器钎焊原理与钎料/钎剂体系 H2-02 可控气氛钎焊(CAB/NOCOLOK)工艺;面向制造与装配的设计通则 → I5-01 面向制造与装配的设计(DFM/DFA);公差分析 → I5-02 GD&T 与公差分析在热管理中的应用;铝合金选材 → H1-01 热管理用铝合金牌号、性能与选材;
- 两相/沸腾流道 → J3-04 两相流、沸腾与冷凝仿真;浸没冷却 → N2-01 浸没冷却技术路线:跨部件应用与成熟度台阶;油冷与旋转域 → J3-06 电驱油冷部件级 CFD:旋转域、自由液面与搅油损失的数值实现;
- 冷却液物性的取值口径与劣化 → H7-01 冷却液(乙二醇型)配方、性能与劣化;
- 泵的工作点与效率 → A2-02 泵与风机的工作点、特性曲线与匹配;整车层面的能量流折算 → B4-01 整车能量流与热量流协同分析;
- 项目层面的成本模型与投资回收 → M3-01 热管理成本结构与成本工程(第 5 讲只给该比哪几项,不给任何单价与工时费率)。
以及任何一个具体的目标值、参数阈值与本底限值——温差目标、压降预算、体积分数上限、最小流道宽、α_max 取值、聚合参数取值、网格量、迭代步数、成本门槛,一律由本项目自己的设计验证计划与所选工艺给出,⛔ 本课一个都不给。课内所有带数的算例全部是教学假设值,用来把方法走通,⛔ 禁止照抄取用。
五讲怎么排
第 1 讲把优化问题提对:三个层次(参数 / 形状 / 拓扑)各自能到达什么形态、代价差多少;三类目标函数为什么不能互相替代;约束全集与每一条约束各自挡住哪一种退化解;多目标权重与 Pareto 前沿的取舍。第 2 讲讲密度法:设计变量场 θ 是什么、Brinkman 罚怎么把固体区堵死、α_max 该怎么由泄漏预算反解出来、插值参数 q 起什么作用——并给出一条不太舒服的结论:Brinkman 插值本身消不掉灰度。第 3 讲讲伴随法:为什么它把成本从「设计变量个数」量级压到常数量级、连续伴随与离散伴随差在哪、灵敏度场怎么驱动流道生长、以及 min-max 目标的可微化聚合与它的解析误差界。第 4 讲做几何提取:过滤与投影、灰度度量、阈值敏感性检查、最小流道宽与连通性的形态学检查、三种成形工艺各自给流道留的约束边界。第 5 讲做验证与核算:回代高保真 CFD 与罚模型场的差怎么分账、与基线的对比必须声明哪一种口径、偏工况与制造公差下的性能保持、以及「什么时候不该做拓扑优化」的三个必要条件。
最后是关键公式详解、一个走完全程的案例、常见误区二十六条、一次实操与按任务导航。
全课符号与口径(先钉死,后面不再重复声明)
⛔ 这一节是全课的口径来源,后面各讲直接用,不再重复定义。符号与已上线课程之间的冲突已逐个核过,处置写在表后。
| 符号 | 含义 | 单位 | 口径说明 |
|---|---|---|---|
| θ | 设计变量场,θ=1 为流体、θ=0 为固体 | 无量纲 | ⛔ 本课的设计变量不写 γ,理由见表后第①条 |
| θ̃ | 过滤后的设计场(第 4 讲) | 无量纲 | 由 θ 经半径 r_f 的密度过滤得到 |
| θ̄ | 投影后的物理场(第 4 讲) | 无量纲 | 由 θ̃ 经 Heaviside 投影得到,物理方程里用的是它 |
| α(θ̄) | Brinkman 体积阻力系数 | kg/(m³·s) | 动量方程里的源项系数,见公式二 |
| α_max | 固体区阻力上限 | kg/(m³·s) | ⛔ 不抄任何文献值,由泄漏预算反解(2.3) |
| q | Brinkman 插值陡度参数 | 无量纲 | ⚠ 不同文献的方向约定不一致 ⇒ 本课按公式二这一式自己算 |
| Da | 达西数,Da = μ/(α_max·L_ref²) | 无量纲 | 只作量级参考,⛔ 不作为 α_max 的取值依据(2.3) |
| r_f | 密度过滤半径 | m | 与最小特征尺寸绑定(4.1) |
| β_H | Heaviside 投影陡度 | 无量纲 | continuation 逐步加大 |
| η_H | Heaviside 投影阈值 | 无量纲 | 默认 0.5;鲁棒公式用三档(4.5) |
| M_nd | 灰度度量(measure of non-discreteness) | % | M_nd = (1/n)Σ4θ̄_i(1−θ̄_i)×100%,0% 为纯 0/1 |
| V_f | 流体体积分数 | 无量纲 | V_f = ∫θ̄ dV / V_design;V* 为其上限 |
| J | 目标函数 | 见各式 | ⛔ 报 J 必须同时报它的组成与权重 |
| C_th | 热柔度,C_th = ∫_Ω T dV | K·m³ | ⚠ 它是体积加权的整体温度水平,⛔ 不是温差 |
| ⟨T⟩ | 体平均温度 = C_th/V | K | 本课一律相对进液温度取,即 ⟨T⟩−T_in |
| T_max / T_min | 冷板固体域最高 / 最低温度 | K | ⛔ 不取流体域的,理由见表后第③条 |
| ΔT_span | = T_max − T_min(冷板固体域) | K | 本课的均匀性判据量,口径见表后第③条 |
| Δp_cp | 冷板进出口总压差 | Pa | 取进出口两个截面的质量流量加权平均全压之差 |
| V̇ | 体积流量 | m³/s | 报数一律同时给 L/min |
| ṁ | 质量流量 = ρV̇ | kg/s | |
| P_hyd | 水力功率 = Δp_cp·V̇ | W | 沿用 J3-02 电池包液冷流道 CFD 与流量均匀性 口径,⛔ 不乘泵效率 η_pump |
| Re | 雷诺数 = ρuD_h/μ | 无量纲 | u 为截面平均真实速度,与 J3-01 换热器芯体 CFD 与多孔介质模型 J3-02 电池包液冷流道 CFD 与流量均匀性 同口径 |
| D_h | 水力直径 = 4A_c/P_wet | m | A_c 为过流截面积,P_wet 为湿周 |
| f_D | Darcy 摩擦因子 | 无量纲 | Δp = f_D·(L/D_h)·½ρu²;⛔ 全课不出现不标类型的裸 f;f_D = 4f_F |
| p_n | p-范数指数 | 无量纲 | 见公式六 |
| ρ_KS | KS 聚合参数 | 1/K | ⚠ 必须带下标,⛔ 不与流体密度 ρ 混写 |
| u*, p*, T* | 伴随速度场 / 伴随压力场 / 伴随温度场 | 见 3.3 | 上标 * 一律表示伴随量 |
| N_d | 设计变量个数 | 个 | ⛔ 与流场网格单元数是两个数(4.1) |
| w_min | 最小流道宽(工艺给定) | m 或 mm | 工艺输入,⛔ 不是优化输出 |
| w₁, w₂ | 多目标权重 | 见 1.5 | ⛔ 报权重必须同时报归一化用的参考值 |
三条跨课口径处置(⚠ 这一层没有任何自动检查能替你做,交付前必须自己核一遍):
① γ 在本课程体系里已经被占用了。J3-02 电池包液冷流道 CFD 与流量均匀性 把 γ 定义为流量不均匀度(各支路流量的总体标准差除以平均流量,无量纲),并且它还有一个兄弟 γ_R(极差归一)。而流体拓扑优化的文献里,设计变量最常见的记号恰好也是 γ。两者都是 0 到 1 之间的无量纲数,写在纸上一模一样,含义毫不相干。⇒ 本课的设计变量改用 θ;本课若要提「流量不均匀度」,一律沿用 J3-02 电池包液冷流道 CFD 与流量均匀性 的 γ / γ_R 并写全名字。⛔ 两者不得互代、不得在同一张图上不带名字地并列。
② 泵功沿用 J3-02 电池包液冷流道 CFD 与流量均匀性 的口径:本课「泵功」一律指水力功率 P_hyd = Δp_cp·V̇,⛔ 不把泵效率 η_pump 乘进来。理由与那门课相同——把泵的特性混进冷板方案的账里,方案之间就不可比了。⚠ 但要注意口径的射程差别:J3-02 电池包液冷流道 CFD 与流量均匀性 的 Δp_sys 取的是整个系统(含集管与所有支路),本课的 Δp_cp 只取一块冷板的进出口。两者都叫「压降」,量级差可以很大 ⇒ 报 P_hyd 必须同时说它是哪一段的。
③ ΔT_span 与 D2-01 电池液冷冷板设计:流道、压降与温差均匀性 的 ΔT_max 是两个量,⛔ 不得互代。D2-01 电池液冷冷板设计:流道、压降与温差均匀性 把芯间温差拆成三段预算(沿程温升 ΔT_cool、热阻链温差 ΔT_cell−cool、支路间温差 ΔT_branch),它的 ΔT_max 是电芯之间的最大温差,是被评价的结果量。本课的 ΔT_span 是冷板固体域的 T_max − T_min,取的是冷板贴电芯那一面的金属温度。两者的对象不同:中间还隔着界面材料与电芯自身的导热(去向 D2-05 冷板与电芯的接触热阻与 TIM 应用 与 D1-01 动力电池产热机理与产热速率建模)。⇒ ΔT_span 是 ΔT_max 的上游代理量,它下降不等于 ΔT_max 同比例下降;⛔ 不许拿 ΔT_span 的百分比去当电芯温差的百分比报。本课之所以还是用 ΔT_span 做优化目标,是因为它是流道形状能直接影响的那一段,而后面几段由 TIM 与电芯结构决定,不在冷板设计的可控范围内。
⚠ 另外两条小口径:本课所有温度一律相对进液温度取(写作 T−T_in),这样换一个进液温度不用重算;本课全部在层流域内做优化(Re < 2300),转捩与湍流的伴随成本与可靠性问题在 3.6 单列。
全课教学基线(后面各讲反复引用这一组数)
⚠ 以下全部是教学假设值,⛔ 不对应任何平台、⛔ 不得取用。它存在的唯一目的,是让后面每一个算例都能被你在纸上复算一遍。
| 项 | 取值 | 性质 |
|---|---|---|
| 设计域(冷板腔体) | 200 mm × 150 mm × 4 mm | 教学假设 |
| 热源 | 单侧贴合,总功率 Q = 600 W,分三区(3.0 : 1.0 : 1.0 分配) | 教学假设 |
| 冷却液 | 50% 乙二醇水溶液,25 ℃ | 配方与物性口径去向 H7-01 冷却液(乙二醇型)配方、性能与劣化 |
| ρ | 1055 kg/(m³) | 教学假设值 |
| c_p | 3350 J/(kg·K) | 教学假设值 |
| μ(25 ℃) | 3.20×10⁻³ Pa·s | 教学假设值 |
| μ(−10 ℃) | 14.07×10⁻³ Pa·s(为 25 ℃ 的 4.40 倍) | 教学假设值;粘度随温度的量级与 D2-01 电池液冷冷板设计:流道、压降与温差均匀性 同源 |
| 体积流量 V̇ | 2.0 L/min = 3.333×10⁻⁵ m³/s | 教学假设 |
| 基线流道 | 单流道蛇形,8 mm 宽 × 4 mm 高,展开长 L_b = 1.80 m,5 个 180° 弯(每个 ζ = 1.2) | 教学假设 |
基线的四个数,现在就算出来,后面直接引用(每一步都可复算):
A_c = 0.008 × 0.004 = 3.200×10⁻⁵ m²
u = V̇/A_c = 3.333e-5/3.2e-5 = 1.0417 m/s
D_h = 4A_c/P_wet = 4×3.2e-5/(2×(0.008+0.004)) = 1.28e-4/0.024 = 5.333×10⁻³ m
Re = ρuD_h/μ = 1055×1.0417×5.333e-3/3.20e-3 = 1832 (层流,< 2300)
矩形断面宽高比 8:4 = 2:1,充分发展层流的 f_D·Re = 62.20(这是矩形管层流的解析结果,只随宽高比变,⛔ 不是拟合的经验值;圆管对应值为 64,⛔ 不得把 64 套到矩形断面上):
f_D = 62.20/1832 = 0.03396
½ρu² = 0.5 × 1055 × 1.0417² = 572.4 Pa
沿程 Δp_f = f_D·(L_b/D_h)·½ρu² = 0.03396 × (1.80/5.333e-3) × 572.4
= 0.03396 × 337.5 × 572.4 = 6.56×10³ Pa
局部 Δp_m = (Σζ)·½ρu² = (5×1.2) × 572.4 = 6.0 × 572.4 = 3.43×10³ Pa
Δp_cp,0 = 6.56 + 3.43 = 9.99 kPa
P_hyd,0 = Δp_cp,0 · V̇ = 9.99e3 × 3.333e-5 = 0.333 W
ṁ = ρV̇ = 1055 × 3.333e-5 = 0.03517 kg/s
ΔT_cool = Q/(ṁ·c_p) = 600/(0.03517×3350) = 600/117.8 = 5.09 K
⚠ 注意基线里局部损失占了 34.3%(3.43/9.99)——这个比例后面在偏工况鲁棒性那一节会变成一个关键量,因为沿程项随粘度变而局部项不随粘度变。
第 1 讲 优化问题怎么提:三个层次、目标函数与约束
这一讲不碰任何算法。它只做一件事:把「我想让这块冷板更好」翻译成一个数学上唯一确定的问题。这一步做错,后面四讲全部是在一个错的方向上做精细化——求解器会收敛、残差会掉、流道会长出漂亮的分叉形态、报告里的目标函数值会一路下降,而这些现象在目标函数选错时和选对时长得一模一样。
1.1 三个层次:变量是什么,决定了你能走到哪里
优化按设计变量是什么分三层,⛔ 不按软件模块分。
参数优化:设计变量是若干个标量——流道宽 8 mm 改成 6 或 10、弯的个数 5 改成 7、进口位置沿边挪 20 mm。几何的拓扑与形状族是你在建模时钉死的,优化只在这个族里挑一个成员。设计变量个数是个位数到几十。
形状优化:设计变量是边界的位置——把流道的壁面用一组控制点参数化,让优化器推挤这些边界。它能把一条直流道推成腰鼓形、能把弯头内侧削出一个更顺的过渡,但它不能把一条通路分成两条:边界推挤是连续变形,连通性是拓扑性质,连续变形改不了它。设计变量个数几十到几百。
拓扑优化:设计变量是设计域里每一个单元的材料属性——这一小块是流体还是固体。因为每个单元可以独立地从「固体」翻成「流体」,通路可以在优化过程中断开、合并、新生、消失。设计变量个数就是设计单元数,十万量级起步。
把这三层的成本算成一个可复算的数。(⚠ 教学假设:一次稳态共轭传热正解耗时 25 min;下同)
| 层次 | 设计变量数 N_d | 每次迭代的求解次数 | 典型迭代数 | 总求解次数 |
|---|---|---|---|---|
| 参数优化(全因子 DOE) | 3 | — | — | 5³ = 125 |
| 形状优化(梯度法) | 24 | 2(正解 + 伴随) | 60 | 120 |
| 拓扑优化(梯度法) | 1.2×10⁵ | 2(正解 + 伴随) | 200 | 400 |
| 拓扑优化(若用有限差分) | 1.2×10⁵ | N_d+1 = 120001 | 200 | 2.4×10⁷ |
⇒ 最后一行是这门课存在的理由。2.4×10⁷ 次 × 25 min = 6.0×10⁸ min = 1.14×10³ 年。而第三行的 400 次 × 25 min = 1.0×10⁴ min ≈ 6.9 天。同一个优化问题,两种求梯度的方式,代价差了六万倍(2.4e7/400 = 6.0×10⁴)。
⚠ 两条从这张表里能读出、而单看软件手册读不出的事:
- 迭代次数与设计变量数无关(都是 200 左右),成本的全部差别在「每次迭代要跑几次求解」这一列。⇒ 拓扑优化不是「因为变量多所以慢」,是「如果梯度求得不对,就因为变量多所以慢」。
- 参数优化的 125 次是全因子 DOE 的数,它一次算完就有整张响应面,可以事后改目标、改权重、加约束重新挑点;而梯度法的 400 次只对那一个目标函数有效,改目标就要重跑。⇒ 三层不是「越高越好」,DOE 与代理模型这条线(去向 J7-03 基于仿真的 DOE 与多目标优化)在设计变量少、且需要反复改目标时是更划算的。
什么时候才该上拓扑优化。三个条件同时成立(第 5 讲会把它写成一张决策树):① 当前的瓶颈确实是形态——参数与形状优化都做过而且到顶了;② 设计域里还有没被占用的自由空间——如果冷板腔体已经被螺栓柱、密封槽、加强筋切得只剩一条通路,拓扑优化没有生长的余地;③ 工艺能承接自由几何。三条缺一条,做出来的东西也许好看,但改不进图纸。
易错点 1-A|把「换了个求解器」当成换了层次。 形态:在参数化 CAD 模型上调用软件里叫「拓扑优化」的模块,跑完发现形状变化很小,得出「拓扑优化对冷板没用」的结论。 为什么会错:如果几何还是那个参数化模型、设计变量还是那几个尺寸,那么无论调用哪个模块,设计空间没有变——你仍然在参数优化那一层里。层次由设计变量是什么定义,不由菜单项的名字定义。 怎么当场发现:打开设置,数一下设计变量的个数。个位数或几十个 ⇒ 你不在拓扑优化里。真正的流体拓扑优化,设计变量个数应当与设计域的单元数同量级。
1.2 三类目标函数:它们不是一件事的三种写法
「让冷板更好」在数学上要写成 min J。J 有三个常见候选,本节要证明的是:它们的最优解形态不同,而且可以反向变化。
候选一:最小压降。J = Δp_cp,或等价地最小化流体域的粘性耗散功率。这是流体拓扑优化最经典的目标(历史上第一批工作就是它),它的好处是只涉及流场,不需要解温度,成本最低、收敛最稳。它的最优解是什么样?一条尽可能宽、尽可能短、尽可能直的通路——因为分叉、弯曲、收缩都产生耗散。⇒ 只用这一个目标,优化器会把冷板挖成一个从进口到出口的大通道,换热面积会被牺牲掉。
候选二:最小热柔度 / 最小平均温度。J = C_th = ∫_Ω T dV,或归一化后的 ⟨T⟩。它度量的是整体温度水平——冷板整体有多热。这是与固体力学拓扑优化里「最小柔度」完全对应的一个量(那里是 ∫σ:ε dV,这里是 ∫T dV),数学性质好、可微、伴随推导直接。
候选三:最小最高温度 / 最小温差。J = T_max,或 J = ΔT_span = T_max − T_min。这是工程上真正想要的——电芯怕的是最热那一颗,以及芯与芯之间的不一致(去向 D1-02 电芯温度不均与温差控制目标)。它的麻烦在于 max 不可微,梯度法用不了,必须先做可微化聚合(第 3 讲)。
⛔ 下面这个手算例子,是本课第一根钉子的证据。
算例 1.1(教学假设值,⛔ 不对应任何平台)。把冷板简化成三个并联的热区,热流分别 Q₁ = 300 W、Q₂ = 150 W、Q₃ = 150 W(总 600 W,与基线一致,比例 2:1:1 —— ⚠ 与基线表里的 3:1:1 不同,这里为了让手算的分数更干净取 2:1:1,⛔ 两组数不要混用)。每个区从热源到冷却液的热阻为 R_i,温升 ΔT_i = Q_i·R_i。
冷却能力守恒约束:流道总的换热能力有限,把它写成 Σ(1/R_i) = S = 300 W/K(教学假设)。这个约束代表「冷却液总共只能带走这么多、换热面积总共只有这么大」——把冷量分给某一区,别的区就少。
- 方案 A(均分,即基线的做法):1/R_i 各 100 W/K ⇒ R_i = 0.01000 K/W。 ΔT = 300×0.01 = 3.00 / 150×0.01 = 1.50 / 1.50 K。 ⟨T⟩ = (3.00+1.50+1.50)/3 = 2.000 K;ΔT_span = 3.00 − 1.50 = 1.500 K。
- 方案 B(最小化 ΔT_span):要 ΔT 全相等 ⇒ Q_i·R_i 相等 ⇒ 1/R_i ∝ Q_i。 1/R = 300×(300/600) = 150、300×(150/600) = 75、75 W/K。 ΔT = 300/150 = 2.000 / 150/75 = 2.000 / 2.000 K。 ⟨T⟩ = 2.000 K;ΔT_span = 0 K。
- 方案 C(最小化 ⟨T⟩):min Σ Q_i/x_i s.t. Σx_i = S(x_i = 1/R_i)。 拉格朗日:−Q_i/x_i² + λ = 0 ⇒ x_i ∝ √Q_i。 √300 = 17.3205、√150 = 12.2474、12.2474,和 = 41.8153;缩放因子 300/41.8153 = 7.1745。 x = 124.26 / 87.87 / 87.87 W/K(和 = 300.00 ✓)。 ΔT = 300/124.26 = 2.414 / 150/87.87 = 1.707 / 1.707 K。 ⟨T⟩ = (2.414+1.707+1.707)/3 = 1.943 K;ΔT_span = 2.414 − 1.707 = 0.707 K。
把 B 与 C 摆在一起看——它们是同一个约束下、两个不同目标各自的最优解:
| 方案 | ⟨T⟩ (K) | ΔT_span (K) | 相对 A 的 ⟨T⟩ | 相对 A 的 ΔT_span |
|---|---|---|---|---|
| A 均分(基线) | 2.000 | 1.500 | — | — |
| B min ΔT_span | 2.000 | 0 | 0.0% | −100% |
| C min ⟨T⟩ | 1.943 | 0.707 | −2.9% | −52.9% |
⇒ 从 B 走到 C:⟨T⟩ 下降 2.9%,而 ΔT_span 从 0 K 涨到 0.707 K。两个「更好」的方向是相反的。而这两个解都是某个目标函数下严格的最优解,两份报告都可以写「优化后冷板性能提升」。
⚠ 这个例子里的百分比之所以不大,是因为热流比只有 2:1:1。热流分布越不均,这个分歧越大。把 Q 改成 400 / 100 / 100 W(4:1:1,总 600 W)复算一遍: B:x ∝ Q ⇒ 200/50/50,ΔT = 2.000/2.000/2.000,⟨T⟩ = 2.000,span = 0。 C:x ∝ √Q ⇒ √400 = 20、√100 = 10、10,和 = 40,缩放 300/40 = 7.5 ⇒ x = 150/75/75。 ΔT = 400/150 = 2.667 / 100/75 = 1.333 / 1.333;⟨T⟩ = 1.778 K,span = 1.333 K。 ⇒ ⟨T⟩ 降 11.1%(2.000→1.778),而 span 从 0 涨到 1.333 K。热流比从 2:1:1 变到 4:1:1,分歧从 0.707 K 放大到 1.333 K。
这条结论的机理,一句话就说得清:最小化 ⟨T⟩ 是在最小化 Σ Q_i R_i,它对高热流区的热阻更敏感(系数是 Q_i),于是最优解把冷却能力往高热流区堆;被抽走冷量的低热流区变热了,但它的温升乘上小 Q 之后对总和的贡献不大——平均值不在乎,温差在乎。
易错点 1-B|拿平均温度当均匀性判据。 形态:优化设的目标是 min ⟨T⟩(或 min C_th,因为它最好写、软件默认给),报告里却写「温度均匀性改善了 X%」。 为什么会错:⟨T⟩ 是一阶矩,ΔT_span 是极差,两者在数学上没有单调关系。算例 1.1 给出的是一个严格的反例:min ⟨T⟩ 的最优解比 min ΔT_span 的最优解平均温度低、温差高。⇒ 这不是「通常一致、偶尔不一致」,是两条独立的判据链。 怎么当场发现:在优化收敛后的结果里同时提两个数——⟨T⟩−T_in 与 T_max−T_min——分两栏报。若报告里只有一栏,先去问设置里 J 是什么。⚠ 更快的一招:看优化历史曲线,如果画的只有 J 一条线,那么另一个指标在整个优化过程中没有被任何人看过。
易错点 1-C|只写「降温」不写压降与体积约束。 形态:J = ⟨T⟩,不加任何约束,跑出来整个设计域全是流体——一个 200×150×4 mm 的扁腔。 为什么会错:在没有体积约束时,把更多单元变成流体几乎总能降低温度(换热面积和流通面积都增加),所以最优解必然是 θ ≡ 1。这不是求解器出错,是问题本身就是这么提的。 怎么当场发现:算一下这个「大水池」的压降。用基线口径复算:A_c = 0.150×0.004 = 6.00×10⁻⁴ m²,u = 3.333e-5/6.0e-4 = 0.05556 m/s,D_h = 4×6.0e-4/(2×(0.150+0.004)) = 2.4e-3/0.308 = 7.792×10⁻³ m,Re = 1055×0.05556×7.792e-3/3.2e-3 = 142.7,宽高比 37.5:1 近似平行平板 f_D·Re = 96 ⇒ f_D = 0.6728,½ρu² = 0.5×1055×0.05556² = 1.628 Pa,Δp = 0.6728×(0.200/7.792e-3)×1.628 = 0.6728×25.67×1.628 = 28.1 Pa。⇒ 压降约束挡不住大水池(28 Pa 比基线的 9990 Pa 小两个数量级),能挡住它的只有体积分数约束。这是「加错约束」的典型:直觉上以为压降会拦住它,实际不会。
1.3 约束全集:每一条各自挡住哪一种退化解
⛔ 约束不是「为了保险多加几条」,每一条都唯一对应一种会真实出现的退化解。写约束之前先问:不加这条会长成什么样。
| 约束 | 数学形式 | 不加它会长成什么 | 值从哪里来 |
|---|---|---|---|
| 体积分数上限 | ∫θ̄ dV / V_design ≤ V* | 全流体的「大水池」(1.2 已复算) | 由基线的流体体积或耐压/结构要求给 |
| 压降上限 | Δp_cp ≤ Δp* | 若目标里没有压降项,长出极细的毛细网络(换热面积最大) | 由整包水力预算给(去向 J3-02 电池包液冷流道 CFD 与流量均匀性) |
| 最小特征尺寸 | 由过滤半径 r_f 隐式施加 | 单元级的锯齿、棋盘格、一像素宽的「流道」 | 由成形工艺给(第 4 讲) |
| 进出口位置与截面 | 边界条件固定 | 优化器把进出口挪到最方便的地方,与接管对不上 | 由布置给(去向 I1-01 热管理零部件正向结构设计流程) |
| 禁区(non-design region) | 该区域 θ 冻结 | 流道长进螺栓柱、密封槽、焊接搭接带 | 由结构与工艺给 |
| 对称性 / 拉伸约束 | 设计场沿某方向恒定 | 三维自由生长出上下不通的悬浮腔(冲压做不出) | 由成形方式给(4.1 的 2.5D) |
⚠ 最后一条最容易被漏,而它决定了设计变量的个数。冲压+钎焊的冷板,流道断面沿厚度方向是贯通的(一次冲压成形),⇒ 设计场必须沿厚度方向恒定(业内常叫 2.5D 或 extrusion constraint)。不加这一条,优化器会在 4 mm 的厚度里长出上下分层的三维网络——数学上更优,工艺上做不出来,而且你要到几何提取那一步才会发现。第 4 讲会把这条约束对设计变量数的影响算清楚。
1.4 约束怎么进目标:罚函数、增广拉格朗日与 MMA
约束写出来了,还要让优化器能处理它。三种常见做法,选哪一种影响的是收敛行为,不是最优解本身:
- 罚函数法:J_total = J + r·max(0, g)²,g 为约束违反量。最简单,但 r 取小了约束不满足、取大了病态;⇒ 需要 continuation 逐步加大 r。
- 增广拉格朗日:加一个乘子项,乘子随迭代更新。对 r 的敏感度低得多,是当前多数流体拓扑优化实现的默认。
- MMA / GCMMA(移动渐近线法):拓扑优化领域的标准优化器,直接处理不等式约束,天然支持大规模设计变量。
⚠ 一条工程上的经验:体积分数约束在整个优化过程中几乎总是取等号(∫θ̄ dV = V*),因为多给流体几乎总是更优。⇒ 如果你的优化跑完 V_f 明显小于 V*,先怀疑别的地方出了问题——通常是 α_max 太小(固体区没堵住,优化器发现「固体也能流」,于是不需要更多流体,见 2.3),或是目标函数里的权重让压降项压倒了一切。这条是很好用的自检。
1.5 多目标与权重:Pareto 前沿,以及权重不是百分比
工程上的目标通常不止一个。最常见的写法是加权:
min J = w₁·(Δp_cp/Δp_ref) + w₂·(⟨T⟩−T_in)/ΔT_ref s.t. ∫θ̄ dV/V_design ≤ V*
⛔ 两个必须写出来的东西:① 每一项都要无量纲化(除以一个参考值),否则 Pa 和 K 相加没有意义,而且权重会被单位换算悄悄改掉;② 参考值必须报出来——报「w₁ = 0.3、w₂ = 0.7」而不报 Δp_ref 与 ΔT_ref,这两个权重没有任何信息量。本课的参考值一律取基线值:Δp_ref = 9.99 kPa,ΔT_ref = 基线的 ⟨T⟩−T_in。
算例 1.2:权重不是百分比(教学假设值)。把 w₂ 从 0 扫到 1(w₁ = 1−w₂),每一个权重跑一次优化,得到一条 Pareto 前沿。教学假设的五个点(归一化后,基线 = 1.00):
| w₂ | Δp_cp/Δp_ref | (⟨T⟩−T_in)/ΔT_ref | 相邻两点的 Δp 变化 | 相邻两点的 ⟨T⟩ 变化 |
|---|---|---|---|---|
| 0.00 | 0.312 | 1.180 | — | — |
| 0.25 | 0.348 | 0.985 | +11.5% | −16.5% |
| 0.50 | 0.421 | 0.901 | +21.0% | −8.5% |
| 0.75 | 0.596 | 0.862 | +41.6% | −4.3% |
| 1.00 | 1.240 | 0.848 | +108% | −1.6% |
⇒ 读出三件事:① w₂ 从 0.75 走到 1.00,压降涨了一倍多,而平均温度只改善了 1.6%——前沿在这一端几乎是平的,⇒ 权重的后 25% 买到的东西极少;② 权重是0 到 1 之间的一个刻度,不是「压降占 30% 重要性」,w₂ = 0.5 得到的解并不在两端的中点(0.421 不是 0.312 与 1.240 的中点 0.776);③ 前沿的膝点(曲率最大处)在 w₂ ≈ 0.25~0.50 之间 ⇒ 工程上通常选膝点附近,因为再往前走边际收益急剧下降。
⚠ 一条常被忽略的:加权法只能找到 Pareto 前沿的凸部分。如果前沿有非凸段(在热-流耦合问题里并不罕见,尤其当目标里含 T_max 这类聚合量时),无论权重怎么扫都扫不到那一段。⇒ 需要非凸段时改用 ε-约束法(把一个目标变成约束:min ⟨T⟩ s.t. Δp_cp ≤ ε,扫 ε)。ε-约束法还有一个工程上的好处:ε 有物理意义(它就是压降预算),而权重没有。
易错点 1-D|权重当百分比汇报。 形态:会上说「我们给温度 70% 的权重、压降 30%」,听的人理解成「结果里温度改善的份额是压降的 2.3 倍」。 为什么会错:权重进的是梯度的合成方向,不是结果的分配比例。目标函数各项的灵敏度量级差多少,权重就会被放大或压制多少——两项灵敏度差一个数量级时,0.3/0.7 的权重实际效果可能是 3/97。 怎么当场发现:报权重时必须同时报两项的归一化参考值和各项在收敛点的实际贡献值(w₁·(Δp/Δp_ref) 与 w₂·(ΔT/ΔT_ref) 分别是多少)。这两个乘积的比值才是「实际重要性」,而它通常与权重比不同。
易错点 1-E|用一次加权跑的结果去回答「能不能再降一点压降」。 形态:只跑了 w₂ = 0.5 那一个点,被问「压降还能不能再低」时,凭直觉答「再调调权重应该可以」。 为什么会错:一次加权优化只给出前沿上的一个点,它不含任何关于前沿形状的信息。前沿在这一点的斜率(即两个目标之间的交换率)要么另跑一个点、要么从收敛点的拉格朗日乘子里读。 怎么当场发现:问一句「我们扫了几个权重」。答案是 1 ⇒ 手上没有前沿,只有一个点。至少扫三个点才谈得上「取舍」。
1.6 本讲的落地清单
一次拓扑优化开始之前,下面六项必须白纸黑字写在设置文档里,⛔ 缺一项都不要开算:
- 目标函数 J 的完整表达式,含每一项的归一化参考值与权重;若含 max 型目标,写明用哪种聚合与参数(第 3 讲)。
- 约束清单,逐条给出数学形式与取值来源(表 1.3 的六行,凡不加的要写明为什么不加)。
- 设计域与禁区的几何定义,以及沿厚度方向是否施加拉伸约束。
- 要同时监测的指标——⛔ 不只是 J:至少 Δp_cp、⟨T⟩−T_in、T_max−T_min、V_f、M_nd 五个,全程记录、收敛后分栏报。
- 基线是什么,以及基线的这五个数(本课基线见「全课教学基线」)。
- 比较口径:与基线比的时候是同总流量、同泵功还是同压降(第 5 讲会证明三种口径给出不同的收益数)。
后面还有 4 讲正文 · 关键公式 · 案例拆解 · 常见误区 · 动手做