——那为什么一个能复算,一个还锁在“黑盒子”里?
编者按
本文是“中国机场刚性道面计算软件(CAAC-ARPD)技术架构与标准可复现性研究”系列的第三篇,也是总结篇。作者将中国民航现行规范配套设计软件CAAC-ARPD与美国联邦航空管理局公开源码的设计软件 FAARFIELD 2.1 置于同一工况下——相同机型组合、设计年限、结构层参数与地基条件——进行独立复算对比。
主要发现如下:
厚度结果接近:典型三机型算例下,CAAC-ARPD 给出面层厚度 407 mm,FAARFIELD 给出 398.8 mm,相对差约 2.1%;单机型扫描不同地基刚度时,两者厚度趋势一致,CAAC-ARPD 系统性偏厚约 3%~8%。
计算路径不同:CAAC-ARPD 采用预计算应力数据库查表+多维插值+借鉴 FAARFIELD 骨架的疲劳方程(本地化标定 K50/K85),应力库生成方法、疲劳方程完整形式及标定依据未写入规范正文,也无法通过官方公开渠道获取。
可复核性缺失:两套软件厚度虽接近,但 CAAC-ARPD 的核心算法、应力数据库、插值误差验证和外推边界均封装于"黑盒子"内,外部工程师无法独立复算,也无法判断结果一致是模型自然吻合还是参数标定"凑出"。
技术现象讨论:FAARFIELD 与 CAAC-ARPD 均出现"地基反应模量增大、设计厚度略增"的反常规趋势,文章从结构疲劳方程与材料疲劳方程的区别予以解释,并指出超标定区间线性外推需公开依据。
核心主张:标准可以简化,但关键算式、标定参数和验证过程必须公开可复核;呼吁将疲劳方程与标定依据写入规范正文,并在民航局官网开放 CAAC-ARPD 软件及应力数据库的平等获取。
结论不是"CAAC-ARPD 算错",而是:正因为它算得和公开透明的 FAARFIELD 基本一样,才更没有理由把方法锁进“黑盒子”。结果接近不能替代过程可信——公开,才是标准应有的底色。
特别声明:本文为个人技术研究,所有结论均基于两份公开获得的材料:(1)美国联邦航空管理局(FAA)在官网免费发布的 FAARFIELD 2.1 软件、源代码与 README;(2)公开传播的民用机场水泥混凝土道面结构设计软件-CAAC-ARPD(V1.0)软件压缩包及其随附的 Python 源码、帮助文档与算例报告。文中未使用任何反编译、破解或非授权技术手段,全部证据可在上述文件中按文件名、行号复核。
本文为个人技术研究,不涉及对主管部门管理行为的行政评价,也不涉及对任何单位或个人的责任认定,仅围绕软件技术架构与标准可复现性展开分析。欢迎相关单位、技术团队及对该问题有研究的读者,以源码、数据和规范文本为依据,提出不同意见、补充材料、纠错与交流。
写在前面:标准可以简化,但不能失去可复核性
这个中国道面计算软件研究系列写到第三篇,需要先把前两篇的逻辑收束一下,也回应一个更根本的问题:工程标准到底应当承担什么角色?
第一篇《一张表,一次插值:解剖 CAAC-ARPD——当机场刚性道面厚度“计算”变成查字典》,主要讨论 CAAC-ARPD 的板底应力从哪里来。我们顺着软件包中的 main.py、interpolation.py 和 stress_data.csv 往下看,发现它运行时并不是每次重新建立三维有限元模型、实时求解板底应力,而是调用一张预先生成的应力数据库。真实工程参数如果落在网格点之间,就通过三点二次插值逐维估算;如果面层厚度超过数据库上限,则进入指数外推。
第二篇《第 37,314 行:解剖 CAAC-ARPD 的底层逻辑》,继续追问:查到应力之后,软件又用什么疲劳方程判断这块板能承受多少次起降?我们选取 stress_data.csv 第 37,314 行,一条 B737-800 的真实节点工况,排除插值干扰,只看疲劳方程本身。结果发现,CAAC-ARPD 采用的结构疲劳方程,数学骨架明确源自 FAA 的 FAARFIELD;所谓本地化,主要体现在以道床顶面反应模量 k_d 替换原有支承指标,并通过 K50、K85 等参数进行标定。问题仍然不是“能不能借鉴”,而是这些决定容许作用次数和最终厚度的核心算式、标定依据和适用范围,并没有完整进入规范正文。
到这里,有一个很自然的疑问会出现:
标准毕竟不是研究报告。它是否有必要把所有底层模型、有限元参数、标定过程和验证细节都写进正文?
这个问题还真值得认真对待。
行业标准的确不是学术论文,也不应当把研究过程中的全部推导、试验细节、有限元建模参数和软件实现过程原封不动塞进正文。工程标准的基本使命,是把复杂研究成果凝练成可执行、可使用、可推广的技术规则,让大多数工程人员能够据此开展设计、复核、审查和应用。从这个意义上说,标准必须“适用、实用”,不能把每一个使用者都变成软件开发者、有限元研究者或底层算法审查者。
但是,标准的“化繁为简”,并不等于“把关键依据拿走”。
一个工程标准可以不写成研究报告,却必须让行业知道:简化路径从哪里来?适用边界在哪里?核心变量之间是什么关系?误差和安全裕度如何保证?外部工程师如何独立复核?尤其当一个软件事实上承担了规范核心计算功能时,它就不再只是一个普通工具,而成为标准体系的一部分。此时,软件背后的应力计算方法、疲劳方程、标定参数、误差验证和版本依据,至少应当以规范正文、附录、技术报告或官方配套说明的形式公开到足以复核。
这不是要求每个设计人员每次都从头建模,也不是要求所有人重复底层数值验证。恰恰相反,公开关系式、标定依据和验证边界,是为了让绝大多数工程人员可以放心使用简化工具;让审查人员在必要时可以追溯;让研究人员在发现异常时可以复核;让标准本身在未来可以被修正、迭代和继承。
机场道面规范过去为什么要给出应力计算公式?并不是因为行业没有有限元程序,也不是因为有限元不能算。恰恰相反,如果目的只是求某一个工况下的应力值,直接用有限元程序就可以了,而且精度可能更高。
规范中建立公式,真正的意义在于:把变量之间的关系表达出来。
因此,预计算应力表加插值,可以作为工程软件的加速工具;查图、拟合、简化系数,也都可以是规范工程化表达的一部分。问题不在于“能不能简化?”,而在于简化之后,是否还保留了足够的可复核性。
如果一套方法只是把有限元结果离散成若干网格点,再用插值连接起来,同时不公开数据库生成方法、网格密度的合理性、误差验证过程、外推边界和疲劳标定依据,那么外部工程师得到的就不再是一个可复核的工程标准,而是一个只能输入参数、接受结果的软件“黑盒子”。
这正是本系列研究文章真正关心的问题。
前两篇讨论的是过程:应力如何取得?疲劳如何判定?第三篇则换一个角度,直接看结果。
如果 CAAC-ARPD 与 FAA 的 FAARFIELD 最终厚度差异很大,那么问题很直接:两套方法为何不一致?但如果两者最终厚度非常接近,问题反而更值得追问:
这种接近,是两套独立方法自然吻合,还是参数、方程和标定共同作用后的结果对齐?如果结果经得起比较,为什么计算路径不能公开?如果方法足够可靠,为什么不把完整公式、标定依据和验证过程,以规范正文、附录或官方技术报告的方式公开?
因此,第三篇要做一件最朴素的事:把 CAAC-ARPD 和美国 FAA 的 FAARFIELD 放在同一张桌子上,输入尽量接近的结构、交通量和地基条件,看两套软件最终给出的道面厚度差多少?
本文并不是为了证明 CAAC-ARPD 一定算错。相反,我们会把一个实打实计算的事实放在最前面:在本文选取的典型算例中,CAAC-ARPD 与 FAARFIELD 的最终厚度非常接近。
但也正因为接近,问题才更清楚。
结果接近,不能替代过程可信。软件可用,不能替代标准可复核。标准可以简化,但不能把决定结果的关系、依据和边界,全部藏进一个外部无法完整验证的软件“黑盒子”里。
0. 先说一个结论事实


