BFB 数值稳定性监控。针对 fsolve(cell_solver)与 global_nr(global_nr_solver),检查残差缩放、np.exp 保护、Jacobian 稀疏结构等。在修改求解器、残差或边界条件后启用。
src/solvers/cell_solver.py(逐格 fsolve)、src/solvers/global_nr_solver.py(全局阻尼 NR)、或 Cell.residuals / 边界条件闭包。sanity_checks 通过但端到端异常时(可与 gstack-investigate 配合)。global_nr_solver.py 中 build_equation_scales 与 RMS ‖F̂‖ 的定义;缩放应使用 按方程类型的物理参考量(气相 mol/s、固相 kg/s、能量 W 等),避免仅用当前 ‖F‖ 动态缩放导致 NR「只看某一类方程」。ref_gas_mol_s、、 的传入(见 )时,确认与工况量级一致。ref_solid_kg_sref_energy_Wreactor._solve_global_nrnp.exp 与刚性项np.exp(±x):
x 是否可能超出浮点安全范围;必要时使用 np.clip(x, -limit, limit) 或项目已有惯例(见 .cursor/rules/scientific-modeling-core.mdc 示例)。exp 而无防护。n_var / pack_cell / unpack_cell / cell_offsets 一致。scipy.sparse 组装时,确认:
n_var 维度匹配;修改变量数后是否需更新图案(pattern)。reactor._solve_global_nr:外层收敛必须依赖 内层 NR 的 converged 与温度变化阈值,不得仅凭 dT 过小而忽略巨大残差(见 docs/validation_gap_analysis.md 与近期 reactor 逻辑)。converged_outer / converged_inner_nr(若返回 dict 中含这些键)。cd bfb-gasifier && python3 tests/sanity_checks.py
针对求解器的专项测试(若存在):
pytest tests/test_lu_gs_vs_global_nr.py -q
src/solvers/cell_solver.pysrc/solvers/global_nr_solver.pysrc/core/reactor.py(_solve_global_nr、_solve_gauss_seidel)src/core/cell.py(residuals).cursor/rules/scientific-modeling-core.mdc(§数值稳定性)