审阅对象:wolai 抗风课程页 kpY43KZmdizcoEEgKT1Lt9 的 CFD 原附件 cfd.mlx(block d8Q9ZBrg4ziSHoHh374ewy)与 cfd_fvm.mlx(block 56pmbHTJog1mpfwtYM7Gfs);以本地 source_archive/files 原文件及 source_archive/extracted_matlab/cfd.full-text.txt、cfd_fvm.full-text.txt 阅读核对。原工程只读,本课为独立迁移。
核查日期:2026-10-19。
- 守恒方程 → 控制体积分 → 面通量 → 线性方程组 → 求解 → 网格误差。
- 原对流扩散案例的 F/Γ=11、域长 L=1、左1右0与 N=5/20 对比。
- 正弦源项扩散案例、网格尺度 Pe 与格式选择。
- 从一维离散转向桥梁 CFD 时,需要额外的物理模型、速度—压力耦合、网格与验证步骤。
| 原程序或文字 | 问题 | 网页处理与证据 |
| Γu″=S,但推导写 −uW+2uP−uE=+SΔx²/Γ | 二阶导数正负号相反。 | 保留原PDE,统一写 J=−Γu′、J′=−S;因此 u=−10 sin(πx)/π²。检查给出负解并二阶收敛。 |
| x 为 dx/2 到 L−dx/2,但 A(1,1)=A(N,N)=1 并将这两个未知量设0 | 将物理边界错放到第一/末单元中心,实际上缩短了计算域。 | Dirichlet在 x=0/1 面,中心至边界距 Δx/2,因此边界扩散导通量 2Γ/Δx。零对流线性解在中心正确取值。 |
| 网格比较循环 b 初始化全0后未补入源项,理论线也画零 | 实际比较零右端齐次解,无法验证非零源项算例。 | 每个网格重新计算 S(xP)Δx,始终与同一非零解析解比较。 |
| cfd_fvm 中 T=0.1 标注“特征时间”,同时 C=ρu/T 用作扩散归一化 | 该方程中分母应为扩散系数 Γ,原变量名称与量纲说明不一致。 | 用 Γ、F=ρu、PeL=FL/Γ 命名;默认 Γ=L=1、F=11,对应同一个无量纲解形状,不把 T 当作时间。 |
| “中心差分在处理对流扩散时表现良好”缺少网格限制 | 对 PeΔ>2 不保证内部正邻点系数;原5单元 PeΔ=2.2 已超出保证范围。 | 直接显示 PeΔ,并给 PeL40、N5 的明确越界示例;中心格式 aE=D−F/2,迎风非负。仅陈述失去有界性保证,不宣称所有高Pe情况必然不收敛。 |
| Pe 被描述为惯性/黏性,Pe>2 被类比为复杂流动 | 惯性/黏性应联系动量Re;2是本离散模型内部系数条件,不能用来定义真实湍流阈值。 | 区分 PeL、PeΔ 与 Re;仅在 Γ=μ 时给 PeΔ=ReL Δx/L。 |
| 高风速“否则可能低估响应” | 误差方向不普遍,粗网格可能振荡、过耗散或改变分离,不能单称低估。 | 用本例可计算误差和越界,工程响应需要独立验证,避免固定误差方向承诺。 |
| “中心格式 φP=(φW+φE)/2” | 面插值与节点方程混淆;有对流时P对两侧的权重并不相等。 | 正确写内部面 φf=(φP+φE)/2,方程邻点系数 aW=D+F/2、aE=D−F/2。 |
| 末段 phi(i+1)=phi(i−1)−2Pe phi(i) 的递推“实验” | 没有完整的对流扩散边值求解,也没有施加右端边界,不能用来证明该方程的网格振荡。 | 每次组装完整三对角边值问题,求解后独立检查 Je−Jw−SΔx;没有沿用该递推。 |
| 原能量段将总能量解释与内能形式混用,且涡度与速度梯度反对称张量概念混用 | 如扩充到NS原理,需分别定义能量形式与涡度向量。 | 本次不复制这些未用于一维输运的推导;页面明确不是完整NS求解器。 |
- 正 x 总通量 J=Fφf−Γφ′,单元平衡 Je−Jw=SΔx。
- 内部面共享同一通量,图表数值、方程组和CSV来自同一次求解。
- 中心边界:对流面值使用物理边界给定值,扩散半单元距离。
- 迎风边界:入流对流用边界给定值,出流对流用单元上游值;扩散仍用边界给定值和半单元距离。这是一阶一致的边界闭合;因此两种方案的边界对流处理也随格式改变,页面和说明均明确。
- 解析解按点值在 xP 比较;源项采用中点积分。小残差验证代数守恒,不等价于连续问题精度。
- 三维柱高、颜色和箭头都有明确映射;不渲染虚假的桥梁压力或NS流线。
1. NIST FiPy, Finite Volume Method(官方网站,阅读于2026-10-19)
https://pages.nist.gov/fipy/en/3.4.5/numerical/discret.html
支持:CC-FVM在控制体积分;对流/扩散转为面和;源项积分;梯度应按实际中心距计算;系数方程 aPφP=ΣaAφA+b。
2. NIST FiPy, Numerical Schemes(官方网站,阅读于2026-10-19)
https://www.ctcms.nist.gov/~wd15/fipy/documentation/numerical/scheme.html
支持:面Pe为对流强度/扩散导通量;中心插值α=1/2在|Pe|<2满足严格正系数条件;迎风按方向取值、保持该系数约束但引入数值扩散。网页将等号处称“非负系数”,避免把严格正系数与临界值混淆。
3. Chris Greenshields & Henry Weller, Notes on CFD: General Principles, §4.2(OpenFOAM开发者教材,阅读于2026-10-19)
https://doc.cfd.direct/notes/cfd-general-principles/fixed-value-and-fixed-gradient
支持:定值边界约束面值、扩散项法向梯度必须由边界面值和相邻单元距构造。该页用于验证本课中心格式的固定面值处理;本课迎风出流外推是独立明确的一阶边界闭合,不把其冒称为该页的fixedValue对流实现。
运行 node physics-check.cjs,8项检查通过。PeL=11的中心格式N10→20→40→80→160 RMS误差依次为
0.0454777、0.0111522、0.00277423、0.000692691、0.000173119,最终实测阶约2.00045。
迎风对应误差为0.0526232、0.0320532、0.0180581、0.00964467、0.00499384,最终阶约0.94958。
高Pe中心越界例PeL40、N5的单元解约为[1.28860,0.32660,1.92993,−0.74228,3.71140],迎风同参数在[0,1]内。
用户明确本课应先回答“相邻数值如何得到空间/时间导数,尤其二阶导数”。新版保留上述经过修正的FVM,但放入可展开的后段;首屏专门做采样、割线、斜率差与时间切片。
数学核查:
- mw=(φP−φW)/Δx 是左半点附近的斜率近似,me=(φE−φP)/Δx 是右半点附近的斜率近似;两个半点相距Δx,因此(me−mw)/Δx给标准三点二阶模板。不是在同一点连续套两遍中心一阶算子;后者会得到跨±2Δx的另一模板。
- 斜率与曲率不混同:图中灰虚线是一阶导数对应的切线;二阶导数是斜率沿x的变化率。没有把数学曲率φxx/(1+φx²)^(3/2)直接叫作φxx。
- 时间偏导必须固定x;前向差分用φ(t+Δt)−φ(t)除Δt,中心差分用φ(t+Δt)−φ(t−Δt)除2Δt。
- 所有量来自φ=exp(−αk²t)sin(kx−ωt),并独立实现解析φx、φxx、φt、φtt;Node核验函数满足φt+(ω/k)φx−αφxx=0。
- 真实场自变量可为x,y,z,t;本课只显示1D空间+时间的标量切片。曲面高度为φ,绝非真实第三空间坐标,也不声称求解完整NS。
- 均匀网格、常Γ时,FVM的扩散面梯度差/Δx与三点二阶有限差分内部模板相同。解释共同模板时仍区分“直接近似导数”和“先做控制体守恒积分”。
Primary资料(2026-10-20读取):
1. NIST Digital Library of Mathematical Functions, §3.4(iii), Eq.3.4.20与Eq.3.4.22:https://dlmf.nist.gov/3.4#E20 ,https://dlmf.nist.gov/3.4#E22 。支持中心一阶与三点二阶偏导模板均为O(h²)。
2. UCL Natural Sciences, Finite Differences, §3.2:https://uclnatsci.github.io/2022/NSCI0011/fdiff/dif/formulae.html 。支持前向一阶导差分的O(h)精度;本课将相同单变量公式应用到固定x的时间剖面。
新核验:node derivative-check.cjs的8项检查通过:PDE解析一致性、斜率差恒等式、线性/二次多项式、空间二阶收敛、时间前向一阶/中心二阶、固定变量采样、波峰符号/过零点、FVM扩散通量关系。空间最终阶1.9999098;时间前向0.9953928、中心1.9999639。
浏览器实测Δx 0.6→0.3后二阶导误差缩小3.96418倍;中心Δt 0.2→0.1后误差缩小3.99001倍。播放四步、两种时间公式、两种曲面切片、三维轨道与原FVM后段均通过;390px空间/时间模式均无横向溢出。