之前“机场工程人家”公众号分享了两篇文章,把 CAAC-ARPD 的应力查表、疲劳方程拆到了行号。今天这一篇,我们继续做一件、也是最该做的一件事:把它和美国的 FAARFIELD 放在同一张桌子上,输入同样的工况,看两个软件算出的跑道厚度差多少?
结果是:几乎一样。
同一个三机型组合、同样的 30 年设计年限、尽量对齐的结构与地基,CAAC-ARPD 算出面层 407 mm,FAARFIELD 算出 398.8 mm。差 8.2 毫米,相对差 2.1%。
我选择把它放在第一段。因为这篇文章要说的,并不是说“CAAC-ARPD 算错了”或“CAAC-ARPD 的跑道危险”。恰恰相反:正因为它给出的厚度和公开透明的 FAARFIELD 几乎一样,那个把方法、数据、方程、连同一套慢得离谱的查表过程全锁进“黑盒子”里的做法,才令人感到没有道理。如果你算出的结果和别人一样,你还藏什么?
下面把这次两个软件同台复算的全过程摊开,然后把三篇思考、复核、计算后理出来的所有问题做个总结。
1. 算例:同一条跑道,输入给两个软件
两边都设计同一条跑道:配备平行滑行道的跑道,设计年限 30 年,三机型混合交通。
交通量(CAAC-ARPD 按"年运行架次+起飞比例",FAARFIELD 按"年起飞架次",已对齐):
结构(单位换算全列出,便于复核):
道基换算:60 MN/m³ ÷ 0.27145 = 221 pci。地基用 FAARFIELD 的 k 值输入模式,让它用自己的 k→E 换算,换算责任在 FAA 软件这边,避免我们主观赋值。












