SuperAPI AI 工具集

simulation-validator

测试与质量

查看项目

更新于 10-15 11:59

技能介绍

Simulation Validator 是一套用于材料仿真的三阶段验证协议工具,目标是在仿真开始前、运行过程中和运行结束后分别进行校验,帮助判断仿真配置是否合理、运行是否稳定、结果是否可信。

用途 该工具围绕仿真生命周期提供三个阶段的验证:飞行前检查(pre-flight)、运行时监控(runtime)和飞行后校验(post-flight)。它适用于材料仿真场景,例如相场模型(Allen-Cahn、Cahn-Hilliard)等梯度流/变分模型。

主要能力 工具包含四个 Python 脚本:

  • scripts/preflight_checker.py:在仿真开始前检查配置文件(JSON/YAML),验证必填键、数值范围、输出目录访问权限和磁盘空间,输出 report.status、report.blockers、report.warnings。状态分为 PASS、WARN、BLOCK。
  • scripts/runtime_monitor.py:在仿真运行期间周期性分析日志,检测 NaN/Inf/溢出、残差增长和 dt 崩溃,输出 alerts、residual_stats、dt_stats。
  • scripts/result_validator.py:在仿真结束后校验指标文件(JSON),检查质量守恒、边界、NaN、能量单调性等,输出 checks、confidence_score、failed_checks、status(PASS / FAIL / INSUFFICIENT_DATA)。confidence_score 在没有任何检查运行时为 null。
  • scripts/failure_diagnoser.py:在验证失败时分析日志,输出 probable_causes、recommended_fixes。

使用方式 需要 Python 3.10+,无外部依赖,仅使用标准库,支持 Linux、macOS 和 Windows。运行前需收集:配置文件、日志文件、指标文件、必填参数和有效范围。

阶段 1(飞行前): python3 scripts/preflight_checker.py --config simulation.json --required dt,dx,kappa --ranges "dt:1e-6:1e-2,dx:1e-4:1e-1" --min-free-gb 1.0 --json

阶段 2(运行时): python3 scripts/runtime_monitor.py --log simulation.log --residual-growth 10.0 --dt-drop 100.0 --json

阶段 3(飞行后): python3 scripts/result_validator.py --metrics results.json --bound-min 0.0 --bound-max 1.0 --mass-tol 1e-3 --json

对于变分/梯度流模型(Allen-Cahn、Cahn-Hilliard),可添加 --variational 以强制严格的单调非增能量检查。

失败诊断: python3 scripts/failure_diagnoser.py --log simulation.log --json

阈值选择 工具提供保守、标准、宽松三档阈值参考:质量容差分别为 1e-6、1e-3、1e-2;残差增长分别为 2x、10x、100x;dt 缩减分别为 10x、100x、1000x。默认值为标准档(--mass-tol 1e-3、--residual-growth 10、--dt-drop 100)。

适用场景 适用于材料仿真工作流中的配置检查、运行监控和结果验证,尤其适合需要判断结果是否可信、是否需要诊断失败原因的场景。

限制

  • 不是实时监控:脚本在事后分析日志。
  • 基于正则表达式:日志解析依赖模式匹配,可能遗漏不常见格式。
  • 不自动修复:脚本只诊断,不修改仿真。
  • preflight_checker.py 不评估数值稳定性(CFL / 扩散-Fourier),需另行使用 skills/core-numerical/numerical-stability/scripts/cfl_checker.py。
  • 日志文件有 500 MB 解析上限,超过则拒绝解析。
  • 所有脚本不写入文件系统,输出到 stdout。

安全与输入校验 配置文件路径在解析前验证存在性;--required 参数名使用安全字符白名单(^[A-Za-z0-9_.-]+$);--ranges 按 name:min:max 解析并要求 max > min;--min-free-gb、--residual-growth、--dt-drop、--mass-tol 要求有限正数;--bound-min/--bound-max 要求有限数且 max > min。无效输入以退出码 2 结束并给出说明。不使用 eval()、exec() 或动态代码生成,子进程调用使用显式参数列表。

版本历史 v1.2.2(2026-06-24):增加验证清单和常见陷阱表。 v1.2.0(2026-06-23):修正诊断正则、方向感知 dt 崩溃检测、运行时 NaN/Inf 扫描、严格变分能量检查、非空边界/置信度、配置相对输出目录与正确卷磁盘检查,并实现输入校验/文件大小保护。 v1.1.0(2024-12-24):增强文档、决策指导、Windows 兼容性。 v1.0.0:初始版本,包含 4 个验证脚本。