Files
SystemSimulationApp/docs/other/Python数值实现退役记录.md
T

4.4 KiB
Raw Blame History

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 数据结构、内容签名和静态校验器。旧 compile_system_ir(GenericFluidSystem) 导出器直接依赖已删除的压力流量、机械和闭合执行计划,因此停用并返回明确的迁移提示。当前 C 生成接口是 native_codegen.compiler.compile_native_program(network),尚不输出独立的 System IR v2 执行计划。

从远端提交 ce353d2 固化机械、132 状态 MQL、74 状态历史模型的 reference-only IR,保存在 tests/data/system-ir-v2-reference.json.gz。保留并迁移了 20 项 IR 结构、签名、索引、阶段和错误校验测试,全部通过。用于捕获参考结果的临时旧代码副本已删除。

CI 同步移除旧 Python 基准命令:Linux 验证元数据和 IR 合同,Windows 配置 C 工具链后运行原生回归。CI 配置已更新,本地验证与远端 CI 的实际运行结果分别记录,不把本地通过当成远端 CI 已通过。

最终本地验证

  • 后端完整发现 280 项测试,1 项 Linux 锁定环境版本校验按配置跳过。数值、XML、IR 等检查通过;心跳测试改为等待消费确认后,对应 11 项 API 回归通过,消除依赖几毫秒固定等待的时序假设。
  • 前端 TypeScript 检查与 Vite 生产构建通过。
  • Chrome 无界面网页测试 3 项通过:C 结果、缺少旧诊断字段的结果、历史 Python 结果均可显示并在刷新后恢复。
  • skill-test 完整 10 s 原生求解通过,计时与设置见上文。