2. 结果:两边都落在 400 毫米附近




图1:两份原始报告并排——CAAC-ARPD 407 mm 与 FAARFIELD 398.8 mm
| 407 mm | |||
差值 407 − 398.8 = 8.2 mm,约 2.1%。
需要说明的是,本文算例中 CAAC-ARPD 输出的最大 CDF 为 0.93,尚未达到 1.00 的疲劳控制上限。这意味着,在同一套 CAAC 计算体系内,如果继续以 CDF=1.00 作为临界目标进行厚度优化,理论上仍存在一定减薄空间。也就是说,407 mm 并不是严格意义上“刚好用满疲劳容量”的厚度,而是带有约 7% 疲劳损伤余量的结果。
但由于 CAAC-ARPD 与 FAARFIELD 的应力模型、材料参数、支承指标和疲劳方程并不完全同口径,不能简单据此把 CAAC 的 CDF=0.93 与 FAA 的 CDF=1.00 直接等价比较。本文更关注的是:在最终厚度接近的表象背后,两套软件的计算路径、参数空间和可复核性存在明显差异。
关于"控制机型"与 CDF(顺带解释一个容易被误读的细节):第一次 FAARFIELD 完整报告显示,本算例的损伤控制由 B777-300ER 主导,其 CDF Contribution=1.00,B737-800 与 A320-200 均显示为 0.00。随后将 B737-800 年起飞架次由 15,000 修正为 7,500 后,面层厚度仍为 15.7 in。B777-300ER(最大起飞约 765,000 lb、三轴双轮)的破坏远远盖过两架窄体机(约 175,000 lb),在它的临界横向位置上,窄体机的损伤贡献小到四舍五入为零。值得一提的是,CAAC-ARPD 那侧的 CDF 曲线也在 B777 主起落架对应的横向位置(距中线 5.375 m)出现双峰、CDFmax=0.93——两套软件各自独立地把同一架飞机(B777-300ER)认定为控制机型。这反而是两者的一处暗合。
必须诚实交代的几处口径差:
1. 面层模量不一致。 FAARFIELD 的 P-501 PCC 设计层模量被软件锁定为 4,000,000 psi(≈27.6 GPa),本次无法调高;CAAC 用的是 31 GPa(≈4,496,000 psi),高约 12.4%。所以这不是"同一材料下的纯算法对比",而是"在 FAARFIELD 允许范围内尽量对齐 CAAC 工程输入"的体系对照。 
2. 泊松比、稳定基层处理两边略有差异(FAARFIELD 基层泊松比 0.35,CAAC 取 0.2)。 3. 收敛判据略不同:FAARFIELD 设计到 CDF=1.00,CAAC 报告的 CDFmax=0.93(其判据是 0.925≤CDF≤1.0)。
这三点意味着:那 8.2 mm 里掺了模型与参数的成分,不能全算到算法头上。我们不据此说谁更安全,也不说 CAAC 偏薄——本算例只说明一件事:在这个工况下,两套软件的最终厚度非常接近。
3. 一个无法从外部回答的问题:是验证,还是在凑?
本算例里,CAAC -ARPD与 FAARFIELD 都落在 400 mm 附近,差约 2%。这种接近本身值得追问一句:它是两套独立方法各自正确、自然吻合,还是其中一套被调得与某个目标一致?
CAAC-ARPD 帮助文档 D 章自述,疲劳方程标定时,目标之一是"新方程算出的设计厚度,与旧规范(MH/T 5004-2010)的厚度偏差不宜过大"。也就是说,它的标定参数(K50=20、K85=60)部分是朝着"向既有厚度看齐"调出来的。
于是出现一个从外部无法回答的问题:当 CAAC -ARPD和 FAARFIELD 给出接近的厚度,我们无法区分这是两种独立机理的真实吻合,还是通过标定人为调整导致的表面一致。一个是验证,一个是在凑——而它们给出同样的数字。要区分二者,唯一的办法是公开标定依据、应力数据库与完整方程,让外部能独立复算。封闭在“黑盒子”里,你永远不知道看到的一致,是真的一致,还是被“凑”出来的一致。
4. 再追问一步:扫描地基刚度
有机场道面丰富经验的同行曾经提过一个职业直觉:CAAC-ARPD 算出来的道面,似乎总是偏厚一点儿,尤其在地基条件较好的小机场。
这是一个可以验证的命题。
我们把前面那个 B737-800 单机型算例简化到只剩一个变量:地基反应模量。其他条件全部固定,只把地基从软到硬扫一遍,看两套软件的设计厚度怎么变化。
计算原则很简单:两边都是“给定结构与交通,迭代面层厚度,直到疲劳损伤判据满足”。
CAAC-ARPD 的路径是:
查应力表 + 五维插值 + 代入疲劳方程 + 迭代面层厚度。
FAARFIELD 的路径是:
运行时求解三维有限元响应 + 代入其疲劳方程 + 迭代面层厚度。
为尽量减少干扰,输入条件统一如下:
• 机型:B737-800 单机型; • 年起飞架次:7,500; • 设计年限:30 年; • 面层:PCC,弯拉强度 5.0 MPa / 725 psi; • 基层:两层水泥稳定基层,均为 200 mm / 2000 MPa; • 不设垫层; • 地基直接用 k值输入,使地基反应模量直接对应道床顶面支承条件。
换算关系为:
1 MN/m³ ≈ 3.684 pci计算结果如下:
表:B737-800 单机型,调整地基刚度,两套软件的设计厚度对比。



