mcpField
P
pybamm

pybamm

github.com/k-dense-aiデータ・データベース55.1k274 回インストール2 日前に更新
リポジトリ

pybamm について

PyBaMM battery experimentsは、PyBaMMで単セルの定電流充放電・休止プロトコルをシミュレーションし、モデル曲線をサイクル測定値と比較するスキルです。ソルバーとメッシュの比較を記録しますが、実機制御や動作範囲の確立は行いません。

主な機能

  1. 01定電流セルプロトコルのシミュレーション
  2. 02SPMおよびDFNモデルの実行
  3. 03ソルバー許容誤差とメッシュ解像度の比較
  4. 04電圧・電流と測定値の比較
  5. 05曲線、パラメーター、レポートの出力

活用シーン

  1. 01セルプロトコルの電圧・電荷軌跡の確認
  2. 02SPMまたはDFN予測とサイクルデータの比較
  3. 03シミュレーション結果へのソルバー・メッシュの影響評価

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/k-dense-ai/scientific-agent-skills --skill pybamm

インストール後、Claude Code で/pybammを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
chen2020-protocol.json
references/
protocol-and-comparison.md
scripts/
simulate_battery.py

詳細

PyBaMM バッテリー実験

使用する場面

このスキルは、単一セルの定電流充放電および休止をモデル化したり、電圧と充電の軌跡を調べたり、SPM/DFN の予測をサイクル測定と比較したりする場合に使用します。ヘルパーは実際の PyBaMM 実験と 3 つの数値分解能を実行しますが、バッテリーサイクラーを制御したり、ハードウェアの動作範囲を確立したりするものではありません。

ランタイムと検証済みケース

uv venv --python 3.12 battery-env
uv pip install --python battery-env/bin/python pybamm==26.9.0.0 pybammsolvers==0.10.0

このリリースには pybammsolvers>=0.10.0、NumPy 2 以降、および CasADi 3.8.1 が必要です。 検証済みの環境では Python 3.12.10、NumPy 2.5.3、SciPy 1.18.1 を使用しました。IDAKLU が 推奨ソルバーです。このリリースでは CasadiSolver と ScipySolver は非推奨です。latest は 未リリースの API を記述している可能性があるため、以下の 26.9.0.0 マニュアルを参照してください。

同梱の assets/chen2020-protocol.json は、合成された等温 298.15 K の SPM ケースです。初期 SOC 80%、0.5C で 600 秒放電、120 秒休止、 0.5C で 600 秒充電します。Chen2020 は 5 Ah の公称容量を持つ LG M50 パラメーター化を提供します。 ここで 0.5C は 2.5 A を意味します。これは実行可能な参照例であり、任意のユーザーのセルが それらのパラメーターを持つという主張ではありません。ヘルパーは、呼び出し元がその変数を すでに明示的に設定していない限り、PyBaMM の利用テレメトリを無効にします。

ワークフロー

  1. セルの化学、形状、公称容量、初期状態、温度、および電流符号の慣例を確定します。適切な パラメーターセットを使用し、その出典を説明してください。論文のフィッティングパラメーターと この特定のセルの測定値を区別してください。その意味と適用条件を確認せずに劣化パラメーターを 流用しないでください。
  2. 要求されたプロトコルを references/protocol-and-comparison.md の JSON 契約に 変換します。正のシミュレーション電流は放電、負の電流は充電です。各ステップには有限の 継続時間があります。指定された電圧カットオフによってそれを早期に終了できます。レポートには 実際の終了時刻が記録されます。C レートは選択したセットの公称容量を使用します。その容量が 変わると電流も変わります。
  3. その簡略化された輸送の仮定が適切な場合は SPM を選択し、電解質/電極の輸送を解くことが 重要な場合は DFN を使用します。ヘルパーの検証済みモデルは等温であり、経年劣化、力学、 析出、パック制御を除外しています。数値収束が優れていても、レートを上げると SPM の予測が 無効になる可能性があります。
  4. ヘルパーを実行します。プロトコルのフィールドを検証し、不明なパラメーター入力または プロトコルによって上書きされたパラメーター入力を拒否し、IDAKLU を使用し、SOC 初期化後に 基本パラメーターのスナップショットを取得します。そのスナップショットとともにプロトコルを 保持してください。実験ステップは独自の電流を供給します。 実行不可能またはスキップされたステップはエラーであり、 部分的なプロトコルを完全なものとして黙って提示することはありません。
  5. 2 つの数値比較を別々に読み取ります。ベースラインとより厳しい許容誤差の比較はソルバー誤差を 分離し、元のメッシュと倍にしたメッシュでの厳しい許容誤差の比較は離散化を分離します。 電圧差とイベント時刻差を、その問題が必要とする精度と比較してください。これらが大きすぎる 場合は再度細分化してください。1 回の倍化は収束を証明しません。
  6. 測定値が利用可能な場合は、残差を解釈する前に電流、時間原点、温度、SOC、容量を確認して ください。一致する秒、ボルト、アンペアを供給してください。ヘルパーは電圧 RMSE/MAE/バイアスと 電流 RMSE を報告し、残差を保持します。入力電流が一致しない状態での小さな電圧誤差は モデルを検証しません。このワークフローは曲線を比較するものであり、電圧のみから一意の 動力学パラメーターを特定すると主張するものではありません。

実行と検査

スキルディレクトリから、battery-env/bin/python を上記で作成した環境に向けます。

battery-env/bin/python scripts/simulate_battery.py assets/chen2020-protocol.json \
  --output battery-reference

# measured.csv is user data with time_s,voltage_V,current_A columns.
battery-env/bin/python scripts/simulate_battery.py protocol.json \
  --measured measured.csv --mesh-points 30 --output battery-comparison

最初のコマンドは、外部の出力先を指定してそのまま実行されました。2 番目は説明用のユーザーファイル名を使用しています。測定パスは、テスト内の固定された合成参照曲線に対して実行されました。出力ディレクトリは新規である必要があります。

成果物解釈
curve.csvベースラインの時間、ステップ、電圧、電流、および正味放電容量
tight-tolerance.csv同じメッシュ、より厳しいソルバー
refined-mesh.csv倍に細分化したメッシュ、より厳しいソルバー
parameters.jsonSOC 初期化後の基本パラメータ。ステップ電流はプロトコル内に残ります
report.jsonプロトコル/チェックサム、パッケージバージョン、パラメータの供給元、数値比較、および終了条件
measurement-residuals.csv測定値が提供された場合の、予測値から測定値を引いた値と電流の不一致

参照ケースでは積分電荷が保存されました。2.5 A で 600 秒は 0.4166667 Ah となり、その後、等しい電荷で正味放電容量がゼロに戻りました。このケースでは電圧は Chen2020 の制限内に収まりました。許容誤差を厳しくすると電圧は約 1 マイクロボルト変化しました。メッシュを 20 点から 40 点に倍増すると約 2.17 mV 変化したため、サブミリボルトのメッシュ精度を主張するのは正当化されません。別の実際の DFN テストは、要求された 3.9 V のイベントで停止し、その電荷積分を検証しました。ネイティブテストでは、電荷カットオフ、実行不可能な放電、容量から電流への変換、および SOC を再初期化せずにエクスポートされた SOC 調整済みパラメータの再生も検証しています。固定された参照は数値的回帰の証拠であり、実測セルの検証ではありません。

主な参考文献

リンクされたリリースマニュアル、同梱のヘルパー、パラメータのシリアライズ、および参照内のオプションの DataLoader レシピは、PyBaMM 26.9.0.0 に対して検証されました。

コメント