2. 物理系统建模基础

物理一致性约束的起点不是评估指标,而是模型本身是否被正确地“写出来”。一个物理系统在数学上通常由四类要素共同定义:状态变量描述系统此刻“处于什么状态”,控制方程描述状态如何随时间与空间演化,边界条件规定系统与外界在边界上的相互作用,初始条件给出演化开始时刻的起点。四者缺一,模型要么不完整,要么解不唯一,后续任何评估都失去意义。

状态变量:把系统“此刻”压缩成一组数

状态变量的本质是最小充分信息集:只要知道这组量在当前时刻的取值,再加上未来的输入,就能唯一确定系统未来的演化。以经典力学为例,单自由度弹簧振子的状态变量是位移 x 与速度 v,二者构成状态向量 [x, v]ᵀ;仅有位移不足以确定后续运动,因为同一位置可能对应向左或向右运动。热学系统中,集中参数物体的状态变量是温度 T;电路系统中是电容电压与电感电流。选择状态变量时要遵循两条原则:一是完备性,即不遗漏影响演化的独立储能或记忆量;二是非冗余性,即不引入可由其他状态量代数导出的量,否则会人为造成方程组的奇异或约束冲突。

状态变量还决定了模型的阶数。一个含 n 个独立状态变量的集中参数系统,其控制方程通常可化为一阶常微分方程组,阶数为 n,相应地需要 n 个初始条件。这一点在评估阶段非常关键:初始条件个数与状态变量个数不匹配,是模型“欠定”或“过定”的常见根源。

控制方程:守恒律的具体化

控制方程不是凭空写出的公式,而是质量、动量、能量、电荷等守恒律在具体对象上的展开。以一维导热为例,取控制体并做能量平衡,可得

ρ·c_p·∂T/∂t = ∂/∂x( k·∂T/∂x ) + q_v

其中 ρ 为密度(kg/m³)、c_p 为比热容(J/(kg·K))、k 为导热系数(W/(m·K))、q_v 为体积热源(W/m³)。逐项检查量纲:左边 ρ·c_p·∂T/∂t 的单位是 (kg/m³)·(J/(kg·K))·(K/s) = W/m³,右边扩散项 ∂/∂x(k·∂T/∂x) 为 (1/m)·(W/(m·K))·(K/m) = W/m³,源项同为 W/m³,三项量纲一致,方程才在物理上成立。这种“逐项对单位”的习惯,应在建模阶段就建立,而不是等到评估阶段再补。

控制方程还必须与状态变量的选择自洽。若把上述方程离散为节点温度 T_i 的常微分方程组,则每个节点温度就是一个状态变量,方程数与状态变量数相等;若同时把热流也作为独立未知量引入而不增加本构关系,就会出现方程数与未知数不匹配。

边界条件与初始条件:定解的两半

控制方程给出的是“族”解,边界条件与初始条件从中挑出唯一的那一个。边界条件分三类:第一类(Dirichlet)直接给定边界上的状态量值,如 T(0,t)=T_w;第二类(Neumann)给定边界上的通量,如 -k·∂T/∂x|_{x=L} = q'';第三类(Robin)给定状态量与通量的线性组合,如对流换热 -k·∂T/∂x|_{x=L} = h·(T(L,t)-T_∞)。选择哪一类取决于真实物理界面:与恒温冷板接触用第一类,绝热面用零通量第二类,暴露在空气中用第三类。

初始条件则只作用于时间维度的起点,如 T(x,0)=T_0(x)。需要特别注意的是:初始条件必须与边界条件在角点处相容。若初始时刻整个区域温度为 T_0=300 K,而边界在 t=0 瞬间被设为 T_w=400 K,则角点处出现跳跃,数学上允许但会带来数值上的陡峭梯度;工程上更常见的做法是用一个短过渡或直接接受该阶跃并加密网格。评估时若发现启动瞬间残差异常大,往往就是这类相容性问题,而非求解器缺陷。

