グローバル設定
オプションのglobal キーの下で、プロトコル全体のグローバル設定を定義できます。
initial_temperature: 実験の開始温度(摂氏)。デフォルトは25。設計最適化で使用する場合、この値は自動的にケルビンに変換され、シミュレーションの初期温度と周囲温度の両方に適用されます。initial_state_type: セルの初期状態の定義方法。使用可能な値:soc_percentage:initial_state_valueを充電状態のパーセンテージ(0〜100)として解釈。voltage:initial_state_valueを開始電圧(ボルト)として解釈。
initial_state_value: 選択したタイプの初期値。resolution: シミュレーション出力の時間分解能(秒)。デフォルトは60。
安全制限
シミュレーションのオプションの安全制限を定義できます。これらのいずれかが超過すると、現在のシミュレーションステップが終了します。ステップの終了条件(以下参照)がグローバルの
safety_limit と同じ値を持つ場合、
安全制限が優先されます。シミュレーションステップ
各シミュレーションステップは、ステップの方向を定義する単一のキーを持つ辞書として定義されます。このキーの値は、ステップのパラメータを含む辞書です。 主要なステップ方向は以下の通りです:Rest: セルが休止状態。Charge: セルが充電中。Discharge: セルが放電中。Drive: ドライブサイクルステップ(以下参照)。EIS: 電気化学インピーダンス分光法ステップ(以下参照)。
ステップパラメータ
mode: ステップの制御モード(例:C-rate,Current,Power,Voltage)。Restでない限り必須。value: 制御モードのセットポイント。固定値または動的な式が使用可能。duration: ステップの最大持続時間(秒)。ends: 1つ以上のカットオフ条件のリスト。ステップにはdurationまたは少なくとも1つのends条件が必要。temperature:(オプション)この特定のステップの周囲温度(摂氏)。グローバル設定をオーバーライド。resolution:(オプション)この特定のステップの時間分解能。グローバル設定をオーバーライド。set_variable:(オプション)ステップ完了_後_に計算・設定する変数のリスト。note:(オプション)情報提供用の文字列。
input['...'] によるパラメータ化ステップ
value、duration、ends フィールドで input['...'] 構文を使用して、パラメータ化されたプロトコルを作成できます。プロトコル実行時に実際の値が提供されます。
resolution、global 設定、set_variable 式でも使用できます。完全な例については実験テンプレートを参照してください。
終了条件(ends)
ends 条件は、ステップがいつ終了すべきかを定義します。
- サポートされるタイプ:
Voltage,Current,C-rate,Capacity,Temperature(大文字小文字を区別しない)。 - サポートされる演算子:
<と>。 - 符号規則:
Current、C-rate、Capacityの終了条件では、常に正の値を指定してください。エンジンが内部の符号規則(例:充電時の負の電流)を自動的に処理します。VoltageとTemperatureについては、記述された通りの符号が使用されます。 - 微分終了条件: 変数の変化率に基づいて終了するには、
"d/dt(Type) operator value"の形式を使用します。
ステップの終了条件が最初から満たされている場合(例:既に4.2Vに達しているバッテリーを
充電しようとする場合)、そのステップはスキップされます。その終了条件上の
goto 遷移は実行されません。例:微分終了条件
微分ベースの終了条件は、信号の安定性に基づいてステップを終了するのに便利です。例えば、定電圧充電フェーズは電流が変化しなくなったとき(バッテリーが満充電であることを示す)に終了できます。例:CCCV 充電
EIS ステップ
EIS ステップは、セルの現在の状態で電気化学インピーダンス分光法の測定を実行します。
lower_frequency: EIS スイープの下限周波数(Hz)。upper_frequency: EIS スイープの上限周波数(Hz)。
例:基本的な EIS
30分間の休止期間後に EIS 測定を実行します。例:動的周波数を使用した EIS
変数を使用して周波数を動的に計算できます。制御ステップ
制御ステップはプログラマティックなロジックに使用され、シミュレーションは実行しません。変数の設定やgoto を使ったループの作成に最適です。
制御ステップのパラメータ
set_variable:(オプション)設定する変数のリスト(変数による動的動作を参照)。goto:(オプション)この制御ステップ実行後にジャンプするステップブロックの名前。これにより、変数の値に基づいて異なるステップに分岐するなど、非順次的な制御フローが可能になります。
"Increment cycle number": 内部サイクルカウンターをインクリメント。"End"または"Pause": シミュレーション全体を終了。
変数による動的動作
set_variable を使用して変数を定義し、動的で応答性のあるプロトコルを作成できます。
name: 変数の名前。VAR_で始まる必要があります。eval: 評価される Python 式。結果は数値でなければなりません。
eval 式では以下を使用できます:
- ユーザー入力:
input['...'] - 他の変数: 既に定義された任意の
VAR_変数。 - 特殊変数:
t(ステップ相対時間、秒単位)。 - シミュレーション結果: 前のステップの
Voltage、Currentなど。 - ヘルパー関数:
first(),last(),mean(),abs(),ifelse()など。
例:時間変化する制御
1時間かけてC-rateを0.1から1.1まで線形にランプアップします。例:条件付きロジック
ifelse ヘルパーを使用して条件付きロジックを作成します。この例では、前のステップの最終電圧に基づいて後続ステップの方向を定義します。
ステップブロック
ステップは名前付きブロックにグループ化できます。これはgoto ターゲットや、repeat キーワードを使用したステップシーケンスの繰り返しに不可欠です。
ブロックの名前は予約されたステップタイプ(
Charge、Discharge、Rest、
Control など)にすることはできません。ドライブサイクル
Python コードのsolve_protocol 関数にデータを渡し、YAML で参照することで、複雑なプロファイルにドライブサイクルを使用できます。
- Python 側: 値が2列の NumPy 配列(時間、値)である
drive_cycles辞書を渡します。 - YAML 側:
Drive方向を使用します。valueは辞書からのドライブサイクルの名前です。持続時間はデータの時間列で定義されます。
サブルーチン
サブルーチンは、Python コードで定義され YAML プロトコルから呼び出される再利用可能なステップシーケンスです。CCCV 充電のような標準的な手順に便利です。- Python 側:
solve_protocolにsubroutines辞書を渡します。値はステップのリストです。 - YAML 側: 実行するサブルーチンの名前を持つ
Subroutineステップタイプを使用します。
出力
プロトコルソルバーは、時間、電圧、電流、温度、サイクル番号、およびset_variable で定義されたカスタム変数を含むシミュレーション結果の pandas DataFrame を返します。