TMS BOOK · ACADEMY 讲义

一维系统模型的数值内核与「跑飞」排查:DAE/代数环、步长与容差、一致初值与守恒自检

大纲的完整展开版——讲师授课蓝本 / 学员自学材料

J7-08 一维系统模型的数值内核与「跑飞」排查:DAE/代数环、步长与容差、一致初值与守恒自检

项 内容
课程代码 J7-08
所属板块 J 仿真分析 CAE / J7 数字化仿真方法
难度 L3 专家
建议学时 4.0 小时(6 讲 + 1 次「跑飞模型」排查实操)
适合对象 做 1D 系统建模的 CAE 工程师(J1 模块七门的共同机制层);跨板块借用刚性与一致初值两项的燃料电池/电池系统仿真工程师;需要判读「这份 1D 结果是物理还是数值伪迹」的系统工程师与仿真报告评审人
前置课程 J1-01 1D 热管理仿真导论(KULI/AMESim/GT/Flowmaster)《1D 热管理仿真导论(KULI/AMESim/GT/Flowmaster)》;J1-03 冷却液回路水力与热仿真建模《冷却液回路水力与热仿真建模》;体系外前置(需自备):常微分方程数值解的概念层认识(显式/隐式、局部截断误差、稳定性)、线性代数的概念层认识(矩阵奇异性、条件数、牛顿迭代)、至少一次独立搭通并跑过一个 1D 热管理回路模型的操作经验
本讲义定位 只讲求解层的机制与判据——方程解不解得出来、解出来的是不是数值伪迹。⛔ 不讲建模对象怎么建(归 J1 各门)、⛔ 不讲软件菜单路径、⛔ 不讲模型准不准(那是 validation,归 J7-01 仿真—试验相关性验证(Correlation))。

按任务导航

你手上的事 直接看 还要配
工具报「非线性方程组无法求解/初始化失败」,我按「代数环」怎么查都查不到 第 1 讲 1.3:非因果工具的检索词是 tearing / index reduction / nonlinear solver failure 1.2(指标奇异的三种拓扑)· 1.4
模型明明是不可压液体,工具却非要我填一个体积参数 第 1 讲 1.2:那是正则化容积,把代数约束换成快速微分方程 图2 · 第 5 讲 5.5 第 ③ 层
仿真慢到不能用,想知道该换积分器还是该改模型 第 2 讲 2.1、2.2:先按时间常数比估刚性比,再读求解器统计 图4 · 6.2
有人问我 rtol 和 atol 该填多少 第 2 讲 2.3、2.4:atol 必须分量给;2.5 的收紧一档复算是唯一可交付的判据 图5 · 图6 · 引言那张典型值表
模型在 t=0 就报初始化失败 第 3 讲 3.1、3.2:只给了微分变量初值不算给了初值 图7 · 3.5(初猜给物理量级)
稳态求解器怎么都不收敛,是不是模型建错了 第 3 讲 3.3:先判模型有没有定常解,无定常解时该换起步路线而不是加迭代上限 3.4(三条起步路线)
切换时刻步长塌到最小、仿真跑不动 第 4 讲 4.1~4.3:事件函数、事件重启、步长回缩的代价 图8 · 第 5 讲 5.5
切换处一直抖,我不知道该改控制器还是改模型 第 4 讲 4.5:把控制器换成开环固定指令重跑,还抖就是数值层的 图9 · K3-01 整车热管理控制策略总览与模式管理
闭环充注量在跑,模型里没有任何泄漏路径 第 5 讲 5.2:这是质量守恒残差自检要抓的典型形态 图10 · 5.3
有人说「网格已经加密过了」,我不知道怎么核 第 5 讲 5.4:交付的是一条「关心量—份数」曲线,不是一句「已加密」 图11 · J2-01 CFD 基础、湍流模型与网格划分(Fluent/STAR-CCM+) · A1-01 一维/多维、稳态与瞬态导热的工程建模
结果算出来了但和试验对不上,该进哪份清单 第 5 讲 5.1:先判属 verification 还是 validation,再进对应清单 图12 · J7-01 仿真—试验相关性验证(Correlation)
别人交给我一个跑飞的模型,我从哪儿下手 第 6 讲 6.1:先做最小化复现,再按六层清单逐层过 图12 · 「动手做」
要把求解设置写进仿真计划/交付清单 第 6 讲 6.4:本课交付「凭什么这么取」,登记粒度归 J7-07 仿真任务的输入、交付与模型资产管理 2.5 · 3.4

