> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ionworks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 2026 06 22

<Update label="June 22, 2026" description="拡散のみのフィット向け 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)`）が、
  これまでのように黙って飲み込まれるのではなく、送信時にハード
  エラーになるようになった。

  <AccordionGroup>
    <Accordion title="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` からジオメトリを再構築する
        のを許す代わりに、インスタンスごとのデフォルトとしてアタッチ
        するようになった。
    </Accordion>

    <Accordion title="Python API">
      **改善**

      * `client.model.download` / `serialize`（上記で導入）は、
        素の pybamm でロード可能な形式で ionworks 定義モデルを返す。
      * `client.urls`（上記で導入）は、ルーティングされたすべての
        リソースに対して環境認識型のリンクを構築するようになった。
    </Accordion>
  </AccordionGroup>
</Update>
