mcpField
P
physverify

physverify

本地服务
github.com/rcgiri-physics科研与教育03 天前更新

关于 physverify

physverify 用于检查数值 ODE 和 PDE 求解器是否达到其声明的精度并符合物理要求,面向计算物理开发者。它结合源码扫描与可执行验证;目前 PDE 支持仅限一维。

主要功能

  1. 01扫描代码中的数值与常量问题
  2. 02依据物理规格验证求解器阶数
  3. 03检查 Runge-Kutta 阶数与稳定性
  4. 04通过通过或失败结果评估收敛误差
  5. 05在 CI 中运行检查

适用场景

  1. 01在采用模拟结果前审查求解器
  2. 02根据系数检查 Runge-Kutta 表
  3. 03使用测得的误差测试收敛性
  4. 04验证失败时令 CI 任务失败

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"rcgiri-physics-physverify": {
"command": "uvx",
"args": [
"physverify"
]
}
}
}
启动命令uvx physverify

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiphysverify0.5.1

工具

1

收录的工具列表 · 更新于 3 天前

参数类型必填说明
specsarray否规格文件路径
projectstring否要搜索 verify_*.py 的 project 文件夹

详细介绍

physverify

tests PyPI Python DOI Docs

检查模拟是否以其声称的精度阶数求解了其声称的方程,而不只是检查它能否运行。

physverify 仍在积极迭代(v0.5.1),欢迎计算物理社区贡献代码和测试用例。适用范围:ODE 和 PDE 的数值解(时间积分、收敛性、守恒性),以及一些蒙特卡洛检查。只需 NumPy。

检查流程:输入你的求解器和对物理过程的独立描述;physverify 会在多个分辨率下运行求解器、测量误差,并给出附带理由的结论

pip install physverify
physverify demo

此演示先检查正确的求解器(所有检查均通过),再检查阻尼系数大 10% 的同一求解器(所有检查均失败):

误差随步长变化:正确的求解器沿斜率为 2 的直线变化,出错的求解器则趋于平缓

如果你是新手,从这里开始:大约十分钟即可了解安装和首次检查,并附有一段提示词,供使用 AI 编码助手时粘贴。

在自己的代码上使用

  • 任何项目,无需设置: physverify scan PATH 会读取代码(不会运行任何内容),并标记阶数不符合声明的 Runge-Kutta 方法(以表格、类属性或代码阶段形式编写)、与网格不匹配的网格间距、接近但不准确的物理常数,以及值得进行往返测试的反函数对。
  • ODE 求解器: physverify init verify_solver.py --solver mysolver --order 4 会生成一个规格文件;填写方程(依据物理过程,而不是你的代码),然后运行 physverify run verify_solver.py。
  • Runge-Kutta 表: check_tableau(A, b, c, claimed=3)(来自 physverify.butcher)仅根据系数检查其阶数、阶段阶数和稳定性。
  • 已有的误差数据: check_order(hs, errors, expected=2) 会给出 PASS、FAIL 或 INCONCLUSIVE,并附上理由。

在 CI 中运行

检查失败会导致任务失败,就像单元测试出错一样(CI 指南:选项、pre-commit、pytest):

      - uses: rcgiri-physics/[email protected]
        with:
          specs: tests/verify_*.py

入门指南 · 示例 · PASS 的含义 · 故障排除 · API

它能发现错误吗?

在注入五个小型求解器的 37 个错误中,它标记出了 35 个(普通的“与一个答案比较”测试:27 个),且没有误报。这些错误和检查均由同一个人编写,因此这只能说明工具按设计运行,不能说明它在其他人的代码上表现如何。在公开的物理学代码仓库中,向作者报告了 74 个缺陷;其中 14 个是通过 physverify 检查发现的,11 个是通过直接运行代码发现的,其余则是通过各仓库的测试脚本或阅读代码发现的。现在,单独运行 physverify scan(不使用脚本)就能发现 74 个缺陷中的 18 个,高于第一个版本中的 2 个;它还在相同的代码仓库中发现了 7 个新缺陷(各方法分别发现了哪些缺陷)。这些数量仅描述该样本,并非错误率。详情见:结果,以及用于重新生成所有表格的 results/README.md。

局限

最适用于 ODE;目前仅支持一维 PDE。你的代码需要能够添加源项,或者需要一个本身也可能出错的小型包装器。PASS 表示这些检查未发现问题;它不能证明模拟正确,而且其独立性仅取决于你编写的参考实现:参见 PASS 的含义。

贡献、引用和许可证

欢迎提供帮助:在你自己的求解器上进行试用并提交报告、由作者以外的人编写的注入错误、适配器和文档。请参阅 CONTRIBUTING.md、行为准则、用于获取帮助的 SUPPORT.md、关于运行不可信代码的 SECURITY.md,以及面向 AI 助手的 AGENTS.md。引用时,请使用 doi:10.5281/zenodo.23534512 或 CITATION.cff。变更记录:CHANGELOG.md;计划:ROADMAP.md。MIT 许可证,版权所有 (c) 2026 Ram Chandra Giri。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。