⛔ 本课不覆盖——两栏,每样带去向。

栏一 · 不讲哪些题目:validation 本体(相关性验证计划、误差带与 RMSE/NRMSE、标定与验证之分、可信域与报告 sign-off)→ J7-01 仿真—试验相关性验证(Correlation);无关性验证的通用方法论(加密序列、Richardson 外推与网格收敛指数、假收敛识别)→ A1-01 一维/多维、稳态与瞬态导热的工程建模 与 J2-01 CFD 基础、湍流模型与网格划分(Fluent/STAR-CCM+),本课只讲 1D 对象化的三件;两相与制冷剂物性域的专属处置(跨饱和线插值、两相传热与压降关联式、两相段胞数的域内取法、充注量守恒的建模落地)→ J1-02 制冷循环一维建模与制冷剂物性;水力域专属项(并联支路压降相等约束漏设、泵曲线外推、阀全关支路的域内处置)→ J1-03 冷却液回路水力与热仿真建模;换向与迁移域专属项(拓扑重构时刻一致初值的域内落地、模式切换的具体触发条件)→ J1-05 热泵系统一维建模与模式切换仿真;代数环的打断办法(插单位延迟、改接口因果性、把一侧改成非直通)与联合仿真机制本体(接口规范、主从求解器、宏步调度、耦合迭代次数与松弛因子的取值判据)→ J1-04 整车热管理系统级联合仿真,本课只给机理、识别与打断的代价;建模范式与工具选型(因果与非因果之分、四工具对比、边界条件从哪来)→ J1-01 1D 热管理仿真导论(KULI/AMESim/GT/Flowmaster);三维有限体积侧的数值(离散格式、数值扩散、湍流模型与壁面处理、残差与假收敛)→ J2-01 CFD 基础、湍流模型与网格划分(Fluent/STAR-CCM+),结构侧的模型内部可信度(单元、约束、本构、应力奇异)→ J5-06 结构 FEA 建模方法基础:单元、约束、本构与结果可信度;输入散差的量化与传播、全局敏感度、分位数裕度 → J7-06 仿真不确定度量化(UQ)与稳健/可靠性设计:从确定性单点到带分布的裕度;求解设置的入库粒度、模型快照与最小可复现集、报告评审出口 → J7-07 仿真任务的输入、交付与模型资产管理;模型降阶与实时化 → J7-02 模型降阶(ROM)与控制导向建模;热浸的物理侧初始条件(初温怎么给)→ B1-01 整车热平衡与全工况热负荷谱分析;控制策略层的执行器抖动与控制侧迟滞设计 → K3-01 整车热管理控制策略总览与模式管理;三维共轭传热里化学源项与传热的时间尺度分离所称的「刚性」→ D5-07 热失控与热扩散传播仿真建模:化学源项、喷发边界与可信边界(那门课已写死与本课的划界,两门结论不可互相搬用);燃料电池 −30 ℃ 冷启动策略本体 → O1-04 低温冷启动(-30℃)与自加热策略,本课只被它借走刚性与一致初值两项;数值方法本体(数值解法的推导、稳定域分析、微分代数方程的理论证明)不进本课程体系,列为体系外前置。

栏二 · ⛔ 真正不给的数:① rtol/atol 的可取用值——它随状态量量纲、模型规模与你要报的结果量而变,⛔ 给一个「行业通用值」等于给一个会被照抄的错误锚点 ⇒ 本课给的是取法与自检动作(2.5),值由你在本项目上定;② 迟滞带宽与最小驻留时间——它必须盖住本模型在事件附近的数值噪声,而噪声幅度是模型特征 ⇒ 本课给的是双向判据(4.4);③ 管段份数、换热器胞数、两相段胞数的推荐值——它随管长、流速、你关心的时间尺度而变 ⇒ 本课给的是无关性曲线的做法(5.4);④ 守恒残差的合格线——判据是相对你自己关心量的判读分辨力,不是一个绝对数(5.2);⑤ 标准条款的内容与限值——本课引用的验证与确认类标准、模型接口规范、以及所用求解器自身的理论手册,一律只写去向、不复述条款文字,版次与年份以现行目录为准,⛔ 本讲义不把任何一个年份写死当作依据。