这里有两件事值得说清楚。
第一,“地基越硬,道面越厚”这个反常规趋势,两套软件都有,它不是 CAAC-ARPD 独有的问题。
FAARFIELD 从 12.7 in 增加到 14.0 in,CAAC-ARPD 从 348 mm 增加到 367 mm,方向一致。
这说明,这个趋势不是 CAAC-ARPD 单独制造出来的“逻辑悖论”。它更可能来自 FAA 刚性道面结构疲劳模型本身的特性:在特定疲劳方程体系下,地基支承增强虽然会降低板底应力,但也会通过疲劳参数影响容许作用次数,最终可能表现为设计厚度增加。
CAAC-ARPD 沿用了 FAARFIELD 疲劳方程的基本骨架,也就把这个反常规特性一并继承了下来。本文特意说明这一点,是为了避免把一个共同模型特性误读成 CAAC-ARPD 独有错误。
按民航上一版规范,地基强度越高,计算板厚越小。这也是道面结构的基本原理。但是根据两个软件实际计算结果,地基强度越高,板厚越大,应如何解释这种现象,欢迎专业人士参与讨论。
第二,CAAC-ARPD 在整个区间内均比 FAARFIELD 略厚,但差距并不夸张。
在这组三个地基刚度工况下,CAAC-ARPD 比 FAARFIELD 厚约 3%~8%。这印证了“CAAC 算得偏厚一点”的工程直观感觉,但量级是几个百分点,不是惊人的浪费。
真正值得追问的,不是最终厚度多了十几毫米或二十几毫米,而是中间过程。
在固定同一块道面、只改变地基刚度的条件下,CAAC-ARPD 的容许作用次数 N_ei 从 31,105 次陡降到 977 次,下降约 32 倍。原因在于,疲劳方程中的系数 a、c 随道床顶面反应模量 k_d 线性增大;当 k_d 超过标定区间上限 K85 = 60 MN/m³ 后,公式进入没有上界的线性外推。
系数a,c与地基反应模量K呈线性关系,并线性外推。这种关系是如何得到的?可否让某大学专业做道面研究的学者和编软件的专业人士阐述一下内在机理?
而真实工程中,k_d > 60 MN/m³ 并不是罕见边界条件。本系列前文那个 407 mm 算例中,原始道基反应模量为 60 MN/m³,但经山皮石垫层向上换算后,道床顶面反应模量 k_d 已达到 74.4 MN/m³,已经越过 K85 = 60 MN/m³ 的标定端点。
也就是说,最终厚度只是温和增加了几厘米,但这个结果背后,容许作用次数已经经历了数量级变化;而这段变化,是处于一段超出标定区间的线性外推的位置。
这段外推是否成立?需要公开的试验、反算或参数分析依据来支撑。否则,外部工程师无法判断:这是经过验证的工程模型,还是一个在常规工况下频繁越界的经验外推?
这也再次回到本文的核心问题:它算得和 FAARFIELD 只差几个百分点,很可能是对的。但“很可能”三个字,本身就是问题。因为方程、标定数据、应力库和外推依据都不在规范正文里,只在那份公众无法从官方渠道取得的帮助文档和软件“黑盒子”里。
5. 一个留给行业讨论的现象:地基越硬,两套软件都更厚
这一节不下结论,只把一个我没有料到的观测现象摆出来,请同行一起研究。
刚性道面设计有一条近乎常识的判断:
地基越硬,板底应力越小,所需道面应当越薄。
在经典的材料疲劳,也就是小梁弯拉疲劳框架下,这个判断是成立的。因为材料疲劳方程主要看应力比,地基模量并不直接进入“容许作用次数”。地基变硬,板底弯拉应力下降,应力比降低,疲劳寿命提高,所需厚度自然应当下降或至少不增加。
也正因此,有道面研究造诣深厚的前辈专家指出:“地基模量升高、板厚反而增大”这种方向性逆转不应当出现,否则就等于说“土基不必压实”,与工程常理相悖。
这个意见是对的,值得认真对待。
但我做了一组扫描实验,结果比直觉复杂。
我们固定 B737-800 单机型,固定上下基层,只把地基反应模量从软到硬扫一遍,两套软件各跑一次。
输入条件如下:
• 机型:B737-800; • 年起飞架次:7,500; • 设计年限:30 年; • 基层:两层水泥稳定基层,均为 200 mm / 2000 MPa; • 不设垫层,使地基 k值直接对应道床顶面支承条件;• 仅改变地基反应模量。
计算结果如下:
请特别注意右边一列。
FAARFIELD——美国 FAA 自己的、开源的、被反复验证的设计软件——也给出了“地基越硬,面层越厚”的趋势:
12.7 in → 12.9 in → 14.0 inCAAC-ARPD 也是同一方向:
348 mm → 352 mm → 367 mm这不是我的推理,而是两套软件直接给出的计算输出。FAARFIELD 的结果任何人都可以用公开软件复算。两套软件、同一方向。
那么,“不应出现逆转”的判断,和“两套软件都出现逆转”的观测,应该如何统一?
我们的理解是:分歧可能出在采用哪一种疲劳方程。
经典材料疲劳方程主要看应力比。地基刚度不直接进入容许作用次数,所以应力一降,寿命就涨,厚度不应反向增加。
但 FAA 的结构疲劳方程不同。它基于足尺加载试验标定,容许作用次数不仅与应力比有关,也与结构支承条件有关。换句话说,在这种结构疲劳模型里,容许作用次数不是一个只由材料应力比控制的静态量,而是会随结构刚度和地基模量变化。
于是就可能出现这样的竞争关系:
于是,在结构疲劳方程中,地基变硬会同时触发两个相反方向的影响。
一方面,地基变硬后,板底弯拉应力通常会下降,应力比降低,疲劳损伤减小。这个方向对设计是有利的,按常规直觉,所需面层厚度应当减小。
另一方面,FAA 结构疲劳方程并不只看应力比,它还把地基模量作为影响容许作用次数 N_ei 的变量。当地基模量增大时,公式可能给出更低的容许作用次数。这个方向对设计是不利的,因为软件会认为同样一块板能够承受的重复荷载次数变少了。
最终厚度取决于这两股作用的相对大小:如果应力下降的有利影响占主导,道面变薄;如果 N_ei 降低的不利影响占主导,软件就需要通过加厚面层来满足疲劳损伤判据,于是出现“地基越硬,面层反而越厚”的反常规结果。
CAAC-ARPD 帮助文档 D 章本身也区分了“材料疲劳方程”和“结构疲劳方程”,而 CAAC-ARPD 采用的是后者。
换句话说:
在材料疲劳视角下,地基越硬、板厚越厚的逆转不应出现;在结构疲劳视角下,这种逆转不仅可能出现,而且是 FAARFIELD 和 CAAC-ARPD 两套软件共同呈现的计算事实。
这两种视角孰优孰劣,结构疲劳模型在高地基模量区间的适用性如何?超过标定范围后的线性外推是否站得住?是一个真正值得行业公开地、认真地讨论的问题。
本文无意在这里做一个确定性的分析结论,只想把这个用公开软件可以复算出来的现象摆上桌面。
而这恰恰回到本系列的主线:
要把这样的问题讨论清楚,前提是方程、标定数据、应力数据库和验证过程都摆在阳光下,而不应封存在“黑盒子”里。
FAARFIELD 能被我们这样反复试算、追问,正因为它的软件、报告和计算路径可以公开获取。CAAC-ARPD 的对应部分,今天还在那个公众无法从官方渠道取得的“黑盒子”里。
一个开放的标准,会让这种技术讨论变成进步;一个封闭的标准,只会让它变成猜测。
6. 三部曲总结:CAAC-ARPD 的全部问题
把三篇文章摆在一起,分两类。第一类是核心——关于透明与可复现;第二类是佐证——关于工程质量。
第一类:透明性与可复现(核心)
1. 应力靠查表,不是实时计算。 软件xj-新建库查一张 12 万行(jp-加铺库 44 万行)的预存表,落在网格点之间就做五维二次插值。这一步是民航总院等单位用 ABAQUS Winkler 双层板模型离线算的——不是抄 FAA,这点我此前的文章中澄清过,也用 FAA 源码反证过(FAARFIELD 是弹性层状内核,两套模型不兼容,表不可能出自 FAARFIELD)。 2. 网格稀疏,误差无法独立核验。 基层厚度、混凝土模量、基层模量三个关键参数各只采样 3 个点。软件帮助说明自报插值误差<5%,但软件、数据库、帮助文档都无公开获取渠道,这个 5% 没有任何外部第三方能验证。 3. 疲劳方程源自 FAARFIELD,本地化有限但影响实质。 FAA 系数骨架(0.760/0.857/1.027/1.100)原样保留,“自主”仅体现在替换自变量、重标 K50/K85、把一个安全系数置 1。就这点改动,使容许作用次数相对 FAA 方程系统性宽松约 3.7 倍。而整个方程不在规范正文,只在帮助文档。 4. 关键参数缺公开依据。 包括本次用到的 31 GPa 面层模量取值依据、适用范围、敏感性。
第二类:工程软件质量(佐证)
5. 原型代码当成品发布。 计算引擎单一作者署名、13 个命名混乱并存的疲劳方程分支、未清理的调试语句、把本应按机型查表的折减系数硬编码成 0.75。 6. 两个应力库网格密度不一致(新建库 12 万行 / 加铺库 44 万行 / 帮助文档又称 42 万条),版本管理存疑。 7. 一个慢得离谱的查表过程——下一节专门说,因为它太典型了。
7. 那个读秒:毫秒级的查表,被写成了秒级的读盘
运行 CAAC-ARPD,界面上有一个"计算耗时",会读秒。一个查表的软件,凭什么读秒?现代计算机的处理速度查字典不该是瞬间的吗?

