June 22, 2026
拡散のみのフィット向け GITTModel、pybamm のみのユーザー向けの ionworks-model ダウンロード、ルーティングされたすべてのリソース向けのアプリ URL ヘルパー、そして厳格なスキーマ - 設定契約の始まり
GITTModel — ファーストクラスの拡散のみモデル
GITTModel と HalfCellGITTModel が ionworkspipeline の
ファーストクラスモデル(ionworks_schema 側にも対応するクラス)と
なった。GITT フィットは圧倒的に SPMe ではなくこの軽量モデルを
使用する: 電極ごとの x 平均粒子拡散、単一のまとめられたオーム抵抗、
固定された OCP、そして Butler-Volmer 動力学、電解質ダイナミクス、
熱効果は一切なし。これまではこのモデルは案件ごとのリポジトリに
ほぼ同一のローカルコピーとして存在しており、API ルートからは
実行できなかった。組み込みモデルとして出荷することでサーバー側の
GITT フィットがアンロックされ、新しいハーフセル GITT フィット
テンプレートを支えるようになる。素の pybamm 向けに ionworks 定義モデルをダウンロード
ionworks-schema / ionworks-api のみを持ち、ライセンス付きの
ionworkspipeline パッケージを持たないユーザーが、ionworks 定義の
モデル(ECM、LumpedSPMR、MSMR モデル、GITTModel)を素の
pybamm でロードして実行できる形式で取得できるようになった。
新しい POST /discovery/ionworks_models/serialize エンドポイントが
(ライセンスが存在する)サーバー側でモデルをビルドし、ロード可能な
シリアライゼーションを返し、Python SDK 経由で公開される。ルーティングされたすべてのリソース向けのアプリ URL ヘルパー
SDK のclient.urls が単一の .measurement() メソッドから、
完全な Web アプリリンクビルダー一式 — project、model、
parameterized_model、optimization、pipeline、study、
simulation、cell_specification、cell_instance など — に
成長し、呼び出し側が ID から app.ionworks.com URL を手作業で
組み立てる必要がなくなった。ヘルパーは環境を認識し、クライアントが
構成されている API 環境に応じて正しいホストを導出する。より厳格で明確なパイプライン設定
ionworkspipeline におけるユーザー起因のエラーのほとんどが、
裸の ValueError / KeyError ではなく
UserConfigurationError(ValueError のサブクラス)を発生させる
ようになり、設定ミス — 誤ったフィールド型、範囲外の値、欠落した
キー — は内部エラーとしてオンコールにページングするのではなく、
ユーザーへの明確な Configuration error にルーティングされる。
これと並行して、進行中のスキーマ契約強化の取り組みが境界での
オプティマイザ設定の検証を開始した: ネイティブオプティマイザに
SciPy 専用のキーを渡すこと(例: DifferentialEvolution(popsize=5, maxiter=10))が、
これまでのように黙って飲み込まれるのではなく、送信時にハード
エラーになるようになった。Pipeline
Pipeline
改善
- 単一の計算構造 —
各目的を計算する変数にマッピングする
dict[str, list[str] | None]— が、目的および変数レベルの コストスコープの真実のソースとなり、コストごとのobjective_namesリストを置き換えた。これにより、重み付きWasserstein(位置シフト型 dQ/dV)と変数ごとのSSEが、 各コストが消費すべき変数に明示的にスコープされた状態で、 1 つの目的にわたって 1 つのMultiCostを共有できる。ElectrodeBalancingにはdQdU model axisオプションが 追加され、モデル自身のフルウィンドウ電圧軸で dQ/dV を出力する ため、重み付き Wasserstein がデータグリッド上ではなく電圧 でピークを揃えられる。 - 厳格なオプティマイザオプション検証: 不明な
algorithm_optionsキー(およびメソッド/オプションの不一致)は送信時に拒否され、AskTellOptimizerは不明なコンストラクタ kwargs を実行時に アクション可能なメッセージで拒否する — 以前の挙動では黙って 無視されていた。型付きオプションラッパー(CMAESOptions、PSOOptions、DEOptions、XNESOptions、BayesianOptimizationOptions、SOBEROptions、TuRBOOptions) は引き続きオプションを渡す推奨手段である。 - コストおよび設計空間にわたるフェイラーセンチネルが単一の
FAILURE_PENALTY定数に統一され、フィッティングと設計最適化の パスが乖離することがなくなり、ペナルティ値はサロゲート GP フィットに対してより条件が良くなった。
- ECM のクーロンカウント容量基準がセグメントごとに計算される ようになった。マルチ測定フィットでは以前は連結されたセグメント 境界をまたいで累積積分が蓄積され、容量推定値がほぼセグメント ごとのスループットの合計まで膨らみ、容量サニティチェック警告が 誤って発生していた。
- シンボリックな境界(例:
pybamm.Scalarの min とpybamm.Parameterの max)を持つgeometryがsimulation_kwargs経由で渡された場合、シミュレーションが ビルドされる前に pybamm オブジェクトに戻すデシリアライズが 行われるようになり、生の JSON のままソルバーに到達して 詰まらせることがなくなった。 parse_modelは、カスタムモデルに対してシリアライズされたgeometry、var_pts、spatial_methods、submesh_typesを 尊重し、pybamm がmodel.optionsからジオメトリを再構築する のを許す代わりに、インスタンスごとのデフォルトとしてアタッチ するようになった。
Python API
Python API
改善
client.model.download/serialize(上記で導入)は、 素の pybamm でロード可能な形式で ionworks 定義モデルを返す。client.urls(上記で導入)は、ルーティングされたすべての リソースに対して環境認識型のリンクを構築するようになった。