引言

三个人看着同一条曲线,说出三种诊断

一个纯电平台的「电池—电驱双回路 + 多通阀切换」1D 模型。稳态点跑得非常干净,一加模式切换瞬态,仿真时钟在切换时刻附近几乎停住:一小时墙钟只推进了几秒物理时间,最后报求解失败。

三个人给了三种诊断。

第一个人说,容差取紧了,放松一档就好。第二个人说,是稳态初始化没收敛就切了瞬态,把稳态求解器的迭代上限加大重跑。第三个人说,是控制器在切换点附近抖,得给控制器加迟滞。

三个人都有经验,三个人说的都是真实存在的成因,而这一次三个人全都不对——真因是切换瞬间某支路阀全关、该节点没有任何蓄能元件、退化成了一个孤立节点,方程的指标从 1 跳到了 ≥2,工具的求解器再也推不动了。

这个故事的要害不是「他们经验不够」,而是:「步长塌到最小」这一个现象下面,至少压着四种互不相干的根因——指标奇异、事件抖振、容差取小、物性表外插——而它们在曲线上、在墙钟时间上、在工具的进度条上,长得一模一样。靠现象猜根因,猜中的概率就是四分之一,猜不中的代价是一整轮返工。

本课就是为了让你不再猜。它给的不是「遇到 X 就调 Y」的经验条,而是一套能把同形现象分开的判据,以及一份按代价从低到高排序的排查顺序。

一句话说清本课在整条链上的位置

一个仿真结果要能被人用,得连着过两道关:

第一道,方程解得对不对——离散方案、积分器、容差、初值、事件处理,有没有让「算出来的东西」偏离「你写下的那组方程本来的解」。这一关叫 verification,就是本课。

第二道,方程写得对不对——这组方程、这套参数、这套边界,是不是那台真实设备的合格代表。这一关叫 validation,归 J7-01 仿真—试验相关性验证(Correlation)。

⚠ 两道关的次序不能倒:第一关没过的模型拿去做第二关,你测到的只是数值噪声。这也是为什么 J7-06 仿真不确定度量化(UQ)与稳健/可靠性设计:从确定性单点到带分布的裕度 那门课在开篇就写死了它的前提是「模型已能稳定求解」——拿一个会跑飞的模型去做不确定度量化,得到的分布是求解器的分布,不是物理的分布。

★ 一条本课自己作出的划界(不是任何标准的原话):异常结果先判属哪一半,再进对应的清单。算不出来/振荡/不守恒 ⇒ 进本课的六层清单;算得出来但与试验差 ⇒ 进 J7-01 仿真—试验相关性验证(Correlation) 的诊断清单。这两份清单入口不同、顺序不同,走错一份会一路查到越来越远的地方去。

⚠ 措辞纪律:验证与确认领域的通行标准(本课涉及的那一份)正文重心在 validation 与不确定度量化,求解验证主要作为前置条件出现。因此本课的六层清单是工程可操作化产物,⛔ 不声称是该标准的对等半边,也 ⛔ 不复述其条款文字。

学完这门课,你要能当场答出六件事

第一件,判一个 1D 回路模型的方程属微分代数方程组还是纯常微分方程组,并说得出判据。判据只有一条——模型里有没有「无蓄能元件的节点」。有就是微分代数方程组,与你用哪家工具无关。

第二件,估出模型的刚性比,据此判该不该上隐式变步长积分器,并给出分量化的容差取值与一次「收紧一档复算」的自检结论。交付物是一句能被人复核的话,不是「我一直都这么设」。

第三件,构造一致初值,并在三条起步路线之间按判据选一条。三条路线是稳态求解器起步、瞬态热浸起步、上一工况末状态热启动,各有明确的适用前提与代价。

第四件,定位离散事件、判断何时必须事件重启与步长回缩,并把求解器层的事件抖振与控制策略层的执行器抖动分开处置。判别办法只有一句话,而且当场可做。

第五件,对模型做质量与能量守恒残差自检、做 1D 离散份数无关性检查,并按六层清单逐层定位跑飞源。