带著这份不理解,我去源码里找了,这个时间是怎么计算出来的。
先把一个猜测排除掉,因为这关系到公平:源码里没有 time.sleep,没有任何人为延迟。它不是故意装读秒来假装自己在做复杂计算。 这个清白,要还给它。
但真相比“装”更难看。实测(都可复现),以下是我操作的计时:
• 读一次新建库表(11.6 MB、12.4 万行):69 毫秒; • 一次完整的应力查询 solve_equations:73 毫秒——其中真正的插值数学,只有大约 4 毫秒;• 加铺库表 48 MB,读一次要 295 毫秒。
问题出在 interpolation.py 第 106 行:每查询一次,就把整张表从硬盘完整重读一遍、用 pandas 重新解析一遍,从不缓存。 一次三机型的厚度设计,要遍历多个机型 × 多个厚度迭代,于是同一张 12 MB 的表,被反复重读几十遍。几秒钟,就这么读没了。

所以这个读秒是真的,但那几秒不是花在算上,是花在反复搬运一本字典上。真正的计算只占 4 毫秒,除了这0.004秒剩下时间做的全是冗余的磁盘读取和一层层套嵌的表格降维。
对比一下就明白这有多讽刺:
FAARFIELD 也慢,慢到 README 自己都写明"计算量大、运行时间长"。但它那一秒一秒,是在解三维有限元——每一毫秒都在求方程。CAAC-ARPD 也慢,慢到界面要读秒。可你扒开看,它那几秒里真正的计算只有 4 毫秒,剩下的全花在把同一本 12 兆的字典,一遍又一遍从硬盘搬进内存、再一层层套嵌着翻。
一个在算,一个在搬字典。一个本该用毫秒返回的查表,被写成了和有限元一样漫长的读秒。殊途同"慢",但慢的尊严,天差地别。
这不是道德问题,而是工程实现问题。但它恰恰把整套软件的底层特征暴露得很清楚:核心路径并不是实时求解,而是反复查询预计算应力库;而即便作为查表程序,它在数据缓存、读取复用和流程组织上,也没有达到成熟工程软件应有的水平。
8. 学术讨论:一个国家设计标准的计算工具,应该长什么样?
把上面的分析结果放下,我们谈点更根本的。
第一,设计规范的本质,是“可独立复算”。 一本工程规范区别于一份研究成果的根本,在于任何合格的工程师,拿着规范就能独立复现它的结论;审查方能用同样的方法验证设计方。当核心算法从规范正文迁移进一个二进制软件,这个软件就事实上成了标准本身——却没有继承标准最重要的那个属性:公开可复算。 旧版 MH/T 5004-2010 把全套公式印在正文里,满足这个底线;新版把它挪进了一个公开渠道获取不到的“黑盒子”里。这是制度层面的错位,不是一句“软件更先进”能盖过去的。
第二,对照 FAA,是另一种做法。 FAA 把 FAARFIELD 的源码、README、配套规范 AC 150/5320-6G、疲劳方程全部免费公开、可下载——这三篇文章之所以能成立,正是因为我们能拿到 FAA 的源码做对照。这套中国软件的封闭做法,至少与 FAA 的公开实践形成了鲜明反差。
第三,一个十分明显但需要具体问题具体分析的反差。 民用航空当局对机载软件有非常严苛的适航审定——DO-178C 级别的验证、全程可追溯、独立评审,一行代码都要留证据。而它用来确定新建跑道厚度的地面设计软件,却是一份未缓存、单作者、十三个半成品分支并存的原型代码。机载与地面软件的监管体系本就不同,二者不必、也不应套用同一套审定标准;但这个反差至少提示一件事:关系基础设施安全的设计软件,同样应当有清晰的版本管理、验证记录、可追溯性和独立复核机制。
第四,也是最深的一点:结果接近,不能替代过程可信。 本文这次复算,两套软件都给出约 400 mm的结果。这很可能说明两者都对。但“很可能”三个字,正是问题所在——因为复算路径不公开,外部无法把“独立验证出来的一致”和“人为刻意标定出来的一致”区分开。科学诚实的底线,是主动公开那些可能推翻自己结论的证据。 一套封闭的设计软件,恰恰拿掉了行业对它做这种检验的机会和能力。
8. 结语:算得一样对,更没理由藏
三篇文章走到这里,结论其实很简单。
我们没有证明 CAAC-ARPD 算错了。相反,我们证明了它给出的厚度和公开透明的 FAARFIELD 几乎一样——同一条跑道,407 毫米对 398.8 毫米。
但也正因如此,那道墙才显得格外刺眼。
一套结果经得起对照的方法,没有任何技术理由把自己锁起来。公开会让它更好:稀疏网格的误差有人帮你验、疲劳方程的标定有人帮你审、几十遍重读表格的简单操作(低级实现)有人帮你修。封闭唯一保护的,不是技术,是“不被检验”本身。
所以我们的请求,和前两篇一样,只有那么几条,提给民航局和规范主编单位:
1. 把 MH/T 5004-2025 的应力计算方法、疲劳方程完整算式、以及 K50/K85、面层模量等关键标定参数,写进规范正文——像 2010 版那样,像 FAA 那样; 2. 把 CAAC-ARPD 软件,在民航局官网开放免费下载,让全行业平等获取、独立复算; 3. 公开应力数据库与插值误差的验证过程,让那个“<5%”经得起外部检验。
公式可复现、软件可获取、算法可公开——做到这三条,这三篇文章里的每一个问题都会自动消失。
我们这次把 FAA 和中国的软件放上了同一张桌子,证明了一件事:外部完全有能力对它做独立复算。 既然如此,那个朴素的问题就更难回避了——
如果这套方法算出的结果和公开工具一样,为什么还要把它锁在一个公开渠道获取不到的“黑盒子”里?
尾声:写给同样热爱着中国机场事业的你
写完这三篇,我想说点和数据无关的话。
我做这件事,不是为了证明谁不行。
恰恰相反,我亲手把美国的软件和中国的软件放上同一个电脑环境,尽量同样的参数,跑了一遍又一遍,最后得到的结论是:在我们测试的这些工况里,CAAC-ARPD 算得没有错,和世界上最权威的 FAARFIELD 相差不过几个百分点。
这是中国工程师的本事,应该被承认。
正因为它算得不差,我才更难过它被锁着,无法在公开渠道取得、推广、学习、研究。
一条跑道,是几万方混凝土,是无数人顶着烈日浇出来的,是国家的钱,也是同行的青春。我们这些做道面的人,半辈子趴在图纸和试验段上,为的就是那块板能稳稳托住飞机每一次起落。
把算它的方法、那个决定它厚薄的方程,公公正正地印在规范里,让每一个设计院的年轻人都能拿来复算、质疑、改进——这不是给谁难堪,这是让这门值得骄傲的手艺活下去、传下去、强起来。
美国人敢把 FAARFIELD 的每一行源码挂在官网上,不是因为他们不怕被挑错,而是因为他们知道:经得起挑错的东西,才配叫标准。
一个真正的强国民航,它的底气不在于把方法藏好,而在于敢把方法摊开,说一句:
来,你算算看。
我相信中国民航有这个底气。
我也相信写出 CAAC-ARPD 的那些同行,有这个底气。
我们已经能自己建模、自己标定、自己写出和世界一流相差无几的结果。现在只差最后那一步,也是最有尊严的一步:
把黑盒子打开。
我不为与任何机构、单位或个人斗气或者过不去而写。
我为那条跑道而写,为那块板下面看不见的每一分血汗和经费投入而写,也为下一个趴在试验段上的年轻工程师而写。
但愿他翻开规范,能看见完整的公式,而不是一句“详见某个公开渠道找不到的软件”。
公开,从来不是软弱。
在工程这一行,敢被验证、经得质疑,才是最硬的底气。
愿中国民航的每一条跑道,都站在看得见的计算之上。
附录 A:本算例两份原始报告关键数据
CAAC-ARPD 设计报告(执行 MH/T 5004-2025,30 年):面层 407 mm / 31000 MPa / 弯拉强度 5.0 MPa;上基层 200 mm / 2000 MPa;下基层 200 mm / 2000 MPa;垫层山皮石 300 mm / 200 MPa;道基 60 MN/m³;CDFmax=0.93。