一维导热模型的定解结构:状态量、控制方程、边界与初始条件 物理对象(示例) 均质杆 长度 L = 0.2 m ρ = 7800 kg/m³ c_p = 460 J/(kg·K) k = 45 W/(m·K) 状态变量:T(x,t) 离散后:T₁…T_N (示例参数,非实测) 控制方程(能量守恒) ρ·c_p·∂T/∂t = ∂/∂x(k·∂T/∂x) + q_v 量纲核对:三项均为 W/m³ 方程数 = 状态变量数(离散后) 阶数决定所需初始条件个数 初始条件(时间起点) T(x, 0) = T₀(x) 示例:T₀ = 300 K 均匀 个数 = 状态变量个数 须与边界条件在角点相容 边界条件(空间端点) 第一类 Dirichlet T(0,t) = 400 K 恒温接触面 第二类 Neumann -k·∂T/∂x = q″ 给定热流 / 绝热 q″=0 第三类 Robin -k·∂T/∂x = h(T-T∞) 对流换热面 演化 起点 约束 约束 控制方程给出解族,边界条件与初始条件共同挑出唯一解;四要素齐备,模型才可评估

量纲与单位一致性:评估阶段的第一道筛子

模型写完后,进入评估环节,最先做的不是比对曲线,而是量纲检查。量纲一致性有两层含义:其一,方程中相加或相减的每一项必须同量纲;其二,超越函数(指数、对数、三角函数)的自变量必须无量纲。例如在 Arrhenius 型反应速率 k = A·exp(-E_a/(R·T)) 中,E_a/(R·T) 的单位是 (J/mol)/((J/(mol·K))·K) = 1,无量纲,合法;若误把 E_a 写成 kJ/mol 而 R 用 J/(mol·K),指数项会放大 1000 倍,模型在数值上仍能跑通,但物理意义完全错误,且往往表现为“高温段速率离谱、低温段几乎为零”的异常曲线。

单位一致性还涉及单位制混用。工程中常见 mm 与 m、kW 与 W、摄氏度与开尔文混用。温度尤其危险:导热方程中的 T 若一处用 ℃、一处用 K,差值不变但比值与指数项会出错。建议在建模文档中固定一张“量—符号—单位—来源”的对照表,并在代码入口处统一换算到 SI 基本单位,中间计算不再换单位,只在输出时按需转换。

评估前的快速自检:把控制方程每一项的单位写出来,看是否全部相同;检查所有指数、对数、三角函数的自变量是否无量纲;检查初始条件与边界条件在角点是否相容;检查初始条件个数是否等于状态变量个数。四项通过,再进入数值比对。

一个可复用的建模检查清单

把上述要点固化为一张可填写的检查表,能在建模与评估之间建立稳定的质量关口。以下字段均围绕本节四要素与量纲展开,可直接用于具体项目:

检查项判断依据示例填写
状态变量完备性是否包含全部独立储能/记忆量一维导热:节点温度 T₁…T_N
状态变量非冗余是否存在可代数导出的量热流由 T 的梯度导出,不单列
控制方程量纲各项单位是否一致三项均为 W/m³
方程数与未知数离散后是否相等N 个方程对应 N 个节点温度
边界条件类型与真实界面物理是否匹配左端 Dirichlet 400 K,右端 Robin
初始条件个数是否等于状态变量个数N 个节点各给初值
角点相容性初始值与边界值在角点是否冲突t=0 时左端由 300 K 阶跃至 400 K,需说明
单位制统一是否统一到 SI 基本单位长度 m、温度 K、功率 W

需要强调的是,这张表不是形式主义。实际项目中大量“模型不收敛”“结果与实验偏差大”的问题,追根溯源都落在表中某一行:状态变量漏了某个储能环节导致阶数偏低,边界条件类型选错导致通量符号反了,初始条件个数与阶数不匹配导致求解器报欠定,或者单位混用导致参数数量级错误。把这些检查前置,评估阶段才能把注意力放在真正的物理偏差上,而不是反复排查本可在建模阶段消除的低级错误。