第六件,判一个异常结果该进哪份清单,并据此签一句话:这个模型有没有资格进 J7-01 仿真—试验相关性验证(Correlation) 的相关性验证与 J7-06 仿真不确定度量化(UQ)与稳健/可靠性设计:从确定性单点到带分布的裕度 的不确定度量化。

本课的量具:求解器统计,不是墙钟时间

本课几乎所有判据,读的都是求解器自己吐出来的那几个数,而不是「跑得快不快」的感觉:

统计量 它涨了说明什么 本课哪里用它
总步数 步长被压小了(不区分原因) 2.2 · 4.3
拒步数(rejected steps) 误差估计反复不达标 ⇒ 容差、病态、事件未声明 2.2 · 3.3 · 4.3
最小步长出现的时刻 跑飞发生在哪一刻——这是定位的第一条线索 第 6 讲 6.1
雅可比重算次数 非线性块反复失效 ⇒ 模型病态的早期信号 1.6 · 2.2
牛顿迭代不收敛次数 同上,且更靠前 1.6 · 3.5
事件计数 事件是不是密集到把积分器钉死 4.3 · 4.5

⚠ 这些量在不同工具里叫法不同、有的要显式打开求解器日志才输出。名称与开关方式按你所用版本的手册确认,⛔ 不得跨工具照搬。

本课出现的典型参考值一览(⚠ 全部是量级估计或教学假设值)

⚠ 下表四项都是平台相关量——它们随回路规模、工质、部件选型与你关心的时间尺度而变。典型值,⛔ 非验收依据,须在你自己的模型上实测确认。

量 典型区间(两端都给) 常见值锚点 怎么在你自己的项目上拿到它
慢模态时间常数 τ_max(冷却液与金属大热容) 10² ~ 10³ s 量级 10² s 量级最常见(单回路乘用车冷却液侧) 给回路一个阶跃热负荷,读关心节点温度到达终值 63% 的时刻;或用总热容除以有效换热能力估
快模态时间常数 τ_min(小体积节点、两相段胞、快执行器) 10⁻² ~ 10⁻¹ s 量级 10⁻² s 量级最常见(带小容积节点的制冷剂侧) 取工作点线性化后雅可比特征值实部量级的倒数;工程近似是「最小控制体的容积除以体积流量」
刚性比 S = τ_max/τ_min 10³ ~ 10⁴ 量级 10³ 量级最常见(水路 + 制冷剂侧共存的整车模型) 上两行相除;⚠ 每个关心工况各估一次,模式切换后会变
相对容差 rtol 的起点 10⁻⁴ ~ 10⁻³ 10⁻³ 作为起点(⛔ 不是终点,必须过 2.5 的复算自检) 从起点跑一次,再按 2.5 收紧一个数量级复算,看你要报的结果量变不变

★ ⛔ 区间端点不得当成可承诺值,也 ⛔ 不得拿它们反算任何具体的步长、宏步或部件参数。⚠ 前三行是各自独立的量级估计,第三行不是前两行的严格商——写成 10³~10⁴ 是因为两者的组合在整车模型上通常落在这一带,⛔ 不要拿区间端点去做除法。

⚠ 本课出现的其余数(案例里的百分数、迭代次数、事件计数)一律是教学演算假设值,不对应任何平台,⛔ 禁止照抄取用。它们存在的唯一理由,是让判据的因果关系能被讲清楚。


第 1 讲 1D 系统方程的数学结构:DAE、指标,与「代数环」的两套表述

1.1 你写的从来不是一组纯常微分方程

搭一个 1D 冷却回路,你在界面上拖的是泵、散热器、管路、三通阀、膨胀壶。工具在后台把它们变成方程,而这组方程天然分成两半:

一半带时间导数。凡是有蓄能能力的东西——部件金属热容、冷却液节点的热容、带体积的节点里的质量——它们的状态随时间演化,写出来是微分方程

ẋ = f(x, z, t)

另一半不带时间导数。不可压液体回路里,节点上的流量代数和必须为零、每条支路的压降与流量必须满足各自的阻力关系。这些关系里没有任何时间导数——它们在每一个时刻都必须当场成立,写出来是代数约束

0 = g(x, z, t)

