物理修复(400 失败点归因,见 docs/failed400_nan_pseudo_convergence_2026_08_17.md): - runner: 阶段 converged 后复查 fort.7,含 NaN/Inf 即否决(fort.9 全零伪收敛, 曾致 261 点误跳过 nl_direct 回退);否决阶段不产出种子,阻断污染传播 - runner: nl_tight 回退——仅能量边际失败时以 CHMAX 收紧 10× 从自身模型续迭代, 残差降幅 ~10×;execute_tlusty_stage 抽取供主链与回退共用 - conv_check: fort.14 为 Eddington 通量 Hλ,积分需乘 4π 再比 σTeff⁴ (旧版 ratio 稳定 0.0796=1/4π,全点系统性假阳性)+ 回归测试 - nst_writer: 单行超 80 字符被 TLUSTY 静默截断,IFALI/JALI/TRAD 等从未生效; 按 75 字符自动换行 - seed_finder: Teff 容忍度改含边界 <=,相邻 5000K 档恢复互为种子 + 回归测试 谱线表与网格: - 默认线表 gfVIS99 → gfATO(全波段 18-23000Å),TaskSpec.linelist 支持工作流 级覆盖,节点按需下载(进程互斥锁防并发重复下载 238MB) - sdB_cno Teff 加密至 5000K 步长,432 → 9216 点;tlusty/synspec 静态二进制更新 统计与部署: - grid 汇总改按 tlusty_status/synspec_status 分项计数,新增 tlusty_failed/ synspec_failed/synspec_pending,前端详情页双视图适配 - deploy/fetch_results 支持跳板机 ProxyJump 与 SSH 主连接复用,fetch 新增 --force; - Docker 构建支持 CARGO_MIRROR/USE_MIRRORS 国内镜像参数;移除 tools/ 拷贝 - 新增 tlusty-synspec-test skill 与 6 篇根因分析/验证文档
20 KiB
TLUSTY 本机直接运行实验记录(根因验证与修复测试)
日期:2026-08-11
方法:绕过 DCTS 框架,直接运行 TLUSTY 二进制(dcts/assets/tlusty_static),本地 16 核并行测试不同策略
测试对象:生产 DB(/home/fmq/下载/dcts.db)标记 tlusty_status=failed 的网格点
源码参考:/home/fmq/program/tlusty/tl208-s54/tlusty/tlusty208.f + dcts workflows/sdB_cno.yaml
测试规范:见 docs/testing_workflow_2026_08_11.md;测试产物已迁移至 test/20260811_tlusty_divergence/
⚠️ 2026-08-12 更正
本文实验使用的 itek:0 / iacc:0 参数存在致命语义误解(后续源码核对确认):
ITEK=0→tlusty208.f:1937if(nitzer.gt.itek) nitzer=itek→ nitzer=0 冻结 populations,不是"禁用 Kantorovich"——所有itek0*变体都在 populations 冻结 下运行,其结果不能解释为 Kantorovich 的因果。IACC=0→tlusty208.f:1928IF(IACC.LE.4) IACC=7→ 被 clamp 回 7,空操作—— 所有iacc0*变体实际仍是默认 Ng 加速。
正确禁用方式是设 ITEK/IACC > NITER。2026-08-12 用正确方式复测 6 个点 × 4 配置:
0 次收敛(发散幅度降 1e12~1e14× 但达不到收敛)。详见
docs/cold_start_fix_2026_08_12.md。本文保留为历史实验记录。
一、背景与目的
生产 DB 有 1105 个网格点 TLUSTY 不收敛(cold_run 与 seed_step 均失败,见 tlusty_divergence_root_cause_2026_08_11.md)。为验证根因假设并测试修复策略,本实验绕过框架直接运行二进制,精确复现生产输入与失败。
本实验回答的三个问题:
- 生产失败能否在本地精确复现?(可信度锚点)
- 失败的直接机制是什么?(KANT/ACCEL2 加速)
- 何种策略能修复?(ITEK=0 + IACC=0 + DPSILG 收紧的假设性验证)
二、运行方法(与 DCTS 框架等价)
TLUSTY 二进制通过 stdin 读取 .5 输入文件(runner.rs:406-416 同款调用方式):
tlusty_static < {stage}.5 > fort.6 2> fort.14
2.1 工作目录布局
| 文件/目录 | 用途 |
|---|---|
data/ → 软链到 assets/data/ |
原子数据(c1.dat/h1.dat 等 133 文件) |
nst |
非标准参数(由 .5 第3行 'nst' 指定文件名),每阶段复制 {stage}.nst |
fort.8 |
热启动种子(seed_nc 阶段);冷启动 lte 阶段无(ltgray=T 删除) |
fort.19 → 软链到 assets/data/gfATO.dat |
SYNSPEC 线表 |
| 产物 | fort.6(log)、fort.7(模型)、fort.9(迭代收敛记录)、fort.14(stderr) |
2.2 冷启动链(与 YAML tlusty_chain 一致)
lte(NITER=0, LTE=T, LTGRAY=T, ilvlin=0, 无 fort.8) ← 灰 LTE 起始
→ nc(NITER=10, LTE=F, LTGRAY=F, ilvlin=0) ← 策略变体作用阶段
→ nl(NITER=100, LTE=F, LTGRAY=F, ilvlin=100) ← 必须收敛
阶段间通过 fort.7 → fort.8 传递种子。
2.3 种子步进(与 YAML seed_chain 一致)
seed_nc(NITER=20, LTE=F, LTGRAY=F, ilvlin=0, fort.8=生产收敛邻居种子)
2.4 可信度锚点
本机 seedprod(生产配置 + 生产真实种子)seed_nc 轨迹:
[7.0, 115, 272, 2020, 1.49e8, 8.26e13, ...]
生产 DB 记录的 conv.json 轨迹:
[7.0, 102, 288, 945, 1.12e8, 4.85e13, ...]
逐值吻合(同一数量级) → 本机测试精确复现生产失败,测试方法可信。
三、根因(源码 + 实证双重确认)
雪崩由 TLUSTY 两个加速机制绕过 DPSILT 钳制引起,二者独立:
3.1 机制1:KANT / Kantorovich 线性化(tlusty208.f:3841, 14493-14494)
- 默认
ITEK=4→KANT(iter)=1for iter≥5(tlusty208.f:848-854) - KANT=1 时冻结矩阵:
CALL RHSGEN只算右端项,READ(93)/READ(92)复用上次迭代的 A/B 矩阵(tlusty208.f:14500-14540) - 在收敛困难区,冻结矩阵与实际解严重偏离 → Newton 步方向错误 → 雪崩
- 证据:基线 nc 雪崩始于 iter5(第一个 KANT 迭代)
3.2 机制2:ACCEL2 / Ng 加速(tlusty208.f:29693-29800)
- 由
IACC控制(默认 7),与 ITEK 独立;iter≥7 触发 - 直接外推 PSY0 全体变量:
PSY0=(1-A-B)*PSY0 + A*PSY1 + B*PSY2(tlusty208.f:29763-29773) - 绕过 SOLVE 内 DPSILG/DPSILT 钳制循环(钳制只约束 CHAN 局部变量,ACCEL2 直接改 PSY0 全局)
- 证据:nl 阶段 iter7/11/15 的 ACCEL2 触发 → 温度外推爆炸 → STOP
3.3 两机制独立性(实证)
itek0(只禁 KANT):nc 雪崩推迟但 nl 仍 STOP(ACCEL2 未禁)iacc0(只禁 ACCEL2):nl 仍 STOP(KANT 未禁)- 必须双禁(ITEK=0 + IACC=0) 才能抑制两个加速通道
3.4 雪崩主导变量
fort.9 显示 nl 阶段 |T| 修正从 iter1 的 4.26e5 爆炸到 iter19 的 1.2e16,温度是雪崩主导变量(RAD 辐射场修正一直 ≤360,ne 基本稳定)。DPSILT=1.25 钳制(±25%)被 ACCEL2 外推绕过。
四、测试矩阵与结果
4.1 策略变体定义(nc/nl 阶段 nst 差异)
| 变体 | ITEK | IACC | DPSILG | ORELAX(nc) | 说明 |
|---|---|---|---|---|---|
| baseline | 4(默认) | 7(默认) | 10(默认) | — | 生产配置 |
| trueprod | 4(默认) | 7(默认) | 10(默认) | — | 真生产(nl 也 ITEK=4,见瑕疵说明) |
| itek0 | 0 | 7 | 10 | — | 禁 Kantorovich |
| dpsilg3 | 4 | 7 | 3.0 | — | 收紧限幅 |
| itek0_dpsilg3 | 0 | 7 | 3.0 | — | 组合 |
| itek0_dpsilg2_orelax03 | 0 | 7 | 2.0 | 0.3 | 组合+松弛 |
| iacc0 | 4 | 0 | 10 | — | 禁 Ng 加速 |
| itek0_iacc0 | 0 | 0 | 10 | — | 双禁 |
| itek0_iacc0_dpsilg15 | 0 | 0 | 1.5 | — | 双禁+收紧 |
| seedprod | 4 | 7 | 10 | — | seed_nc 生产 |
| seed_doubleoff | 0 | 0 | 10 | — | seed_nc 双禁 |
| seed_doubleoff_dpsilg15 | 0 | 0 | 1.5 | — | seed_nc 双禁+收紧 |
⚠️ 测试瑕疵说明:初版 prepare.py 给所有变体(含 baseline)的 nl.nst 无条件加了 ITEK=0。故表内 baseline 的 nl 阶段实际是 ITEK=0(非生产默认 4)。由于失败发生在 nc 阶段(nc 的 ITEK 是生产默认),nc 阶段对比仍然公平;为消除 nl 混淆,补跑了
trueprod(nl 也为默认 ITEK=4 的真生产配置)。
4.2 冷启动链结果(点 t60000_g5.0_he-2_c-4_n-4_o-4)
nc 阶段轨迹(max_relc,雪崩与否关键看前 5 步):
| 变体 | iter1 | iter2 | iter3 | iter4 | iter5 | nc 结局 |
|---|---|---|---|---|---|---|
| baseline | 9.7 | 46 | 259 | 1950 | 4.85e6 | 雪崩→2.3e15 |
| dpsilg3 | 9.7 | 64 | 31 | 48 | 3.8e3 | 高位雪崩→1.8e8 |
| iacc0 | 9.7 | 46 | 260 | 2000 | 4.8e6 | 雪崩(同 baseline) |
| itek0 | 1.4 | 9.1 | 38 | 460 | 77 | 高位徘徊 |
| itek0_dpsilg3 | 1.4 | 2.9 | 3.7 | 33 | 3.8 | 改善 |
| itek0_iacc0 | 1.4 | 9.1 | 38 | 460 | 77 | 高位徘徊 |
| itek0_iacc0_dpsilg15 | 1.4 | 1.4 | 1.9 | 14 | 5.3 | 低位稳定 |
| itek0_dpsilg2_orelax03 | 1.4 | 1.9 | 2.1 | 35 | 12 | 低位稳定 |
nl 阶段结局:
| 变体 | nl 结局 | NaN行(nl.7) | 末 max_relc | 温度结构(DCTS判据) | 判定 |
|---|---|---|---|---|---|
| baseline | STOP iter19 | 0 | 1.23e16 | ✅ 物理(0.86×Teff) | ❌ |
| dpsilg3 | STOP iter14 | 0 | 7.59e16 | ✅ 物理(0.80×Teff) | ❌ |
| iacc0 | STOP iter10 | 0 | 1.72e17 | ✅ 物理(0.78×Teff) | ❌ |
| itek0 | STOP iter18 | 0 | 2.95e16 | ❌ 不物理(5.2×Teff) | ❌ |
| itek0_dpsilg3 | STOP iter26 | 0 | 5.96e17 | ❌ 不物理(5.2×Teff) | ❌ |
| itek0_iacc0 | STOP iter22 | 0 | 1.16e17 | ❌ 不物理(10.5×Teff) | ❌ |
| itek0_dpsilg2_orelax03 | 无 STOP | 2707 | 0.0(伪) | ❌ NaN | ❌ 伪收敛 |
| itek0_iacc0_dpsilg15 | 无 STOP | 2031 | 0.0(伪) | ❌ NaN | ❌ 伪收敛 |
冷启动结论:8 个变体在该极端点(60k/g5.0, CNO 全-4)全部失败。即使双禁+收紧 DPSILG,nl 阶段要么 STOP 要么产生 NaN。冷启动从 LTE 灰化初值建立 NLTE 电离平衡在此点本质困难,与加速机制无关。
4.3 种子步进结果(seed_nc,用生产真实种子 t60000_g5.0_he-2_c-3_n-4_o-4.7)
| 变体 | 轨迹(前6) | 结局 | NaN | 末 max_relc | 温度结构(DCTS判据) |
|---|---|---|---|---|---|
| seedprod(生产) | 7.0,115,272,2020,1.49e8,8.26e13 | STOP iter14 | 0 | 1.71e17 | ✅ 物理(0.49×Teff) |
| seed_doubleoff | 1.3,17,9,92,400,142 | 无 STOP | 0 | 4.71e06 | ✅ 物理(1.58×Teff) |
| seed_doubleoff_dpsilg15 | 1.3,16,7,1.7,2.9,6.3 | 无 STOP | 0 | 4.86e01 | ❌ 不物理(7.89×Teff) |
种子步进结论:
- seedprod 精确复现生产失败(可信度锚点)
- 双禁(ITEK=0+IACC=0)把 seed_nc 从雪崩(1e8-1e17)抑制到 1e2-1e3 量级
- 再加 DPSILG=1.5 进一步压到几十量级(末值 48.6),20 步全程无 STOP 无 NaN
- ⚠️ 温度物理性(修正版,见 §5.3 判据更新):seed_doubleoff(1.58×Teff)其实物理;seed_doubleoff_dpsilg15(7.89×Teff)不物理(超 DCTS 3×Teff 上限)。但两者迭代均未收敛(末值 4.7e6 / 48.6,均 >> 0.001)。早期文档用"3-6 万 K 表层"经验标准误判 seed_doubleoff 为不物理,已按 DCTS
check_temperature_structure判据(表层 < 3×Teff)修正
五、多点评测(5 个代表失败点 × baseline + 修复组合)
为验证根因与修复的普适性,对 5 个额外失败点补跑了冷启动链(每个点 baseline + itek0_iacc0_dpsilg15 两个变体)。加上 t60000_g5.0 的单点深测,共 6 点、9 种变体、19 次完整冷启动链(含 trueprod 对照)+ 3 次 seed_nc。
5.1 各点 nc 阶段早期轨迹(iter1-5,雪崩与否看这里)
| 点 | baseline iter1-5 | 修复组合 iter1-5 | nc 对比 |
|---|---|---|---|
| t60000_g5.0 | 9.7→46→259→1950→4.85e6 | 1.4→1.4→1.9→14→5.3 | ✅ 修复显著抑制(雪崩→低位) |
| t50000_g5.0 | 3.8→260→56→0.4 | 0.9→14→1.1→1.1→9.0 | ✅ 修复显著抑制 |
| t50000_g5.5 | 1810→76→243→0.2 | 258→11→552→29→60 | ⚠️ 修复反而变差 |
| t55000_g5.0 | 5.8→42→117→646→5.99e6 | 1.1→2.1→0.6→1.8→1.0 | ✅ 修复抑制(雪崩→低位) |
| t55000_g5.5 | 9.0→58→85→0.09 | 1.5→1.2→1.2→0.45→27 | ⚠️ baseline 也能收敛 |
| t60000_g5.5 | 5.2→119→77→151→0.14 | 0.32→1.6→5.3→23→19 | ⚠️ baseline 也能收敛 |
重要修正:修复组合并非在全部点抑制雪崩:
- t60000_g5.0、t55000_g5.0 的 baseline nc 雪崩(iter5 到 4.85e6 / 5.99e6),修复组合压到低位 → ✅ 修复有效
- t50000_g5.5、t55000_g5.5、t60000_g5.5 的 baseline nc 本来就能收敛(iter4-5 回落到 0.1-0.2),修复组合反而把轨迹扰乱(如 t50000_g5.5 修复 iter3=552)→ ⚠️ 修复有害或无益
- 修复组合的价值集中在"baseline 会雪崩"的点;对"baseline 能收敛"的点反而画蛇添足
- 注意:nc 阶段能回落 ≠ 整条链收敛——这些点的 baseline nl 阶段仍失败(见 §5.2,t50000_g5.5 末 3.39e11、t55000_g5.5 STOP、t60000_g5.5 NaN),说明收敛瓶颈在 nl 阶段而非 nc
5.2 各点 nl 阶段结局(完整链)
| 点 | baseline nl 结局 | 修复组合 nl 结局 | 修复效果 |
|---|---|---|---|
| t60000_g5.0 | STOP iter19 (1.23e16) | 31步,无STOP,NaN=2031 | ⚠️ 抑制雪崩但 NaN |
| t50000_g5.0 | 11步,无STOP,NaN=3659 | 19步,无STOP,NaN=3375 | ⚠️ 无实质改善 |
| t50000_g5.5 | 10步,末3.39e11,NaN=0 | 19步,无STOP,NaN=3595 | ⚠️ 变差(NaN) |
| t55000_g5.0 | STOP iter17 (1.05e16) | 58步,无STOP,NaN=0,末1.26 | ⚠️ 大幅改善但不收敛 |
| t55000_g5.5 | STOP iter30 (1.49e17) | 100步,无STOP,NaN=0,末1.38e8 | ⚠️ 改善但不收敛 |
| t60000_g5.5 | 19步,无STOP,NaN=3789 | 26步,无STOP,NaN=0,末1.72 | ⚠️ 改善但不收敛 |
5.3 温度结构物理性检查(判据已修正,关键!)
🔄 判据修正说明(2026-08-11 补):初版用经验标准"60k 恒星表层应有 3-6 万 K"判断物理性,该标准有误。经文献调研(Eddington 灰大气关系 T(τ=0)≈0.84×Teff)与 DCTS 权威
check_temperature_structure(conv_check.rs:463)判据(表层 < 3×Teff、各深度 ∈ [10, 1e8] K)核对,正确标准是表层 < 3×Teff。60k 恒星表层应约 0.84×60k ≈ 5 万 K,3-6 万 K 的经验值偏低。本节按 DCTS 判据重新判定。
对每个变体的 nl.7 用 DCTS check_temperature_structure 判据(表层 < 3×Teff、无 NaN、各深度 ∈ [10, 1e8] K):
| 点 | baseline nl.7 | 修复组合 nl.7 |
|---|---|---|
| t60000_g5.0 | ✅ 物理(0.86×Teff) | ❌ NaN |
| t50000_g5.0 | ❌ NaN | ❌ NaN |
| t50000_g5.5 | ✅ 物理(0.83×Teff) | ❌ NaN |
| t55000_g5.0 | STOP(无 nl.7) | ❌ 内部 6.2e9 K |
| t55000_g5.5 | STOP(无 nl.7) | ❌ 内部 1.8e10 K |
| t60000_g5.5 | ❌ NaN | ✅ 物理(0.85×Teff, max=1.4e7) |
修正后的发现(较初版更准确):
- 修复组合并非"全部不物理":t60000_g5.5 修复组合温度结构物理(表层 0.85×Teff、max=1.4e7 < 1e8),只是迭代未收敛(末值 1.72)
- 真正不物理的:t55000_g5.0(内部 6.2e9 K)、t55000_g5.5(内部 1.8e10 K)修复组合,及所有 NaN 模型
- baseline 在 STOP 前温度物理(t60000_g5.0、t50000_g5.5)
- 两类问题需要区分:
- 温度物理但未收敛(如 t60000_g5.5 修复组合:表层合理、max 合理、但 max_relc=1.7)→ 有希望,增大迭代或收紧参数可能收敛
- 温度不物理(如 t55000 修复组合:内部 1e9+ K)→ 真正的失败,需换策略
六、总结论
- 生产失败直接原因(已实证):KANT(iter≥5) + ACCEL2(iter≥7) 两个加速机制绕过 DPSILG/DPSILT 钳制,在收敛困难区放大 Newton 修正 → 雪崩 STOP(1e16 保护)或 NaN。本机测试精确复现生产轨迹。
- 修复组合(ITEK=0+IACC=0+DPSILG=1.5)对"会雪崩的点"有效:t60000_g5.0、t55000_g5.0 的 baseline nc 雪崩(iter5 到 4.85e6 / 5.99e6),修复组合压到低位;但对"本就能收敛的点"反而有害(t50000_g5.5、t55000_g5.5、t60000_g5.5 的 baseline nc 在 iter4-5 本就回落到 0.1-0.2,修复组合却把轨迹扰乱,如 t50000_g5.5 修复 iter3=552)。修复价值有条件性,需按点评估。
- 温度物理性(判据修正后):修复组合并非全部不物理——t60000_g5.5 修复组合温度结构物理(表层 0.85×Teff),只是迭代未收敛;真正不物理的是 t55000 两个点(内部 1e9+ K)和所有 NaN 模型。所有变体迭代均未收敛到 max_relc<0.001(末值最低 1.26 / 1.72)。
- 根因不在加速机制本身:KANT/ACCEL2 只是雪崩放大器。根本问题是这些极端点(高 Teff + 低 logg + 极贫 CNO)的 NLTE 迭代难以在有限迭代内收敛——但温度结构物理的点(如 t60000_g5.5)表明物理解存在且可达,只是需要更多迭代或更优参数。
- 文献对照:Németh et al. (2013) 用 TLUSTY 204 计算了覆盖 60k/低logg 的 sdB/sdO 网格(11,396 点,95.5% 收敛,收敛标准=结构相对变化 0.1% 即 max_relc<0.001)。本参数区在文献中是收敛的——支持"配置/迭代问题而非物理不可能"的判断。
- 结论修正:正确表述是:双禁+收紧 DPSILG 能抑制发散并给出温度物理的候选模型(部分点),但多数极端点在 NITER 内未达 0.001 收敛。下一步应对温度物理的点(t60000_g5.5、seed_doubleoff)增大 NITER 验证是否最终收敛。
七、生产落地建议(YAML 层面,零代码,但需配合物理诊断)
已验证 ChainStep 有 iacc 字段(config.rs:1148)、nst_writer 写 IACC=(nst_writer.rs:78),YAML 可配置:
seed_chain:
- {label: seed_nc, lte: F, ltgray: F, ilvlin: 0, require_converged: false,
niter: 50, chmax: 0.001, itek: 0, iacc: 0, orelax: 0.3}
- {label: seed_nl, lte: F, ltgray: F, ilvlin: 100, require_converged: true,
niter: 100, chmax: 0.001, itek: 0, iacc: 0, orelax: 0.5}
nst_extra_keys:
- [DPSILG, "1.5"]
但基于 §5.3 的发现,必须同时:
- 保留 DCTS 的温度结构校验(
temp_check:表层 T < 3×Teff、无 NaN)——它正是拦截"非物理伪收敛"的关卡 - 优先走 seed_step:冷启动在极端点本质困难(§4.2 冷启动 8 变体全失败),生产数据也显示 60k/g5.0 收敛靠 seed_step
- 对仍失败的极端点:接受其为物理上难收敛区,或探索更深层修复(ND 加密 / TFLOOR 调整 / 频率网格 / 原子数据)
下一步验证计划:
多点评测确认普适性(已完成:6 点 9 种变体 19 次完整链,见 §五)校验温度结构物理性(已完成并修正判据:见 §5.3;温度物理点有 t60000_g5.5 修复组合、seed_doubleoff)- 对温度物理但未收敛的点(t60000_g5.5 修复组合、seed_doubleoff)增大 NITER(如 200)验证是否最终收敛到 0.001
- 对真正不物理的点(t55000 两个点)换策略:seed_step + 双禁 + 温度校验
- 探索 ND=70 / TFLOOR 调整对极端点的影响
- 通过后作为难收敛区统一配置
八、测试产物与规范迁移
本实验的完整数据与运行产物已按 docs/testing_workflow_2026_08_11.md 规范迁移至:
test/20260811_tlusty_divergence/convergence/
├── t60000_g5.0_he-2_cold/
│ ├── baseline/ # inputs+outputs+scripts+README
│ └── itek0_iacc0_dpsilg15/
├── t60000_g5.0_he-2_seed/
│ └── doubleoff_dpsilg15/
└── t55000_g5.0_he-4_cold/
└── itek0_iacc0_dpsilg15/
原始实验数据(/tmp/cold_test,供追溯)
- 运行脚本:
/tmp/cold_test/run_chain.sh(冷启动链)、/tmp/cold_test/run_seed.sh(seed_nc)、/tmp/cold_test/prepare.py(输入生成) - 数据汇总:
/tmp/cold_test/t60000_summary.json、/tmp/cold_test/seed_summary.json、/tmp/cold_test/all_points_summary.json - 运行目录:
/tmp/cold_test/runs/{点}__{变体}/(6 点)、/tmp/cold_test/seedruns/{变体}/(3 seed 变体) - 运行日志:
/tmp/cold_test/fill_*.log(补跑)、/tmp/cold_test/seed_*.log(seed_nc)
九、测试清单(全部 24 次运行,无遗漏)
冷启动链(6 点,9 种变体,19 次完整链)
| # | 点 | 变体 | 结果 |
|---|---|---|---|
| 1 | t60000_g5.0_he-2_c-4_n-4_o-4 | baseline | STOP iter19 (1.23e16) |
| 2 | 同上 | trueprod(真生产nl ITEK=4) | NaN=4111 |
| 3 | 同上 | itek0 | STOP iter18 (2.95e16) |
| 4 | 同上 | dpsilg3 | STOP iter14 (7.59e16) |
| 5 | 同上 | itek0_dpsilg3 | STOP iter26 (5.96e17) |
| 6 | 同上 | itek0_dpsilg2_orelax03 | NaN=2707 |
| 7 | 同上 | iacc0 | STOP iter10 (1.72e17) |
| 8 | 同上 | itek0_iacc0 | STOP iter22 (1.16e17) |
| 9 | 同上 | itek0_iacc0_dpsilg15 | NaN=2031 |
| 10 | t50000_g5.0_he-4_c-4_n-4_o-4 | baseline | NaN=3659 |
| 11 | 同上 | itek0_iacc0_dpsilg15 | NaN=3375 |
| 12 | t50000_g5.5_he-4_c-2_n-4_o-4 | baseline | 10步 末3.39e11 NaN=0 |
| 13 | 同上 | itek0_iacc0_dpsilg15 | NaN=3595 |
| 14 | t55000_g5.0_he-4_c-4_n-4_o-4 | baseline | STOP iter17 (1.05e16) |
| 15 | 同上 | itek0_iacc0_dpsilg15 | 58步 末1.26 温度❌(内部6.2e9K) |
| 16 | t55000_g5.5_he-4_c-4_n-4_o-2 | baseline | STOP iter30 (1.49e17) |
| 17 | 同上 | itek0_iacc0_dpsilg15 | 100步 末1.38e8 温度❌(内部1.8e10K) |
| 18 | t60000_g5.5_he-4_c-4_n-4_o-4 | baseline | NaN=3789 |
| 19 | 同上 | itek0_iacc0_dpsilg15 | 26步 末1.72 温度✅(0.85×Teff)未收敛 |
seed_nc(1 点,3 变体,用生产真实种子)
| # | 点 | 变体 | 结果 |
|---|---|---|---|
| 20 | t60000_g5.0_he-2_c-4_n-4_o-4 | seedprod(生产) | STOP iter14 (1.71e17) ← 精确复现生产 |
| 21 | 同上 | seed_doubleoff | 20步 末4.71e6 温度✅(1.58×Teff)未收敛 |
| 22 | 同上 | seed_doubleoff_dpsilg15 | 20步 末48.6 温度❌(7.89×Teff) |
冒烟测试(方法验证)
| # | 内容 | 结果 |
|---|---|---|
| 23 | lte/nc/nl 三阶段调用方式 | 验证通过,fort.7/fort.9 正常生成 |
| 24 | 生产轨迹复现 | seedprod 轨迹与生产 DB 一致 |