# 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)会发散。 # # 各 step 的隐式默认值在此显式写出(与代码兜底等价,见下): # - metals: cno —— C/N/O 参与 NLTE(runner.rs 兜底默认;缺省时 .5 输入也按此处理) # - chmax: 0.001 —— 收敛阈值(runner.rs 兜底默认;缺省时与原兜底完全一致) # - itek / ichang / idlte / iacc / orelax 留空 → 用 tlusty 内部默认(未结构化为可写值)。 # 注意:设 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)。 tlusty_chain: - {label: lte, lte: T, ltgray: T, ilvlin: 0, require_converged: false, niter: 0, metals: cno, chmax: 0.001} - {label: nc, lte: F, ltgray: F, ilvlin: 0, require_converged: false, niter: 10, metals: cno, chmax: 0.001} - {label: nl, lte: F, ltgray: F, ilvlin: 100, require_converged: true, niter: 100, metals: cno, chmax: 0.001} # ---- TLUSTY 输入文件全局参数(.5 + nst 的非阶段差异部分)---- # 这些参数不随收敛阶段变化。此处显式声明当前生效值,作为可配置项的文档。 # 如需调整(如降 nfread 加速、换 ions 能级文件、暴露 nst 高级关键字),改本块即可。 # 删掉本块 → 走代码内硬编码默认(与下方声明完全等价)。 tlusty_input: # .5 frequencies 块:连续频率网格点数。>0 读预设表(高精度、慢)。 # 2000 是高精度档(官方 hhe 样本用 50);降到 1000 可加速但牺牲精度。 nfread: 2000 # atoms 块每元素的 mode:2=显式统计平衡(H/He/CNO),0=不参与(Li/Be/B)。 # 缺省元素走默认。abn(丰度)由 grid 的 loghe/logc/logn/logo 计算,不在此配。 atoms: H: {mode: 2} He: {mode: 2} C: {mode: 2} N: {mode: 2} O: {mode: 2} # ions 能级数据表(空 = 用代码默认的 H/He/C/N/O 共 23 行标准表)。 # 如需换能级文件或调整 nlevs,列出完整表(完全替换默认)。 ions: [] # nst 额外关键字(逃逸口):自由传入任意 KEY=VALUE,追加到 nst 末尾。 # 用于暴露未结构化的 nst 开关(FRCMAX/CUTBAL/TAU/NDGREY 等,见 tlusty 手册)。 # 示例(当前未启用): # nst_extra_keys: # - [FRCMAX, "0.01"] # - [CUTBAL, "0.3"] nst_extra_keys: [] # ---- 种子步进回退(旧字段,保留兼容;新配置见下方 tlusty_stage 块)---- # 冷启动失败时,自动用已收敛的邻居模型作种子,用 LTGRAY=F 热启动重试。 # 这是高温 He-poor / 富金属区收敛的关键(见 EXPERIENCE.md §5Y)。 # 失败的冷启动结果会备份到 .coldfail/ 目录。 seed_step_fallback: true # ---- 执行参数 ---- timeout_sec: 7200 # 单模型墙钟时间上限(120分钟) # ---- 光谱合成 SYNSPEC 输入参数(fort.55 数值参数;与 tlusty_input 对称)---- # 启用开关见下方 synspec_stage 块。 synspec_input: wstart: 3000.0 # 光谱波长起始点 (Å) wend: 7000.0 # 光谱波长终止点 (Å) imode: 0 idrv: 50 ifreq: 1 rel_cutoff: 0.0001 abs_cutoff: 0.01 # ==================================================================== # 阶段独立配置(见 docs/task_engine_decoupling_design.md §2-§3) # # TLUSTY / SYNSPEC 视为正交独立阶段,每阶段三维: # enabled : 是否执行该阶段 # policy : skip_converged(增量) | force_recompute(强制重算) | skip_failed(忽略失败) # strategies : 策略链队列,按回退优先级排序;节点执行 strategies[0],失败后服务端弹出首项 # # 此处显式声明与旧 seed_step_fallback/synspec 块等价的默认配置,便于前端面板编辑。 # 旧字段(seed_step_fallback / synspec)保留作回退兜底,resolve 方法优先用本块。 # ==================================================================== tlusty_stage: enabled: true policy: skip_converged strategies: [cold_run, seed_step] synspec_stage: enabled: true policy: skip_converged strategies: [standard]