メインコンテンツへスキップ
バッテリーパラメータ化は、入力パラメータを出力パラメータに変換する パイプライン要素 (pipeline elements) と、それらを連結した パイプライン (pipeline) というシンプルな抽象化に基づいています。この設計により、単純な計算から複雑なデータフィッティングまで、あらゆるパラメータ化ワークフローに柔軟に対応できます。

Pipeline Elements

基本となる構成要素はパイプライン要素です。任意のパイプライン要素は(空でもよい)パラメータ値の集合を受け取り、別のパラメータ値の集合を返します。各要素を順に呼び出すことで、完全なパラメータ集合が得られます。 パイプライン要素には 5 種類あります。
ここに挙げたパイプライン要素の種類および組み込みの計算は網羅的ではありません。詳細は API リファレンス を参照してください。
各要素は以下を行います。
  1. パラメータ辞書から入力パラメータを取得
  2. 計算を実行
  3. 後続の要素から利用可能な出力パラメータを返す
パイプラインをプログラムから組み立てて送信する方法については、Documentation タブの Pipelines → Overview を参照してください。

Naming conventions

Clear Naming

Use descriptive parameter names with units: "Electrode capacity [A.h]" not "cap"

Unit Consistency

Be explicit about unit conversions; use SI units internally

Built-in Calculations

Geometry & Capacity

Electrode geometry, mass, capacity, cyclable lithium, and microstructure

Thermal Properties

Heat capacity, Arrhenius temperature dependence, and thermal modeling

Piecewise Interpolants

Smooth piecewise functions for SOC and temperature-dependent parameters

パイプライン失敗への対処

パイプライン要素は順番に実行されます。ある要素が失敗すると、パイプラインはエラーを報告し、後続の要素は停止します。原因は要素に error_code として記録されます。

失敗したパイプラインの再投入

最初に失敗した要素の error_codeSUBMISSION_FAILED の場合、パイプラインを再投入できます。再投入はその要素をリセットし、パイプラインが停止した箇所から実行を再開します — 完了済みの要素は再実行されません。
パイプライン詳細ページを開きます。先頭の失敗が投入エラーの場合、ページ上部の失敗要素のアラートに Resubmit ボタンが表示されます。これをクリックすると、パイプラインをその場で再試行できます。
その他のエラーコード(タイムアウト、内部エラー、構成の問題)による失敗の場合は、再投入する代わりに、修正した構成で新しいパイプラインを作成してください。

Data Fitting

パイプラインの抽象化は、データフィッティング — モデル予測を実験データと比較することで未知パラメータを推定する処理 — も支えます。DataFit 要素はパイプラインを最適化ループでラップします。
  • 最適化器がパラメータ値を提案する
  • パイプラインがその値でモデルを実行する
  • 目的関数が予測とデータの一致度を評価する
  • ベストフィットのパラメータが得られるまで繰り返す

Data Fitting (theory)

Cost functions, identifiability, regularization, and other theory.

Data Fitting (how-to)

Configure and submit data fits with ionworks-schema + ionworks-api.

パイプラインのエラー

パイプライン要素が失敗すると、Studio はその要素を Failed 状態で表示し、エラーメッセージと機械可読な エラーコード を併せて示します。パイプライン一覧でステータスチップにカーソルを合わせるとコードが表示され、失敗した要素を展開すると完全なメッセージを確認できます。 同じフィールドは、失敗したジョブやパイプライン要素の API レスポンスでも返されます:

エラーコード

error_code フィールドを使うと、エラー文字列を解析することなく失敗の種類に応じて分岐できます:

Python で設定エラーをキャッチする

ionworkspipeline パッケージは ParameterNotFoundError を公開しているため、トレースバックやメッセージ文字列を調べることなく、パラメータの欠落による失敗をキャッチできます。KeyError を継承しているため、既存の except KeyError ハンドラもそのまま動作します。
ParameterNotFoundErrorKeyError を継承しており、独自の属性は持ちません。メッセージは str(err) または err.args[0] で取得でき、pybamm のパラメータ参照が生成する完全なテキスト(例: "'Negative electrode loading [A.h.cm-2]' not found. Best matches are [...]")が格納されます。欠落しているキー名と近い候補が示されるため、診断 UI の構築やパラメータセットの自動修正を行う際に便利です。 パイプライン/データフィットのパース時に投げられるもう 1 つの設定エラー UserConfigurationError は、パッケージのルートには再エクスポートされていません — ルートで公開されているのは ParameterNotFoundError のみです。直接キャッチする必要がある場合はサブモジュールからインポートしてください: from ionworkspipeline.exceptions import UserConfigurationError。これは ValueError を継承しているため、except ValueError ハンドラでもキャッチできます。 プロトコルエンジン側の失敗については、ionworks_ucpProtocolConfigurationError を投げます。これは UCP プロトコルが記述どおりにシミュレーションできない場合 — 例えば、名前で参照したドライブサイクルが供給されていない、goto ターゲットが解決できない、終了条件の文字列がパースできない、初期 SOC が [0, 100] を外れている、SetVar 式が未初期化の変数を参照しているなど — に発生します。この例外は ValueError を継承しているため、既存の except ValueError ハンドラはそのまま動作します。ProtocolConfigurationError を直接キャッチすれば、ユーザー側で修正可能なプロトコルの問題と、内部のソルバーバグを区別できます。
バックエンドのジョブは ProtocolConfigurationErrorINTERNAL_ERROR ではなく CONFIGURATION_ERROR コードにルーティングし、そのメッセージをそのままユーザーに表示します。ローカルでキャッチするのと同じ例外が、API 経由で確認する失敗したパイプライン要素にも反映されます。