科学计算正确性: - 修复 Fortran 无-E 科学记数法(指数≥100 时 E 被挤掉,如 -1.35+118)导致 发散行被静默跳过、误判收敛的 bug;扩展大气无效检测覆盖 Inf 与 *** 溢出标记 - 种子匹配改为 CNO 有向距离(富金属方向重罚 4×、贫金属方向轻罚 1×), 基于 1191 个真实种子配对回测标定,回测净改善 314 个点 - GridAxisValue 反序列化拒绝非法文本(不再静默 NaN);chmax≤0 显式报错 - ions 行宽列宽对齐真实 fort.5 格式 调度与队列竞态: - 原子选点(IMMEDIATE 事务 SELECT+UPDATE)消除并发调度重复派发 (#5) - 调度互斥锁 + 冷启动优先策略(SeedStep 仅作失败后救援,不再正常路径热启动) - 毒消息 dead_letter 标记防出队死循环;clear_queue 保留 claimed 行 (#6) - 孤儿 running 点回收兜底;stale_sec 默认 7800→21600s(3 倍超时缓冲) 节点生命周期: - SIGTERM+SIGINT 双信号监听(修复 Docker stop 发 SIGTERM 不触发优雅退出) - SlotGuard RAII 防活动 slot 泄漏;子进程超时增加二级 30s wait 防 Fortran hang - SeedStep 种子下载 fail-fast + 沙盒私有副本解耦 LRU 清理竞争 - reqwest Client 增加连接/请求超时;启动清理残留 task_* 沙盒 安全加固: - 节点注册 registration_secret 二次凭据 (H8),恒定时间比对防时序旁路 - token 缓存 generation 机制消除 reissue 后旧 token TOCTOU 复活窗口 - 新增 /api/auth/logout 服务端 session 即时撤销;fail-closed 鉴权启动策略 - 前端 token 迁移 sessionStorage;YAML 高亮改 DOM API 消除 XSS 注入面 - 备份文件权限收紧 0600;点表动态值全面 escapeHtml 前端 Dashboard: - 收敛性分析从热力图重构为 Parallel Sets 平行集合图(6 维+状态轴,手写 SVG 零依赖) - 进度曲线横轴改为真实时间(服务端 now 锚定,停滞期诚实留白);轮询指数退避 - 移除 imported 收敛途径分类,导入点按实际途径 cold_run/seed_step 归类 - 初始化时 /api/auth/check 校验 token;401 toast 提示替代静默 reload 服务端恢复与工具链: - 启动恢复 initializing 态工作流;默认工作流 INSERT-only 不覆盖 API 编辑 - body limit 分层(10MB 不再截断 256MB report);multipart 显式错误处理 - 嵌入二进制原子写(tmp+rename)防半写损坏 - import_results 判定收敛途径透传 success_method;conv.json 格式对齐本项目 - push_import_results.sh 退出码修复 + .bat UTF-8 BOM + scp 上传 - Docker USE_MIRRORS 默认关闭;移除无用 assets 挂载;删除 hosts.ini 入库
75 lines
3.3 KiB
YAML
75 lines
3.3 KiB
YAML
# 6 维 CNO NLTE 热亚矮星网格的配置文件。
|
||
# 所有丰度均为 log10(nX/nH);.5 文件中的 abn 字段设为 10**logX。
|
||
#
|
||
# 网格各维范围:
|
||
# Teff : 20000 - 80000 K
|
||
# logg : 5.0 - 6.5
|
||
# logHe: -4 - 2 (He/H 数密度比:1e-4 .. 100)
|
||
# logC : -4 - -1 (C/H:1e-4 .. 0.1;太阳 C/H≈-3.6,落在区间内)
|
||
# logN : -4 - -1 (N/H:太阳 N/H≈-4.2)
|
||
# logO : -4 - -1 (O/H:太阳 O/H≈-3.3)
|
||
# CNO 范围已修正为物理上的 sdB 范围,不再是超太阳(旧版 -2..1 会发散)
|
||
|
||
# ---- 网格轴:显式列出各维采样点 ----
|
||
# grid:
|
||
# teff: [20000, 60000]
|
||
# logg: [5.0]
|
||
# loghe: [-2]
|
||
# logc: [-4]
|
||
# logn: [-4]
|
||
# logo: [-4]
|
||
grid:
|
||
teff: [20000, 30000, 40000, 50000, 60000]
|
||
logg: [5.0, 5.5, 6.0, 6.5]
|
||
loghe: [-4, -2, 0, 2]
|
||
logc: [-4, -3, -2, -1]
|
||
logn: [-4, -3, -2, -1]
|
||
logo: [-4, -3, -2, -1]
|
||
# 共 4*2*2*3*3*3 = 432 个点
|
||
|
||
# ---- 收敛链 ----
|
||
# 已验证的三步配方 (tests/sdB_spectra/GUIDE.md 实测, Teff=35000 logg=5.5):
|
||
# LTE grey (T T, NITER=0) -> NLTE 连续谱 (nc, ilvlin=0) -> NLTE 谱线 (nl, ilvlin=100)
|
||
# nc 步是关键:在不考虑谱线扰动下收敛 NLTE 电离平衡,给 nl 一个稳定种子。
|
||
# 跳过 nc(grey -> 完整 NLTE)会发散。
|
||
#
|
||
# 重要:不要在 nst 里设 CHMAX/ITEK,用 tlusty 默认值(CHMAX=0.001, ITEK=4)。
|
||
# 设 CHMAX=0.1 会让 nc 提前停止,给 nl 一个坏种子导致发散。
|
||
#
|
||
# nc 的 NITER=10 是实测最优(tests/sdB_spectra/GUIDE.md NITER 扫描结论):
|
||
# - NITER=10 总耗时 12.4min(35000K CNO 完整模型)
|
||
# - 光谱精度 vs NITER=50 差异仅 6e-6(完全等价)
|
||
# - NITER=50 浪费 2.2× 时间,NITER=200/500 更浪费且无收益
|
||
# 物理上 nc(纯连续谱)缺少谱线约束,外层温度永不真正收敛——追求高 NITER
|
||
# 没意义。nl(含谱线)会自修正到正确解(流量差异 <3e-12)。
|
||
chain:
|
||
- {label: lte, lte: T, ltgray: T, ilvlin: 0, require_converged: false, niter: 0}
|
||
- {label: nc, lte: F, ltgray: F, ilvlin: 0, require_converged: false, niter: 10}
|
||
- {label: nl, lte: F, ltgray: F, ilvlin: 100, require_converged: true, niter: 100}
|
||
itek_fallback: [] # 留空:ITEK 默认值最稳;非空会重试(实测无效)
|
||
niter: 100 # 每个 tlusty 运行的默认最大迭代数 (nst NITER);nc 阶段在 chain 内覆盖为 10
|
||
|
||
# ---- 种子步进回退(NEW)----
|
||
# 冷启动失败时,自动用已收敛的邻居模型作种子,用 LTGRAY=F 热启动重试。
|
||
# 这是高温 He-poor / 富金属区收敛的关键(见 EXPERIENCE.md §5Y)。
|
||
# 失败的冷启动结果会备份到 <model>.coldfail/ 目录。
|
||
seed_step_fallback: true
|
||
|
||
# ---- 执行参数 ----
|
||
nworkers: 16 # 并行 worker 数(每次 tlusty 运行是单线程的;
|
||
# 想用更多核心就调大;每个 worker 需要独立工作目录)
|
||
timeout_sec: 7200 # 单模型墙钟时间上限(120分钟)
|
||
resume: true # 跳过已完成的模型(conv.json 中 converged=true)
|
||
|
||
# ---- 光谱合成 SYNSPEC 控制参数 ----
|
||
synspec:
|
||
wstart: 30000.0 # 光谱波长起始点 (Å)
|
||
wend: 7000.0 # 光谱波长终止点 (Å)
|
||
imode: 0
|
||
idrv: 50
|
||
ifreq: 1
|
||
rel_cutoff: 0.0001
|
||
abs_cutoff: 0.01
|
||
|
||
results: data/seeds
|