FAARFIELD 2.1.2 Structure Report(New Rigid,Thickness Design,30 年):P-501 PCC Surface 15.7 in / 4,000,000 psi / R=725 psi;两层 User Defined 7.9 in / 290,000 psi;垫层 11.8 in / 29,000 psi;Subgrade k=221 pci(E=20,634 psi)。控制机型 B777-300ER,CDF Contribution=1.00;B737-800 与 A320-200 CDF=0.00(不控制)。


附录 B:单位换算
附录 C:本系列证据文件清单(均可独立复核)
• FAA 官网免费下载的 FAARFIELD 2.1.2 软件、README、源码 FEMClassLib/、LEAFClassLib/;以及作者基于该软件生成的本算例 Structure Report;• AC 150/5320-6G 道面设计规范(FAA 官网公开); • CAAC-ARPD utils/xj/main.py、utils/xj/interpolation.py、utils/xj/stress_data.csv(第 37,314 行)、本算例设计报告;• CAAC-ARPD V1.0 帮助文档 C 章(应力模型与插值方法)、D 章(疲劳方程,含式 D-6~D-9 及 FAA 文献引用); • MH/T 5004-2025 规范第 5.3.4 条及条文说明(中国民航局官网公示文本); • 复现脚本 cmp.py(见本系列第二篇附录)。
夜雨聆风