现有组件功能与Amesim组件比较对齐,补全功能;仿真服务启动环境检测,旧版json工程文件适配读取
This commit is contained in:
1 parent
b6c22a54f8
commit
6fc9afe41d
119 files changed
+260114
-351
No files matched your search
@@ -1,5 +1,7 @@
|
||||
# C 数值后端
|
||||
|
||||
MECMAS21 已支持静摩擦保持与脱离、高级低速区间和 Stribeck 过渡;内部摩擦状态随接受的事件更新并保存,BDF/RK45 共用该机制。LSTP00A、MECMAS21 弹性限位和 PNL0001/2/3 的本轮语义及 Amesim 实测范围见 [功能验证报告](../docs/other/Amesim摩擦与管路功能补齐验证-2026-09-13.md)。
|
||||
|
||||
后端 Python 校验 XML、检查连接、生成系统专用 C 并编译;独立 EXE 执行完整数值循环。原生运行不调用 Python。当前构建支持 Windows x64 和 Linux x86_64;Linux 使用静态链接的 SUNDIALS。
|
||||
|
||||
平台相关修改遵循 [Windows 与 Linux 交付约定](../docs/standard/跨平台交付约定.md)。缓存时间戳更新按 `os.supports_follow_symlinks` 检测运行平台能力,Windows 不支持该可选操作时对已校验的普通缓存目录使用常规 `utime`。缓存集成回归可在两平台使用真实工具链执行:`python -m unittest tests.test_native_cache_storage tests.test_native_cache_platform -v`;设置 `SIMULATION_NATIVE_REQUIRE_TOOLCHAIN=1` 时工具链缺失将失败而不会跳过。
|
||||
@@ -75,6 +77,14 @@ BDF 默认使用结构着色差分,无需环境变量或网页选项。修正
|
||||
|
||||
## 代码职责
|
||||
|
||||
后端启动后会异步执行原生环境自检,编辑器和 API 无需等待。首次检测失败后最多再重试 5 轮,共最多 6 次检测;每轮失败后等待 0.5 秒再开始下一轮,任一轮成功即停止。自检使用现有 `SIMULATION_NATIVE_CC`/PATH、`SUNDIALS_ROOT` 和默认探测方式,不写入机器专用编译器路径。它与正式构建共用编译选项和链接库,依次预处理、编译、链接并运行一个一状态 BDF 程序,核对已知解和成功标记;每轮都实际编译,不使用模型缓存。
|
||||
|
||||
`GET /api/simulation/runtime-check` 只读取本次启动自检的状态,返回当前阶段、轮次、结果和耗时,不触发新的检测。网页仿真控制台显示阶段变化;中间失败只提示未通过及正在重试,不展示报错详情,后端也不立即打印异常堆栈。全部检测失败后才显示最后一次的失败阶段、编译器、命令、工作目录、退出码及错误输出。进程未启动时退出码为 null;stdout/stderr 各保留最后 8000 字符。终态响应中的 `attemptHistory` 保留各轮结果、耗时和失败详情,便于追查首次故障;`durationMs` 是包括重试等待在内的总耗时,`startedAt`/`finishedAt` 使用 UTC 时间。
|
||||
|
||||
检测及重试期间每 0.5 秒查询,结束后停止定时查询;切回页面时读取一次结果以识别后端重启。提示明确描述“本次启动自检”,不代表持续的健康监测,也不改动仿真进度或阻断编辑器。检测通过仅表示本次工具链检查通过,不保证任意模型都能仿真成功。
|
||||
|
||||
Windows 使用 EXE 和与正式构建相同的 DLL 复制规则;Linux 使用现有静态库及链接分组规则。临时自检程序位于 `app/data/native-runtime-checks/`,正常完成、失败或取消后清理,避免 Linux `/tmp` 的 noexec 挂载产生误报。编译各阶段有 30 秒超时,运行有 10 秒超时;取消/超时会终止本次检测创建的进程树。既有 `SIMULATIONAPP_WARMUP=off` 仍可关闭检测,网页会明确提示已关闭。后台服务不会因普通自检失败而退出,也不会自动修改 PATH 或切换求解内核。
|
||||
|
||||
- `app/simulation/native_codegen/input.py`:CLI 输入适配。
|
||||
- `contracts.py`:逐组件 C 实现版本白名单,新增模型或版本不会自动视为已支持。
|
||||
- `compiler.py` / `extended.py`:能力检查、状态/输出布局、连接分组、常系数约束消元、C 生成。保留已验证的简单拓扑快速生成路径,两条路径均只运行 C 数值代码。
|
||||
|
||||
Reference in new issue
Block a user