4.1 KiB
Python 数值实现退役记录(2026-09-10)
网页与 CLI 统一采用 C 数值内核。删除旧 Python 积分器及模型数值实现;Python 保留输入校验、模型元数据、C 生成、构建缓存、任务与结果管理。
删除与保留
- 删除
app/simulation/solvers/、systems/generic.py、Python 状态/物性求值、组件流量/受力/导数方法、物性缓存及对应的逐次物性计时。 - 删除旧固定算例求解器、旧 Python 基准执行脚本和依赖它们的比较脚本;保留 Amesim 结果读取器与历史数值文件。
config.py保存配置与进度,sampling.py保存采样合法性检查,results.py保存结果合同。- 组件 Python 文件保留参数、端口、显示、结果、方程结构以及几何预处理。方程结构声明不再包含运行时残差值。
- 气体质量/能量初值由 C
native_medium_init()计算,兼容实验气瓶/贮箱原有初值定义。 - 后端默认且仅支持
native;native-c是别名,python会明确报错。旧固定算例 HTTP 接口返回 410,统一 XML 接口继续使用。 - 后端运行依赖移除 NumPy/SciPy。NumPy 仅用于回归断言,列在
requirements-test.txt。 - C RK45/CVODE BDF 和既有雅可比策略保持不变。无时间信号机械模型的生成代码补充未使用参数声明,修复严格编译警告导致的构建失败。
回归依据
删除前从旧 Python 内核捕获 tests/data/native-python-reference.json:50 个网络、112 组状态的初值、导数和输出。覆盖空气/氦气、正反向流、换热、节点、串联阻力、管路容腔、机械模式、信号、重命名/重排及重复支路;删除后由生成的 EXE 对照冻结值,容差 rtol=2e-8, atol=2e-7。另有四质量块解析校验、反弹与纯信号 RK45/BDF、XML/任务取消和接口测试。
历史 Python MQL 基准的原始 XML/JSON 移到 tests/baselines/simulation/test_mql_8/sources/,保留原始哈希与仿真设置,不用新内核覆盖历史结果。当前 tests/data/test-mql-8.json 和 XML 同步采用已选择的最大步长 0.02 s。
skill-test 对应的 tests/data/native-skill-test.xml 完成 0–10 s:RK45、最大步长 0.001 s、rtol 1e-7、不记录轨迹。预热后单次纯求解 0.381517 s,60224 次导数求值、10022 个接受步、14 个拒绝步。该次同时进行其他回归工作,不作为新的性能优劣结论。
当前版本仍仅提供 Windows x64 原生构建。此前已发现大型 test-mql-8 的 CVODE BDF 完整仿真过慢;本次删除旧实现不解决该问题,不能据组件覆盖或短时测试宣称其长时仿真已通过。详见 组件覆盖记录。
本地生成的 EXE、DLL、计时日志在 /test/,不提交编译产物。源码和冻结基准进入 Git,可重新生成。
远端 IR 分支集成(历史阶段)
合并 system-optimization 时曾保留 IR v2 schema、Python 数据结构、内容签名和静态校验器,停用了依赖旧 Python 系统对象的导出器。这些 IR 文件已在随后清理中删除,未接入当前 C 生成或求解路径。
当时从远端提交 ce353d2 固化了三个 IR 示例并通过 20 项校验测试;专属示例和测试已随 IR 一起删除,历史内容可从 Git 找回。
当前 CI 在 Linux 验证元数据和 XML 合同,在 Windows 配置 C 工具链后运行原生回归。本地验证与远端 CI 的实际运行结果分别记录,不把本地通过当成远端 CI 已通过。
旧数值实现退役时的本地验证
- 后端完整发现 280 项测试,1 项 Linux 锁定环境版本校验按配置跳过。数值、XML、IR 等检查通过;心跳测试改为等待消费确认后,对应 11 项 API 回归通过,消除依赖几毫秒固定等待的时序假设。
- 前端 TypeScript 检查与 Vite 生产构建通过。
- Chrome 无界面网页测试 3 项通过:C 结果、缺少旧诊断字段的结果、历史 Python 结果均可显示并在刷新后恢复。
skill-test完整 10 s 原生求解通过,计时与设置见上文。