Files
SystemSimulationApp/docs/update-log/更新日志-2026-09-10.md
T

89 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 更新日志 2026-09-10
- 完成当前注册组件库的 C 方程覆盖:22 类 Amesim 公开组件(含两种介质定义)和 5 类实验组件,新增显式模型版本白名单。
- 补充空气物性、管路阻力/换热、阀参数模式、气动和机械节点、摩擦、柔性及反弹限位;扩展串联压力闭合、焓传播、刚性质量合并及兼容管路容腔投影。
- 数值循环全部位于生成的 C 程序中;保留原简单拓扑的紧凑生成路径、默认 C 启动及 Python 参考后端。未调整 ODE 雅可比策略。
- 27 项回归通过,另增加的四质量块合并解析校验通过。`skill-test` 完成 10 s,最终 RK45 回归的单次求解时间 0.322429 s;EXE 与记录位于 `test/native-catalog/skill-final-rk45/`。
- `test-mql-8` 在初始和瞬态状态下的 132 个导数、1784 个输出通过 Python 对照;完整 CVODE BDF 在 60 s 限额内仅推进至 0.0153307 s,明确记录为超时,完整运行性能仍待改善。
- 详细范围、已有参数的实际物理行为与连接限制见 `docs/other/C内核组件库覆盖记录.md`。
## 随后完成:退役旧 Python 数值实现
- 删除旧 Python 积分器、模型数值方法、物性缓存和固定算例求解器;Python 层保留配置、参数、校验、编译、进度与结果合同,C 同时负责状态初值。
- 固化 50 个网络、112 组 Python 参考状态,删除后用独立 EXE 回归;补充无需 NumPy/SciPy 导入的后台与代码生成检查。
- 原生 RK45 完成 `skill-test` 10 s,最大步长 0.001 s、rtol 1e-7,预热后纯求解 0.381517 s;前端生产构建通过。
- 当前生效范围与限制以 `docs/other/Python数值实现退役记录.md` 为准,前面的 Python 参考后端描述属于当日较早阶段。
## 01:19
- 合并 `system-optimization` 的 IR v2 规范、结构与校验器;退役依赖旧 Python 系统对象的 IR 导出器,保留 3 个冻结 IR 示例及 20 项校验回归。
- 后端回归覆盖 280 项(1 项环境锁版本校验按配置跳过);修正心跳测试的毫秒级定时假设后,对应 API 回归通过。前端构建与 3 项 Chrome 结果展示/恢复测试通过。
- 更新 CI 为 Linux 合同校验、Windows C 求解回归;历史基准保留原始输入与哈希,生成的 EXE/DLL 不进入提交。
## 11:14
- 删除未接入当前 C 路径的旧 IR Python 包、专属 schema、规范、冻结示例与测试,同步移除 CI 测试入口。C 生成继续直接使用校验后的网络结构,求解算法未改动。
- 删除旧求解器优化任务清单、后端效率调研、2026-08-15 性能评估及 Python/C 迁移可行性计划,清理文档索引。保留 C 实现记录和数值回归基准,新优化计划后续重列。
- 本地 37 项相关测试中 36 项通过、1 项 Linux 锁定环境检查按配置跳过,包含 50 个网络的冻结数值对照。`skill-test` 完成 10 s,RK45 最大步长 0.001 s、rtol 1e-7,单次纯求解 0.293462 s;本次用于确认清理后正常运行,不作为性能优化结论。
## 18:58
- 新增独立的连接线子模型交互 demo:按“绘图 → 子模型 → 参数 → 检查”操作,固定 P4NODE2,通过连线选择兼容管路并自动确定方向。演示包含四条连接、连续选型、参数保留和恢复初始示例。
- 使用独立页面与浏览器存储键,未修改主应用、正式工程、组件或求解器。演示只检查局部接口和参数,不执行仿真;移除 `frontend/public/demos/amesim-submodels/` 即可撤回。
- Edge 浏览器检查通过:兼容筛选、连续选型、反向接口、参数校验、刷新恢复、更换型号保留共同参数、删除重连、独立重置及窄屏布局;确认未发起后端 API 请求。
## 19:19
- 新增 `frontend/public/demos/pipe-submodels/` 管路子模型 demo,采用左侧管路库、中间固定模型图、右侧属性/参数表和底部检查信息的布局。默认进入子模型模式,只开放 PNL00R、PNL0001/2/3;上一版保留用于对照。
- 固定部件坐标及连接关系,禁止拖动、改路由、删除和重新连接;缩放/空白区平移仅改变观察视口。子模型阶段参数只读,参数阶段可编辑,使用独立浏览器存储。
- Edge 验证位置锁定、兼容筛选、预览/应用、连续选型、参数校验和保留、反向端口映射、刷新/重置、三种窗口宽度通过;未调用后端,不执行仿真。正式应用与求解内核未改动。
## 20:14
- 为气动端口新增温度、压力、质量流率和能量流率的供需声明;Amesim 三通/四通节点采用固定参考口校验,普通方程端口保留联立求解能力。多级节点会追溯参考来源,拒绝无来源的循环引用和中断链。
- 同一合同贯通组件目录、画布目标筛选与悬停提示、模型检查、JSON/XML/API 和 C 编译入口。旧工程供需错误连线保留供修正,禁止靠旧端口快照绕过校验。
- 未改用户浏览器工程、正式 test-mql-8 输入、积分/管流公式或计算顺序。旧测试文件中的错误参考口会被拒绝,此前独立实验中调整参考口的副本通过校验。
- 后端全量 269 项中 268 项通过、1 项锁定环境检查跳过,包含 50 个冻结网络的 C 数值对照;4 项 Chrome 测试及前端 TypeScript/生产构建通过。说明见 `docs/standard/port-computation-contract.md`。
## 20:38
- 对照 Amesim 2404 的气动、机械和信号子模型端口表,补充接口一致性边界:核心气动四量供需方向已对齐;容积与容积变化率、机械逐变量方向/加速度、常量与别名等尚未完整进入新供需合同。
- 更新元件建模规范第 7 节,要求新增元件先列逐变量接口、单位与符号映射、输出来源和计算依赖,并区分当前可执行元数据与后续需扩展的能力。说明中明确固定开度 PNVO001 是本项目变体。
- 本次仅更新规范和过时的模型说明文字,未改数值实现或用户工程;文档差异格式检查通过。
## 21:14
- 管流摩擦计算中的粗糙度常量提到内部循环外;生成的 C 在单次系统状态求值内复用完全相同输入的管流结果,每次积分器试算重新初始化缓存,不改变公式、迭代上限、计算顺序或雅可比策略。
- 修正参考口的独立模型副本在 30 次求值中,132 个导数和 1784 个输出逐值一致;原 14 组状态的实际管流求解次数从 2352 降至 672。14 项相关回归通过,包含 50 个冻结网络及无气动端口模型。
- 单独审计确认原 PNL0001/2 的 16 轮方法存在收敛不足,本次没有更换求根算法。系统层面仍应优先开发通用依赖排序与局部循环识别,缓存不替代该工作。未运行本轮完整轨迹或网页/Amesim 对比;范围和微基准限制见 `docs/other/管路重复计算优化核查-2026-09-10.md`。
## 22:40
- 扩展 C 生成器新增计算关系的来源检查、依赖排序与局部循环划分;参考别名与能量计算拆分,未耦合关系直接执行,压力试算只刷新本块残差所需的流量。循环初值和压力边界来自所在区域,构建清单保存 `evaluationSchedule` 供核查。
- 修正参考口的独立模型生成 484 条计算关系、0 个系统代数循环块,30 次求值中每条关系均执行一次,132 个导数及 1784 个输出逐值一致。BDF 同样完成 0.02 s 时,采样与最终状态完全相同,单次纯求解从 2.368098 s 降至 1.645752 s;独立 C 求值基准约提速 1.459 倍。
- 新增长链、独立循环隔离、反向流、连接顺序打乱、压力与混合焓耦合及守恒测试,定向 29 项通过。全量 276 项中 1 项环境检查跳过,遇到进程偶发空输出的相关网络已单独复核通过;保留全量未一次全绿的记录。
- `skill-test` 完整完成 10 s。大模型两版完整 10 s 尝试均触及 30 s 执行限额,本轮不宣称已完成其全程速度或 Amesim 曲线对齐。管流求根、积分器、雅可比及用户接线保持不变;规范与详情见 `docs/standard/native-evaluation-schedule.md`、`docs/other/C计算依赖排序验证-2026-09-10.md`。
## 21:17 前端仿真期间性能优化(第 1、2 项)
- 结果流采用增量 NDJSON 解码:仅扫描新分块,跨块长行保留片段,在换行/结束时一次合并,避免对完整结果反复扫描和复制。保留 UTF-8 跨字节、CRLF、空行、末行无换行及解析错误传播行为。
- 进度与日志迁入控制台独立订阅的状态容器,不再触发顶层建模工作区渲染。普通进度每 250 ms 合并显示最新值;阶段变化、异常、停止、完成及关键操作日志即时更新。重复可见状态不通知,结束时清除待刷新进度,日志保留既有 400 条上限。
- 活动监测仍逐条处理原始消息,30 秒数据流超时和接受步/内部活动停滞规则未调整;后端接口、C 求解器、数值精度、采样和原始结果未改动。本轮不实施第 3、4 项(结果复制/存储、曲线绘图),后续实施时同样补充压力与数据一致性测试。
- 新增 `frontend/tests/e2e/simulation-performance.spec.ts`,9 项测试覆盖百万数值、1 KiB/64 KiB 分块、10 万条进度合并、300 元件/300 连接下的 1 万条进度冲击、终止状态不被旧进度覆盖,以及真实停滞恢复流程;所有后端响应均为测试模拟,不运行实际求解器。
- 隔离 Chrome 中,同一 18,565,846 字节结果按 64 KiB 分块,旧/新解析三次耗时分别为 1854.5/128.1、1929.5/81.1、1720.8/76.7 ms;逐项比对 100 万个数值一致。300 元件页面的 1 万条进度没有触发工作区重新渲染。100 变量 × 10000 采样点的应用接收至可用检查约 429 ms(包含现有结果复制/存储尝试和测试检查延迟,不含真实网络传输与求解)。
- 33 项相关回归全部通过,覆盖新增压力测试、活动监测、超时、原生/旧结果恢复以及控制台/复制粘贴。TypeScript 与生产构建通过,仍有原有主包超过 500 kB 的提示。测试服务器启动偶发超时后,使用临时配置直接启动 Vite 完成测试,临时配置已移除。
- 上述耗时是本机合成数据的前端专项测试,不代表完整工程求解时间或端到端仿真的加速比例。
## 22:25 结果保存与曲线性能优化(第 3、4 项)
- 发布仿真结果时直接使用本次请求独占的数值结果,不再对整份结果执行 `structuredClone`;工程快照仍独立复制,防止后续建模修改污染结果。
- 新结果改用 IndexedDB 后台分块保存:每块最多 32768 个双精度数值,每批约 1 MiB,并在批次间让出主线程。全部写入成功后才更新 sessionStorage 中不足 200 字节的恢复指针,避免同步序列化整份结果及原有小容量限制。
- 兼容读取旧版 sessionStorage 结果;后台恢复不覆盖新生成/新载入的结果,过期保存不能覆盖更新结果。保存失败保留内存中的结果和上次完整缓存,控制台提示导出;后台保存未完成时离开页面会触发浏览器提示。只清理本页产生的过期/未完成缓存,不清理用户工程或结果文件。
- 曲线样本、坐标范围、单位换算和按视口选取的绘图点增加缓存;移除对大样本数组使用 `Math.min(...数组)` / `Math.max(...数组)` 的写法,以及多曲线全样本拼接。缓存使用弱引用或有限条目,避免无限保留历史视口和单位切换数据。
- 单曲线、同单位多曲线、上下分区曲线均按可见时间区间和像素列保留首点/最小值/最大值/末点,保持原顺序、线段断点和窗口边界外的相邻点。完整原始数据继续用于游标读数、结果文件及 CSV,不减少后端采样,不改变求解公式或精度;既有机械事件孤立力尖峰的连续曲线显示规则保留。
- 新增 `results-performance.spec.ts` 的 6 项压力/一致性测试:百万点极值与像素路径上限、断点和重复时刻、百万双精度数值保存/恢复、保存失败和新旧请求竞争、每条 25 万点的三种曲线窗口及完整导出、浏览器新旧路径生成对照。更新原生结果恢复测试适配异步缓存。
- 本机 Chrome 专项测试:1,000,000 个数值对应 JSON 约 18.6 MB,后台保存约 47.8 ms、恢复约 32.4 ms,保存期间其他定时任务运行 16 次,整份结果 JSON 序列化调用为 0,恢复指针 84 字节,逐值精确一致。25 万点路径旧方式约 111 ms,新方式首次约 27 ms、100 次缓存重绘平均约 0.688 ms;路径命令从 250000 降至 1679,原始 250000 点全部保留。这些是数据处理/路径生成耗时,不等同于浏览器实际帧率或求解器加速比例。
- 三个实际结果窗口同时显示五条 25 万点曲线,路径点数分别为 722、1002、1001、1001、1000;单位切换、游标读数、滚轮缩放、刷新恢复和完整结果导出通过。导出按浏览器保存的原始数据逐项精确比对,而不是在 Node 中重新计算三角函数。
- 相关 59 项测试均已通过(一次组合运行 58 项通过,修正导出测试基准后补跑相关 14 项全部通过);包含上一轮 1、2 项压力测试、活动监测/停止恢复、建模交互和结果系统图回归。TypeScript 与生产构建通过,保留原有主包体积提示;临时直接启动 Vite 的测试配置已移除。
- 本轮不运行真实求解器,未修改后端。压力测试仅使用隔离浏览器和合成数据,不影响用户浏览器工程。