两半合起来,就是微分代数方程组(DAE)。其中 x 叫微分变量(各节点温度、带体积节点的质量),z 叫代数变量(节点压力、支路流量)。

左右两栏对照图。左栏画一个简化的 1D 冷却回路示意:一个泵、一段管路、一个散热器、一个三通阀、一个膨胀壶,五个部件用管线首尾连成闭环,回路上标出三个圆点表示节点 N1、N2、N3,其中 N2 旁边画一个小方块标注为膨胀壶(有体积),N1 与 N3 旁不画方块并标注为无蓄能节点。右栏上下两块:上块标题「微分变量 x(带蓄能,写成 x 点等于 f)」,块内竖列四行文字,分别是散热器金属节点温度、冷却液节点温度、膨胀壶节点质量、泵壳体热容节点温度,每行末尾标注单位 K 或 kg;下块标题「代数变量 z(无时间导数,写成 0 等于 g)」,块内竖列三行文字,分别是节点 N1 压力、节点 N3 压力、各支路体积流量,每行末尾标注单位 Pa 或 kg 每秒。左栏与右栏之间画两组箭头:从带方块的部件指向上块,从不带方块的节点指向下块。图底部横贯一行注记,写「判据只有一条:模型里有没有无蓄能元件的节点,有就已经是 DAE,与用哪家工具无关」。图上不标任何数值。
图1 1D 回路的方程天然分成两半:带蓄能的给出微分方程,无蓄能的节点约束给出代数方程。结论:判 DAE 不需要看工具、不需要看求解器设置,只需要数一数模型里有没有无蓄能元件的节点。示意图,⛔ 不得据图取值。

⚠ 一个常见的心理障碍要在这里破掉:「代数」两个字听起来比「微分」简单,实际恰恰相反。微分方程只要给一个初值就能往前推;代数约束要求在每一步的末尾都被严格满足,积分器每推一步都得回头解一次非线性方程组把它压回去。1D 系统仿真的绝大部分算力,花在这一半上。

1.2 指标:工具能不能直接往前推,取决于一个矩阵奇不奇异

不是所有 DAE 都一样难。分水岭叫指标(index)。

对上面那种「半显式」写法,判据可以写得非常干脆:

∂g/∂z 非奇异 ⟺ 指标 1

∂g/∂z 是代数约束对代数变量的雅可比,是个方阵。它非奇异,意味着「给定当前的 x 和 t,代数变量 z 被唯一确定」——积分器每推一步,都能把 z 当场解出来。这类问题主流积分器可以直接积分。

它奇异(掉秩),指标就跳到 ≥2。此时 z 不再被 g=0 唯一确定,必须先做指标约简(对 g 求导,生成隐含约束,把问题降回指标 1)或者加正则化,否则求解器推不动。

什么时候会奇异?三种拓扑,闭着眼睛都要能报出来:

① 阀全关后的孤立节点。某支路的阀全关,该支路流量恒为零、对节点压力再无依赖,那一行退化了;如果这个节点又没有任何蓄能元件(没有容积),它的压力就变成了一个没有任何方程能定的量。矩阵掉秩。

② 两个理想压力源直接对接。两个都规定压力的边界元件接在同一个无容积节点上,这个节点的压力被两个方程同时规定——要么矛盾(无解),要么冗余(掉秩)。

③ 一串无体积节点成环。一圈节点全都没有容积,压力之间只有差值关系而没有一个绝对参考,整个环的压力水平浮动。矩阵掉秩。

三列并排的拓扑示意图,每列上方画拓扑、下方写现象与修法。第一列标题「① 阀全关的孤立节点」:画一个圆点节点,左侧一条管路接入并在管路上画一个阀符号且阀被画成实心表示全关,节点右侧不接任何东西,节点旁不画容积方块;下方文字写「该支路流量恒为零,其压降关系那一行退化;节点压力无方程可定」。第二列标题「② 两个理想压力源对接」:画两个三角形压力源符号,各自引一条短管接到中间同一个圆点节点上,节点旁不画容积方块;下方文字写「同一个压力被两个方程同时规定,矛盾或冗余」。第三列标题「③ 无体积节点成环」:画四个圆点排成一个正方形并首尾用管路连成闭环,四个节点旁都不画容积方块;下方文字写「环内只有压差关系,没有绝对压力参考,整环压力水平浮动」。三列下方横贯一条统一的结果带,写「共同结果:偏 g 偏 z 掉秩,指标从 1 跳到大于等于 2」,结果带下方再画一条修法带,写「通行修法:给该节点补一个小容积(工具的正则化容积参数),把那一行代数约束换成一个快速微分方程」,修法带右端加一行小字警告「⛔ 容积取得过小会把快模态推得更快、刚性比进一步恶化」。图上不标任何数值。
图2 指标跳到 ≥2 的三种典型拓扑,以及它们共同的修法。结论:这三种拓扑都是画图时看得见的,⛔ 不需要等工具报错才发现;而修法都是同一个——给那个节点补一个小容积。示意图,⛔ 不得据图取值。

