mcpField
P
physverify

physverify

ローカル
github.com/rcgiri-physics科学・教育03 日前に更新

physverify について

physverifyは、数値ODE・PDEソルバーが主張する精度と物理要件を満たすか検査するツールです。計算物理の開発者向けに、ソースコードのスキャンと実行可能な検証を提供し、PDEの対応は現在1次元に限られます。

主な機能

  1. 01数値処理や定数の問題をコードから検出
  2. 02物理仕様に基づくソルバー次数の検証
  3. 03Runge-Kutta法の次数と安定性を検査
  4. 04合否と理由を伴う誤差収束の評価
  5. 05CIで検査を実行

活用シーン

  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

掲載時のツール一覧 · 4 日前に更新

パラメーター型必須説明
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 の直線に沿い、壊れたソルバーは途中で頭打ちになります

初めてお使いですか?こちらから始めてください。インストールから最初の検証までを約 10 分で説明します。AI コーディングアシスタントを使っている場合は、貼り付け用のプロンプトも用意されています。

自分のコードで使う

  • セットアップ不要で、どんなプロジェクトにも対応: physverify scan PATH はコードを読み取り(実行はしません)、宣言された次数を満たさないルンゲ・クッタ法(表、クラス属性、またはコード内の段階として記述されたもの)、グリッドに一致しない格子間隔、値が近い物理定数、往復テストを検討する価値のある逆関数のペアを検出します。
  • ODE ソルバー: physverify init verify_solver.py --solver mysolver --order 4 で仕様ファイルを作成します。方程式(コードからではなく、物理に基づくもの)を記入し、physverify run verify_solver.py を実行します。
  • ルンゲ・クッタのテーブル: physverify.butcher の check_tableau(A, b, c, claimed=3) は、係数だけを使って次数、段階次数、安定性を検証します。
  • すでにある誤差データ: 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

バグを検出できますか?

5つの小規模なソルバーに仕込んだ37件のバグのうち、誤検知なしで35件を検出しました(通常の「1つの答えと比較する」テストでは27件)。バグとチェックは同じ人が作成したため、これはツールが設計どおりに動作することを示すものであり、他の人のコードでどのように動作するかを示すものではありません。公開されている物理学のリポジトリでは、74件の不具合が作者に報告されました。そのうち14件は physverify のチェックで検出され、11件はコードを実行しただけで見つかり、残りはリポジトリごとのテストスクリプト、またはコードの読み取りによって見つかりました。スクリプトなしで physverify scan だけを実行した場合、現在は74件中18件を検出します。初版の2件から増加しており、同じリポジトリで新たに7件の不具合も検出しました(検出方法ごとの結果)。この件数はそのサンプルのみを対象としたものであり、バグ率を示すものではありません。詳細は結果と、すべての表を再生成するための results/README.md をご覧ください。

制限事項

ODE で最も効果を発揮します。PDE については、現時点では1次元のみ対応しています。コードにはソース項を追加する方法、またはそれ自体に誤りがある可能性のある小さなラッパーが必要です。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。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。