⇒ 这就回答了那个几乎每个新手都问过的问题:「我建的明明是不可压液体,工具为什么非要我填一个体积参数?」那个参数就是正则化容积(有的工具叫人工可压缩性)。填上它,那个节点的压力就有了自己的微分方程 —— 一条很快的微分方程 —— 于是代数约束少了一行,矩阵回到满秩,指标回到 1。

⚠ 但它不是免费的:容积取得越小,那条新增的微分方程越快,刚性比越大,隐式积分器的负担越重。取得越大,那个节点的压力动态就越假,可能把真实的压力波动抹平。这是一个双向的取舍,⛔ 不是「填个很小的数就完事」。取值属平台相关量,做法见第 5 讲 5.5 的第 ③ 层。

★ 还要钉一句本课自己归纳的边界:指标是「工具能不能直接积分」的判据,⛔ 不是「模型物理对不对」的判据。一个指标 1 的模型照样可以把散热器建反、把泵曲线填错——那属于 validation,本课一句话都不管。

1.3 非因果工具里,你永远看不到「代数环」三个字

这一节是本课最实用的一节,因为它直接决定你能不能搜到答案。

非因果物理网络工具(Amesim / GT / Dymola 与 Modelica 系工具链)的做法是:你搭好拓扑,它在编译期把全部方程收集起来,做指标约简,再做方程撕裂(tearing)——把一个大的非线性方程组拆成若干个小块,找出最少的一组「撕裂变量」,让其余变量能被顺序算出来。这是一个纯编译期的符号操作。

它失败的时候,报的措辞是什么?典型形如「非线性方程组无法求解」「初始化失败」「指标约简失败」「系统结构奇异」。⚠ 各家工具的具体措辞不同,且随版本变化,⛔ 请以你所用版本的实际输出为准。

它绝不会说「代数环」。

⇒ 所以,如果你拿着「代数环」三个字去检索这类工具的文档与论坛,会一无所获——不是因为文档差,是因为这个词不属于这套范式的词汇表。正确的检索词是 tearing、index reduction、nonlinear solver failure、structural singularity。

★ 这一条听起来像个小技巧,实际它每年浪费掉的时间可能比本课其它所有内容加起来都多:一个搜不到答案的工程师,会转而去怀疑他能想到的东西——泵曲线、阻力系数、边界条件——而真正的问题在他从未听说过的那一层。

1.4 因果式建模里,「代数环」才是原生术语

另一套范式是因果式信号流建模(控制侧的框图工具是典型)。这里每个模块有明确的输入与输出,信号沿箭头流动。

直通(direct feedthrough)指的是:一个模块的输出在同一时刻直接依赖它的输入,中间没有任何状态。比例环节是直通的,积分环节不是。

两个都带直通的模块首尾相接,就成了代数环——A 的输出要用 B 的输出,B 的输出又要用 A 的输出,两者互为条件,只能靠迭代当场解开。工具会给出环诊断报告,把环上的模块逐个列出来。

最典型的现场是控制器与被控对象的联合仿真:控制器的输出(阀开度、转速指令)在同一时刻影响对象的输出(温度、压力),对象的输出又在同一时刻被控制器读走。如果两侧都写成了直通,环就出现了。

怎么断?三条常见路子——插一个单位延迟、改接口的因果性、把一侧改成非直通。这三条的具体做法归 J1-04 整车热管理系统级联合仿真,本课只补两件它没讲的:

第一,识别靠工具的环诊断报告,⛔ 不靠肉眼看框图。大模型里环可能跨好几层子系统,看不出来。

第二,打断是有代价的,而这个代价常被忽略:插一个单位延迟,等于给这条回路引入了一个采样周期的相位滞后。在弱耦合回路上,这个滞后小到看不见;在强耦合回路上,它会把稳定性判断带偏——模型上看着稳的,实车上可能不稳;或者反过来,模型上振荡的,实车上其实没事。⛔ 所以「插个延迟把环断掉就行了」不是一个可以不加判断就用的做法。

上下两栏对照表式插图,中间一条竖向虚线把两栏分开,最上方一条横带写「同一个数学问题,两种范式下的入口完全不同」。上栏标题「非因果物理网络(拖部件搭拓扑)」,栏内自左向右四个方框用箭头串联:第一框写「编译期收集全部方程」,第二框写「指标约简」,第三框写「方程撕裂 tearing」,第四框写「运行期每步解非线性块」;第四框下方引出一个警示框,写「失败时的措辞:非线性方程组无法求解 / 初始化失败 / 指标约简失败 / 结构奇异」,警示框右侧再接一个检索框,写「正确检索词:tearing、index reduction、nonlinear solver failure、structural singularity」,检索框下方一行红字写「⛔ 搜代数环一无所获」。下栏标题「因果式信号流(连箭头搭框图)」,栏内自左向右三个方框用箭头串联:第一框写「模块有明确输入输出」,第二框写「两个直通模块首尾相接」,第三框写「工具的环诊断报告列出环上模块」;第三框下方引出一个警示框,写「失败时的措辞:检测到代数环 algebraic loop」,警示框右侧接一个修法框,写「打断办法归属主课 J1-04:插单位延迟 / 改接口因果性 / 一侧改非直通」,修法框下方一行红字写「⚠ 插延迟的代价是一个采样周期的相位滞后,强耦合回路上会把稳定性判断带偏」。图上不标任何数值。
图3 同一个数学问题在两种建模范式下的诊断入口、报错措辞与检索词完全不同。结论:先判自己在哪一栏,再决定用什么词去查——搜错词的代价是把方向从一开始就带偏。示意图,⛔ 不得据图取值。

1.5 两套表述必须并给的理由

有人会问:我只用一种工具,为什么要学另一套的说法?

因为整车热管理的模型几乎必然跨两套。物理侧用非因果工具搭回路,控制侧用因果式工具搭策略,两边通过接口耦合起来跑——这是这个行业最常见的形态。跑飞发生的时候,报错可能来自任何一侧,而两侧的报错措辞、诊断入口与修法完全不同。

⇒ 判断自己此刻在哪一栏,其实只要问一句:我的未知量是「一组带代数约束的状态量」,还是「一串模块的输入输出信号」?前者进 1.3,后者进 1.4。

⚠ 范式本身的对比(因果与非因果之分、四款工具的选型判据、建模流程与边界条件从哪来)归 J1-01 1D 热管理仿真导论(KULI/AMESim/GT/Flowmaster),本课不重讲,只接着它讲范式在求解层的后果。

1.6 雅可比与牛顿:两套表述共同的底,也是最早的体检指标

不管哪一套范式,只要有非线性代数块,每一步的末尾都得解一次牛顿迭代;解牛顿就得有雅可比矩阵。求解器不会每步都重算雅可比(太贵),它会尽量复用,直到迭代收敛变慢才重算。

⇒ 于是就有了两个非常灵敏的早期体检指标:

雅可比重算次数异常升高,说明复用失效得很快——工作点在快速漂移,或者矩阵条件数很差。

牛顿迭代不收敛次数异常升高,说明非线性块本身在反复失效。

这两个数比「报错」早得多。模型病态的常见根因有三条:状态量量级相差过大(同一个矩阵里既有 10⁵ 量级的 Pa 又有 10⁻³ 量级的 kg·s⁻¹)、除零(零流量处的某些关联式)、物性表外插(调用点跑出了物性表的定义域,返回的导数完全没有物理意义)。

★ 把这两个数当日常体检项读:模型没报错但这两个数在涨,就该去看了,而不是等它某天报错。

后面还有 5 讲正文 · 关键公式 · 案例拆解 · 常见误区 · 动手做

会员专属

后续为会员深水区内容——四库数据与深度拆解。

查看会员方案