フェーズ6(任意)拡張 — 熱連成・劣化(SEI)・パラメータ同定

フェーズ5までで、DFN モデルの導出・実装・検証という当初の目標は達成した。 この最終章では「その先」に広がる3つの世界 — 温度との連成劣化(寿命)のモデリングパラメータ同定 — への入口を、それぞれ基礎から丁寧に案内する。 3つとも、DFN を実務や研究で使うなら遅かれ早かれ必ず向き合うテーマである。 完全な導出をこの章だけで済ませることはできないので、 どこまでを自分の手で導出し、どこからが文献参照になるのかを随所で明示する。

この章の内容
  1. 6.1 熱連成 — 温度と電池は切り離せない
  2. 6.2 劣化 — SEI 成長を例に
  3. 6.3 パラメータ同定 — DFN 実用最大の壁
  4. 6.4 さらに学ぶには
  5. 章末: 理解度チェックと学習の完了

6.1 熱連成 — 温度と電池は切り離せない

6.1.1 なぜ温度が重要か

ここまでの章では温度 $T$ [K] を定数(298.15 K)として扱ってきた。 しかし実際のセルでは、放電すれば発熱して温度が上がり、温度が上がれば DFN に登場するほとんどの物性値が変わる。具体的には:

つまり「電気化学 → 発熱 → 温度 → 物性 → 電気化学」というループが常に回っている。 このループを閉じるのが熱連成(thermal coupling)である。 まずはいちばん簡単で、実務でも最もよく使われる 集中(lumped)熱モデルをエネルギー保存則から導出する。

6.1.2 集中熱モデルの導出

仮定と近似

新しく登場する記号を定義する。

$m$:セル質量 [kg] — 21700 セルでは約 0.068 kg。
$c_p$:セルの比熱 [J/(kg·K)] — 巻回体の実効値で約 1000 J/(kg·K)。
$A_{\mathrm{surf}}$:セルの放熱表面積 [m²] — 21700 円筒(直径 21 mm × 高さ 70 mm)で約 $5.3\times10^{-3}$ m²。電極面積 $A_{\mathrm{cell}}$ [m²](= params.js の A_cell = 0.1027 m²)とは別物なので注意。
$h$:表面熱伝達係数 [W/(m²·K)] — 自然対流で 2〜10、強制空冷で 10〜100、液冷ではさらに大きい。
$T_{\mathrm{amb}}$:周囲温度 [K]。
$\dot{Q}_{\mathrm{gen}}$:セル内部の総発熱率 [W]。

導出:エネルギー保存 → 集中熱モデル

(1)

セルを1つの熱的な系とみなす。系の顕熱(内部エネルギーの温度依存部分)は、 基準温度 $T_{\mathrm{ref}}$ からの温度差に比例する:

$$E(t) = m\, c_p\, \bigl(T(t) - T_{\mathrm{ref}}\bigr)$$

$c_p$ 一定の仮定より、その時間変化率は

$$\frac{\mathrm{d}E}{\mathrm{d}t} = m\, c_p\, \frac{\mathrm{d}T}{\mathrm{d}t}$$
(2)

系に入る熱と出る熱を数える。入るのは内部発熱 $\dot{Q}_{\mathrm{gen}}$。 出るのはニュートンの冷却則による表面放熱で、温度差に比例する:

$$\dot{Q}_{\mathrm{out}} = h\, A_{\mathrm{surf}}\, \bigl(T - T_{\mathrm{amb}}\bigr)$$

$T > T_{\mathrm{amb}}$ なら熱が逃げ($\dot{Q}_{\mathrm{out}} > 0$)、 逆なら周囲から温められる。

(3)

エネルギー保存則「たまる率 = 入る率 − 出る率」をそのまま書くと、 集中熱モデルの支配方程式になる:

$$m\, c_p\, \frac{\mathrm{d}T}{\mathrm{d}t} = \dot{Q}_{\mathrm{gen}} - h\, A_{\mathrm{surf}}\,\bigl(T - T_{\mathrm{amb}}\bigr) \tag{6.1}$$
(4)

$\dot{Q}_{\mathrm{gen}}$ が一定なら式 (6.1) は1階線形 ODE で、定常温度と時定数は

$$T_{\infty} = T_{\mathrm{amb}} + \frac{\dot{Q}_{\mathrm{gen}}}{h A_{\mathrm{surf}}}, \qquad \tau_{\mathrm{th}} = \frac{m\, c_p}{h A_{\mathrm{surf}}}$$

数字を入れてみる:$m c_p = 0.068 \times 1000 = 68$ J/K、 $h = 10$ W/(m²·K)、$A_{\mathrm{surf}} = 5.3\times10^{-3}$ m² なら $\tau_{\mathrm{th}} = 68 / 0.053 \approx 1280$ s ≈ 21 分。 1C 放電(1 時間)なら温度はほぼ定常に達するが、 5C 放電(12 分)では過渡状態のまま終わる。 「放電時間と $\tau_{\mathrm{th}}$ の大小」が温度履歴の形を決める。

6.1.3 発熱項の内訳 — 不可逆熱と可逆熱

式 (6.1) の心臓部は $\dot{Q}_{\mathrm{gen}}$ である。 電池の発熱は大きく不可逆熱(irreversible heat)可逆熱(reversible heat, エントロピー熱)に分かれる。 順に導出する。

(a) 不可逆熱:$\dot{Q}_{\mathrm{irr}} = I\,A_{\mathrm{cell}}\,(V_{\mathrm{OCV}} - V)$

まず記号をひとつ定義する。

$V_{\mathrm{OCV}} = U_p(\bar\theta_p) - U_n(\bar\theta_n)$: その瞬間の平均化学量論 $\bar\theta_\pm$(粒子内平均の充填率)で評価した セルの開回路電圧 [V]。電流を切って十分緩和したときに落ち着く電圧である。

放電中の端子電圧 $V$ は $V_{\mathrm{OCV}}$ より低い。 その差 $V_{\mathrm{OCV}} - V$ が「損失の合計」に一致することを、 電圧の分解(フェーズ2・3・5 で繰り返し使った考え方)で示す。 簡単のため、各電極を代表的な反応点1点で代表し(SPM と同じ扱い)、 固相の電子伝導によるオーム損は無視する。

導出:各損失の和 = $V_{\mathrm{OCV}} - V$

(1)

端子電圧の定義(記号規約 §4)から出発する:

$$V = \phi_s(L) - \phi_s(0)$$

負極側の反応点を $x_n$、正極側の反応点を $x_p$ とし、 固相オーム損を無視するので $\phi_s(L) = \phi_s(x_p)$、$\phi_s(0) = \phi_s(x_n)$。

(2)

各反応点で液相電位 $\phi_e$ を足して引く(値は変わらない):

$$V = \bigl[\phi_s(x_p) - \phi_e(x_p)\bigr] - \bigl[\phi_s(x_n) - \phi_e(x_n)\bigr] + \bigl[\phi_e(x_p) - \phi_e(x_n)\bigr]$$

最後の角括弧を $\Delta\phi_e := \phi_e(x_p) - \phi_e(x_n)$ と書く。 これは電解液中のオーム降下と濃度分極を合わせた項である。

(3)

過電圧の定義 $\eta = \phi_s - \phi_e - U(\theta)$ を各電極で使うと $\phi_s - \phi_e = U(\theta_{\mathrm{surf}}) + \eta$ だから:

$$V = U_p(\theta_{p,\mathrm{surf}}) + \eta_p - U_n(\theta_{n,\mathrm{surf}}) - \eta_n + \Delta\phi_e$$
(4)

OCP は表面充填率で評価されている。平均値との差を分離するため、 固相濃度過電圧 $\eta_{\mathrm{conc}} := U(\theta_{\mathrm{surf}}) - U(\bar\theta)$ を定義して $U(\theta_{\mathrm{surf}}) = U(\bar\theta) + \eta_{\mathrm{conc}}$ と書き直す:

$$V = \underbrace{U_p(\bar\theta_p) - U_n(\bar\theta_n)}_{=\,V_{\mathrm{OCV}}} + \eta_{\mathrm{conc},p} - \eta_{\mathrm{conc},n} + \eta_p - \eta_n + \Delta\phi_e$$
(5)

移項すれば、求めたい形になる:

$$V_{\mathrm{OCV}} - V = (-\eta_p) + \eta_n + (-\Delta\phi_e) + (-\eta_{\mathrm{conc},p}) + \eta_{\mathrm{conc},n}$$

放電時($I>0$)の各項の符号を確認する:

放電時の符号理由
$-\eta_p$$> 0$正極は還元反応($j<0$)なので $\eta_p < 0$
$+\eta_n$$> 0$負極は酸化反応($j>0$)なので $\eta_n > 0$
$-\Delta\phi_e$$> 0$電流の向きに沿って $\phi_e$ は下がるので $\Delta\phi_e < 0$
$-\eta_{\mathrm{conc},p}$$> 0$正極表面は Li が過剰($\theta_{\mathrm{surf}} > \bar\theta$)で $U_p$ が下がる
$+\eta_{\mathrm{conc},n}$$> 0$負極表面は Li が欠乏($\theta_{\mathrm{surf}} < \bar\theta$)で $U_n$ が上がる

すべて正、つまり $V_{\mathrm{OCV}} - V \ge 0$ であり、 これは「損失(分極)の合計」にほかならない。

(6)

電力 = 電流 × 電圧。セル電流は $I A_{\mathrm{cell}}$ [A] ($I$ は電流密度 [A/m²]、$A_{\mathrm{cell}}$ は電極面積 [m²])なので、 損失電圧に電流を掛けたものが不可逆な発熱率になる:

$$\dot{Q}_{\mathrm{irr}} = I\, A_{\mathrm{cell}}\,\bigl(V_{\mathrm{OCV}} - V\bigr) \;\ge 0 \tag{6.2}$$

放電でも充電でも($I$ と $V_{\mathrm{OCV}}-V$ の符号が同時に反転するので) $\dot{Q}_{\mathrm{irr}}$ は常に非負。摩擦熱と同じで、向きによらず必ず発熱する。

物理的な意味

式 (6.2) は「取り出せたはずの電気エネルギー($I A_{\mathrm{cell}} V_{\mathrm{OCV}}$)と 実際に取り出せたエネルギー($I A_{\mathrm{cell}} V$)の差が熱になる」と読める。 反応の活性化(過電圧)、イオンの移動(電解液オーム損)、 粒子内拡散の遅れ(濃度過電圧)—— フェーズ2〜5 で1つずつ導出してきた「電圧を下げる犯人たち」は、 全員そのまま「発熱源」でもある。

(b) 可逆熱:エントロピー項

もうひとつ、損失とは無関係に出入りする熱がある。 電気化学反応そのものが持つエントロピー変化に由来する可逆熱である。 熱力学の基本関係式から1ステップずつ導く。

$\partial U/\partial T$:OCP の温度係数(エントロピー係数)[V/K] — 実測で ±0.1〜0.5 mV/K 程度。充填率 $\theta$ に強く依存し、符号も変わる。

導出:可逆熱 $\dot{Q}_{\mathrm{rev}}$

(1)

セル全体の反応(Li 1 mol が負極から正極へ移る)のギブズエネルギー変化は、 平衡電圧 $V_{\mathrm{OCV}}$ と $$\Delta G = -F\, V_{\mathrm{OCV}}$$ で結ばれる($n = 1$ 電子反応、$F$:ファラデー定数 [C/mol])。 これは「可逆に取り出せる最大仕事 = 電気仕事」という熱力学の基本事実である。

(2)

熱力学の関係式 $\Delta S = -\partial(\Delta G)/\partial T$ に (1) を代入すると、 反応エントロピーが OCP の温度係数で書ける:

$$\Delta S = F\, \frac{\partial V_{\mathrm{OCV}}}{\partial T}$$
(3)

放電電流 $I A_{\mathrm{cell}}$ [A] が流れているとき、 反応は毎秒 $\dot{n} = I A_{\mathrm{cell}}/F$ [mol/s] だけ進む。 等温で反応が $\Delta S$ だけエントロピーを変えるとき、系は周囲と $T \Delta S$ [J/mol] の熱をやり取りする(吸熱が正)。

(4)

「発熱率」を正にとる流儀に合わせると、可逆熱の発生率は $\dot{Q}_{\mathrm{rev}} = -T \Delta S \cdot \dot{n}$。(2)(3) を代入して:

$$\dot{Q}_{\mathrm{rev}} = -\,I\, A_{\mathrm{cell}}\, T\, \frac{\partial V_{\mathrm{OCV}}}{\partial T} = I\, A_{\mathrm{cell}}\, T\, \left(\frac{\partial U_n}{\partial T} - \frac{\partial U_p}{\partial T}\right) \tag{6.3}$$
(5)

電極ごと・界面ごとの局所形も確認しておく。本サイトの符号規約 (酸化方向の界面電流 $j>0$)では、単位体積あたりの可逆熱は $$\dot{q}_{\mathrm{rev}} = a\, j\, T\, \frac{\partial U}{\partial T} \quad [\mathrm{W/m^3}]$$ と書ける。放電時は負極で $a_n L_n j_n = I$、正極で $a_p L_p j_p = -I$ なので、 両電極の寄与を足し合わせると $I A_{\mathrm{cell}} T (\partial U_n/\partial T - \partial U_p/\partial T)$ となり、式 (6.3) と一致する。整合が取れた。

物理的な意味:可逆熱の符号

不可逆熱と違い、可逆熱は電流の向きで符号が反転する (式 (6.3) は $I$ に比例)。放電で発熱するセルは充電では同じ分だけ吸熱し、 1サイクル平均ではほぼゼロになる。 また電流に1乗で比例するため($\dot{Q}_{\mathrm{irr}}$ はおおよそ $I^2$ に比例)、 低レートでは可逆熱が支配的になる。 C/10 で放電すると温度がわずかに下がる区間が観測されることさえある —— これは $\partial U/\partial T$ の符号が $\theta$ とともに変わるためである。

ここから先は文献参照レベル

本節の熱源の導出は「平均組成の OCV」と「代表反応点」を使った簡略版である。 厳密には、局所の反応熱・オーム熱・混合熱(heat of mixing) (濃度勾配が緩和するときに出入りする熱)を体積積分する必要がある。 完全な定式化は Bernardi, Pawlikowski & Newman (1985) と Thomas & Newman (2003) が標準文献である。 また、文献では電流の符号規約(充電正か放電正か)が本サイトと逆のことがあり、 可逆熱が $+I T\,\partial U/\partial T$ と書かれている場合もある。 式の形ではなく「放電時にどちら向きか」で必ず確認すること。

6.1.4 アレニウス則 — 物性の温度依存

温度が物性に効く経路は、ほとんどの場合アレニウス則(Arrhenius law)で表す。 反応や拡散は「エネルギー障壁 $E_a$ を熱ゆらぎで乗り越える」過程なので、 その速さはボルツマン因子に比例する:

$E_a$:活性化エネルギー [J/mol] — 障壁の高さ。大きいほど温度に敏感。
$$k(T) = A_{\mathrm{freq}} \exp\!\left(-\frac{E_a}{R T}\right), \qquad D_s(T) = A_{\mathrm{freq}}' \exp\!\left(-\frac{E_a'}{R T}\right)$$

$A_{\mathrm{freq}}$ は頻度因子(前指数因子)[単位は対象量と同じ] である (面積 $A$ と紛らわしいので添字を付けた)。 実用上は頻度因子を消去して、基準温度 $T_{\mathrm{ref}}$ の値からの倍率 で書く形が便利で、DFN 実装でもこの形を使う:

$$\psi(T) = \psi(T_{\mathrm{ref}})\, \exp\!\left[\frac{E_a}{R}\left(\frac{1}{T_{\mathrm{ref}}} - \frac{1}{T}\right)\right], \qquad \psi \in \{D_s,\ k,\ D_e,\ \kappa,\ \dots\} \tag{6.4}$$

$T > T_{\mathrm{ref}}$ なら指数の中身は正で $\psi$ は増える(速くなる)。 活性化エネルギーの目安(文献値はばらつくので桁感のみ): $D_s$ で 30〜50 kJ/mol、$k$ で 30〜60 kJ/mol、 電解液輸送($D_e$, $\kappa$)で 10〜20 kJ/mol、 SEI 成長などの副反応で 50〜80 kJ/mol。 $E_a = 30$ kJ/mol なら 25 °C → 35 °C で約 1.5 倍、 $E_a = 60$ kJ/mol なら約 2.2 倍になる。

温度と性能のフィードバックループ

アレニウス則があるせいで、温度は一方通行の「出力」ではなく、 ループの一部になる。放電中を考えると:

発熱率が温度の指数関数で増えるのに対し、冷却率 $h A_{\mathrm{surf}} (T - T_{\mathrm{amb}})$ は温度の1次関数でしか増えない。 両者の交点の有無で運命が分かれる(下の模式図、Semenov 線図と呼ばれる):

温度 T 熱流 [W] 発熱(指数的) T_amb 強い冷却(h 大) 臨界(接する) 弱い冷却(h 小) 安定点 接点 交点なし → 暴走

冷却線が発熱曲線と交わればそこが安定な動作温度になる(青)。 冷却を弱めていくと2線はやがて接し(緑)、それより弱い冷却では交点が消えて 温度上昇が止まらない(橙)——これが熱暴走の最も単純な描像である。 実際の熱暴走は SEI 分解(約 80〜120 °C)→ セパレータ溶融 → 正極の酸素放出、 と連鎖する多段プロセスで、その定量モデルは文献参照レベルである (総説として Feng et al. 2018 など)。

6.1.5 DFN との連成のしかた

DFN と集中熱モデルの連成は、時間ステップごとに交互に解くのが標準的である (演算子分割 / staggered scheme):

  1. 現在の温度 $T_k$ で物性値 $D_s(T_k),\ k(T_k),\ D_e(T_k),\ \kappa(T_k)$ を式 (6.4) で評価する。Butler–Volmer 式の指数の $RT$ も $T_k$ を使う。
  2. その物性値で DFN の1ステップ(フェーズ4・5 の方法)を解き、 $V$, $\eta$, $j$ などを得る。
  3. 発熱率を計算する:$\dot{Q}_{\mathrm{gen}} = \dot{Q}_{\mathrm{irr}} + \dot{Q}_{\mathrm{rev}}$ (式 (6.2)(6.3)。より厳密には局所発熱の体積積分)。
  4. 式 (6.1) を1ステップ積分して $T_{k+1}$ を得る(下のデモでは RK4 を使う)。
  5. 1 に戻る。

熱時定数(〜数百秒)は電気化学の最速時間スケール(〜ミリ秒)よりずっと遅いので、 この分割で精度上の問題はまず起きない。 セル内温度分布まで欲しい場合は、集中モデルの代わりに 1D〜3D の熱伝導方程式を解き、 局所発熱密度を右辺に入れる(いわゆる P2D+熱 や 3D 熱連成)。 そのためのパラメータ一式は O'Regan et al. (2022)(LG M50 の熱物性)が整備している。

図6.1 — 集中熱モデル:C レートと冷却で温度はどう走るか

簡易セルモデル $V = V_{\mathrm{OCV}}(\mathrm{SOC}) - I_{\mathrm{cell}} R_{\mathrm{int}}(T)$ と式 (6.1) を RK4 で連成した放電シミュレーション。 内部抵抗はアレニウス型 $R_{\mathrm{int}}(T) = R_{\mathrm{ref}} \exp[\tfrac{E_a}{R}(\tfrac{1}{T} - \tfrac{1}{T_{\mathrm{ref}}})]$ ($R_{\mathrm{ref}} = 32$ mΩ, $E_a = 30$ kJ/mol)、発熱は不可逆熱 $I_{\mathrm{cell}}^2 R_{\mathrm{int}}$ のみ(可逆熱は省略)。 見どころ:(1) C レートを上げ、冷却係数 $h$ を下げると温度が走る (5C・$h=2$ で 80 °C 超)。(2) 温まると $R_{\mathrm{int}}$ が下がるので、 放電中盤に電圧が持ち直す「谷→回復」の形が現れる。 (3) 周囲温度 0 °C で 5C にすると、冷えた内部抵抗が大きすぎて 開始直後に下限電圧 2.5 V を割り、ほとんど放電できない (低温大電流が難しい理由)。 注意:これは副反応の発熱を含まない単純モデルであり、 発火・熱暴走のシミュレーションではない。

計算中…

6.2 劣化 — SEI 成長を例に

6.2.1 劣化モードの分類

「電池が劣化する」という現象は、DFN の言葉では モデルのパラメータや状態が時間とともに変わることとして表現できる。 劣化機構は無数にあるが、電気的な現れ方で整理すると3つに集約される (この分類は Birkl et al. 2017 による整理が標準的):

劣化モード何が減る/増えるか代表的な機構DFN での表現
LLI
(Loss of Lithium Inventory,
リチウム在庫損失)
サイクルに使える Li の総量が減る SEI の成長、Li 析出(plating)、電解液との副反応 $\bar\theta_n,\ \bar\theta_p$ の対応関係(スライド)がずれる
LAM
(Loss of Active Material,
活物質損失)
Li を貯蔵できるサイトが減る 粒子割れ、集電体からの剥離、正極の構造変化・遷移金属溶出 $\varepsilon_s$(ひいては $a$, 容量)の減少
抵抗増加
(インピーダンス上昇)
同じ電流での電圧損失が増える SEI/CEI の肥厚、導電ネットワークの断裂、電解液の枯渇 界面被膜抵抗の追加、$\kappa^{\mathrm{eff}},\ \sigma^{\mathrm{eff}}$ の低下

実セルの容量低下はこれらの合成である。診断には、低レート放電カーブの微分 ($\mathrm{d}V/\mathrm{d}Q$ 解析)などで「どのモードがどれだけ効いたか」を 切り分ける手法が使われる(文献参照レベル)。 本節ではこの中で最も普遍的で、かつ数式で最後まで追える SEI 成長による LLI を掘り下げる。

6.2.2 SEI とは何か

黒鉛負極の動作電位(Li/Li⁺ 基準で 0.05〜0.2 V 程度)は、 電解液(有機カーボネート系)が電気化学的に安定でいられる下限(約 1 V)より低い。 つまり負極表面では電解液の還元分解が熱力学的に常に起こりうる。 最初の充電で分解生成物が負極表面に堆積してできる薄膜が SEI(Solid Electrolyte Interphase, 固体電解質界面被膜)である。

黒鉛粒子 (負極) SEI(内層/外層) 電解液 Li⁺(挿入・脱離は SEI 越し) 溶媒(EC など)が膜内を拡散 EC + 2Li⁺ + 2e⁻ → SEI(膜が成長) δ

6.2.3 成長則の導出 — なぜ膜厚は √t で増えるのか

仮定と近似

記号の定義:

$\delta$:SEI 膜厚 [m] — 化成直後で数 nm。
$j_{\mathrm{SEI}}$:副反応の界面電流密度 [A/m²] — 還元(Li 消費)なので符号は負($j_{\mathrm{SEI}} < 0$)。
$c_{\mathrm{sol}}$:膜内の溶媒濃度 [mol/m³]。バルク値は $c_{\mathrm{sol}}^0$(EC でおよそ数 10³ mol/m³)。
$D_{\mathrm{sol}}$:SEI 膜内の溶媒拡散係数 [m²/s] — 非常に小さい($10^{-18}$〜$10^{-20}$ m²/s のオーダーと推定されている)。
$\bar{V}_{\mathrm{SEI}}$:SEI のモル体積 [m³/mol] — 代表値 $9.585\times10^{-5}$ m³/mol。
$U_{\mathrm{SEI}}$:副反応の平衡電位 [V] — Li/Li⁺ 基準で約 0.4 V。

導出:Tafel 反応 + 膜内拡散 → √t 則

(1)

反応速度(Tafel 式)。 副反応の過電圧は $\eta_{\mathrm{SEI}} = \phi_s - \phi_e - U_{\mathrm{SEI}}$。 黒鉛の動作電位($\phi_s - \phi_e \approx 0.1$ V vs Li/Li⁺)は $U_{\mathrm{SEI}} \approx 0.4$ V よりずっと低いので、 $\eta_{\mathrm{SEI}}$ は常に大きく負であり、Butler–Volmer 式の酸化側の指数項は 無視できる。残る還元側だけを書いたのが Tafel 式である:

$$j_{\mathrm{SEI}} = -\,i_{0,\mathrm{SEI}}\,\frac{c_{\mathrm{sol,surf}}}{c_{\mathrm{sol}}^0}\, \exp\!\left(-\frac{\alpha_c F \eta_{\mathrm{SEI}}}{R T}\right)$$

反応物である溶媒の表面濃度 $c_{\mathrm{sol,surf}}$(粒子表面、膜の内側)に 比例させてある。$i_{0,\mathrm{SEI}}$ [A/m²] は副反応の交換電流密度。

(2)

膜の成長速度。 2 電子で SEI 1 分子ができるから、単位面積あたりの SEI 生成率は $|j_{\mathrm{SEI}}|/(2F)$ [mol/(m²·s)]。生成物の体積がすべて膜厚になるので:

$$\frac{\mathrm{d}\delta}{\mathrm{d}t} = \bar{V}_{\mathrm{SEI}}\,\frac{|j_{\mathrm{SEI}}|}{2F} \tag{6.5}$$
(3)

膜内の溶媒拡散。 溶媒は電解液側(濃度 $c_{\mathrm{sol}}^0$)から膜を通って反応面 (濃度 $c_{\mathrm{sol,surf}}$)へ運ばれる。擬定常なら濃度分布は直線で、 流束はフィックの法則から:

$$N_{\mathrm{sol}} = D_{\mathrm{sol}}\,\frac{c_{\mathrm{sol}}^0 - c_{\mathrm{sol,surf}}}{\delta} \quad [\mathrm{mol/(m^2\,s)}]$$

定常状態では「供給 = 消費」なので、SEI 1 分子につき溶媒 1 分子を使うことから:

$$N_{\mathrm{sol}} = \frac{|j_{\mathrm{SEI}}|}{2F}$$
(4)

2つの極限。(1) と (3) は直列につながった2つの「抵抗」 (反応の遅さと拡散の遅さ)である。 膜が薄いうち($\delta$ 小)は拡散が楽なので反応律速: $c_{\mathrm{sol,surf}} \approx c_{\mathrm{sol}}^0$ で $|j_{\mathrm{SEI}}|$ はほぼ一定、 式 (6.5) より $\delta \propto t$(線形成長)。 膜が厚くなると拡散が追いつかなくなり拡散律速に移行する: $c_{\mathrm{sol,surf}} \to 0$ となり、

$$\frac{|j_{\mathrm{SEI}}|}{2F} = N_{\mathrm{sol}} \to D_{\mathrm{sol}}\,\frac{c_{\mathrm{sol}}^0}{\delta}$$
(5)

拡散律速の微分方程式。(4) を式 (6.5) に代入すると:

$$\frac{\mathrm{d}\delta}{\mathrm{d}t} = \frac{\bar{V}_{\mathrm{SEI}}\, D_{\mathrm{sol}}\, c_{\mathrm{sol}}^0}{\delta} = \frac{K}{\delta}, \qquad K := \bar{V}_{\mathrm{SEI}}\, D_{\mathrm{sol}}\, c_{\mathrm{sol}}^0\ [\mathrm{m^2/s}] \tag{6.6}$$

成長速度が膜厚に反比例する —— 厚くなるほど自分で自分の成長を妨げる。

(6)

変数分離で解く。式 (6.6) の両辺に $\delta$ を掛けて $t$ で積分する。初期条件は $\delta(0) = \delta_0$(化成直後の膜厚):

$$\delta\,\mathrm{d}\delta = K\,\mathrm{d}t \;\;\Longrightarrow\;\; \int_{\delta_0}^{\delta} \delta'\,\mathrm{d}\delta' = \int_0^t K\,\mathrm{d}t' \;\;\Longrightarrow\;\; \frac{\delta^2 - \delta_0^2}{2} = K t$$

$\delta$ について解けば:

$$\delta(t) = \sqrt{\delta_0^2 + 2Kt} \;\;\xrightarrow{\ t \gg \delta_0^2/2K\ }\;\; \delta \approx \sqrt{2Kt} \ \propto\ \sqrt{t} \tag{6.7}$$
(7)

容量損失も √t。 SEI 1 分子あたり Li が 2 個閉じ込められる。負極全体の活物質表面積は $a_n L_n A_{\mathrm{cell}}$ [m²] なので、失われる電荷(= LLI)は:

$$Q_{\mathrm{loss}}(t) = 2F\,\frac{a_n L_n A_{\mathrm{cell}}}{\bar{V}_{\mathrm{SEI}}}\, \bigl(\delta(t) - \delta_0\bigr) \ \propto\ \sqrt{t} \quad [\mathrm{C}]$$

膜厚が √t なら容量損失も √t。 「使い始めは減りが速く、だんだん減りにくくなる」という 実測でよく見る形がこれで説明できる。

補足:反応律速と拡散律速を同時に扱う(混合律速の厳密解)

反応速度定数を $k_f$ [m/s] とおいて消費率を $k_f c_{\mathrm{sol,surf}}$ と書くと、 擬定常条件 $k_f c_{\mathrm{sol,surf}} = D_{\mathrm{sol}}(c_{\mathrm{sol}}^0 - c_{\mathrm{sol,surf}})/\delta$ から表面濃度が解けて $c_{\mathrm{sol,surf}} = c_{\mathrm{sol}}^0 D_{\mathrm{sol}} / (D_{\mathrm{sol}} + k_f \delta)$。 これを成長式に入れると $$\frac{\mathrm{d}\delta}{\mathrm{d}t} = \frac{\bar{V}_{\mathrm{SEI}}\, k_f\, D_{\mathrm{sol}}\, c_{\mathrm{sol}}^0} {D_{\mathrm{sol}} + k_f \delta}$$ となり、変数分離すると陰関数解 $$t = \frac{\delta - \delta_0}{\bar{V}_{\mathrm{SEI}} k_f c_{\mathrm{sol}}^0} + \frac{\delta^2 - \delta_0^2}{2 \bar{V}_{\mathrm{SEI}} D_{\mathrm{sol}} c_{\mathrm{sol}}^0}$$ が得られる。第1項(線形)が反応律速、第2項(2次)が拡散律速の寄与で、 時間が経つほど必ず第2項が勝つ。つまりどんな SEI もいずれ √t 成長に漸近する

物理的な意味:√t は「自己不動態化」の署名

√t 則の本質は「生成物が反応物の供給路を塞ぐ」ことにある。 同じ数学は金属の酸化被膜成長(放物線則)や、シリコンの熱酸化(Deal–Grove モデル) にも現れる。逆に言えば、実測の容量退化が √t から外れて加速し始めたら (いわゆる「ニー(knee)」)、SEI 以外の機構 —— Li 析出や粒子割れによる 新生表面の露出など —— が動き出した兆候と読める。

6.2.4 サイクル数 vs 容量の典型曲線

サイクル試験では横軸がサイクル数 $N$ になるが、SEI 成長が支配的なら 劣化を進める実質的な変数は「経過時間(と温度・SOC)」なので、 1サイクルあたりの時間 $t_{\mathrm{cyc}}$ を使って $t = N\, t_{\mathrm{cyc}}$ と読み替えれば式 (6.7) がそのまま使える:容量維持率は $1 - \beta\sqrt{N}$ 型の曲線になる($\beta$ は温度・DOD に依存する定数)。 下の図6.2 でこの曲線を操作できる。 実セルでは √N 劣化が数百〜数千サイクル続いたあと、 ニーで急落するパターンが多い(ニーの機構分類は Attia et al. 2022 参照)。

6.2.5 DFN への組み込み方

SEI 副反応を DFN に組み込むには、負極の界面条件を次のように拡張する。 界面を流れる総電流密度を、挿入反応(intercalation)と副反応の和にする:

$$j_{\mathrm{tot}} = j_{\mathrm{int}} + j_{\mathrm{SEI}} \tag{6.8}$$

それぞれの構成則は:

$$j_{\mathrm{int}} = i_0\left[ \exp\!\left(\frac{\alpha_a F \eta}{R T}\right) - \exp\!\left(-\frac{\alpha_c F \eta}{R T}\right)\right], \qquad j_{\mathrm{SEI}} = -\,i_{0,\mathrm{SEI}}\,\frac{c_{\mathrm{sol,surf}}}{c_{\mathrm{sol}}^0} \exp\!\left(-\frac{\alpha_c F \eta_{\mathrm{SEI}}}{R T}\right)$$

ここで両方の過電圧に SEI 膜のオーム損を含める: $\eta = \phi_s - \phi_e - U(\theta) - j_{\mathrm{tot}} R_{\mathrm{film}}$、 $\eta_{\mathrm{SEI}} = \phi_s - \phi_e - U_{\mathrm{SEI}} - j_{\mathrm{tot}} R_{\mathrm{film}}$。

$R_{\mathrm{film}} = \delta / \kappa_{\mathrm{SEI}}$:SEI 膜の面積抵抗 [Ω·m²]。$\kappa_{\mathrm{SEI}}$ は膜のイオン伝導率 [S/m]。膜が厚くなるほど抵抗が増える (=「抵抗増加」モードが自動的に出てくる)。

そのうえで、各保存則の $j$ を使い分ける:

充電時は $\phi_s - \phi_e$ が下がるので $|j_{\mathrm{SEI}}|$ が増える —— 「満充電付近での保存・充電で劣化が速い」という経験則が式から出てくる。

ここから先は文献参照レベル

本節の SEI モデルは最も単純な「単層・溶媒拡散律速」である。 実際の研究では、電子トンネリング律速・電解質中の Li⁺ 移動律速などの律速仮説、 内層/外層の2層構造、粒子膨張収縮による SEI 割れと再形成、 SEI による細孔閉塞($\varepsilon_e$ の減少)、Li 析出との連成などが扱われる。 出発点として Safari et al. (2009)、Yang et al. (2017)、 O'Kane et al. (2022)(PyBaMM に実装された劣化モデル群)を薦める。

図6.2 — SEI 成長と容量退化:√t 則を動かす

式 (6.7) に基づくサイクル劣化のシミュレーション(500 サイクル、1C 充放電を想定)。 成長係数 $K$ は温度スライダーに応じてアレニウス則(式 (6.4)、 $E_a = 60$ kJ/mol)でスケールされる。 1サイクルの時間は充放電深度(DOD)に比例させている ($t_{\mathrm{cyc}} = 2\,\mathrm{DOD} \times 3600$ s)。 見どころ:(1) 曲線が √ 型(最初に速く、後で遅く)になること。 (2) 温度 +20 °C で劣化が数倍速くなること(アレニウスの威力)。 (3) 膜厚はたかだか数百 nm でも、容量の 10〜20% を食い潰すこと。 「容量 80% 到達サイクル数」は √t 則で外挿した参考値で、 実セルではニー(急落)がこれより早く来ることがある。

計算中…

6.3 パラメータ同定 — DFN 実用最大の壁

6.3.1 何が測れて、何が難しいか

DFN の方程式系はフェーズ5で完成した。しかし実務で最初につまずくのは数値解法ではなく 「この 30 個近いパラメータをどこから持ってくるか」である。 パラメータは測定の難易度で明確に階層化される:

パラメータ測り方難易度・注意点
$L_n, L_s, L_p$(厚み) 断面 SEM、マイクロメータ 直接測れる。誤差数 %。
$R_s$(粒径) レーザー回折(粒度分布)、SEM 測れるが分布がある。単一半径で代表すること自体がモデル誤差。
$\varepsilon_e, \varepsilon_s$(体積分率) 水銀ポロシメトリ、重量・組成計算 直接測れる。
$c_{s,\max}$ 結晶構造と理論容量から計算 文献値で十分正確。
$U(\theta)$(OCP) ハーフセルの超低レート充放電(C/50 など) 測れるが、充電と放電でヒステリシスがあり平均化の流儀に依存。
$D_e, \kappa, t_+^0$(電解液) 専用の電気化学測定(制限拡散、対称セルなど) 専門装置が必要。通常は文献のフィット式(本サイトは Nyman 2008)を流用。
$D_s$(固相拡散) GITT、EIS(後述) 難しい。同じ材料でも文献値が1〜2桁ばらつく。 $\theta$ 依存も強い。
$k$(反応速度定数) EIS(電荷移動抵抗)、フィット 難しい。$i_0$ と実効表面積が分離できず、 値は「$a$ とセット」でしか意味を持たないことが多い。
$b$(Bruggeman 指数) 実効伝導度測定から逆算、または慣習値 1.5 難しい。直接は測れない。実電極の屈曲度は Bruggeman 理論値からしばしば大きく外れる。

「難しい」側のパラメータは、結局セルの電圧応答にモデルを合わせ込んで推定 することになる。これがパラメータ同定(parameter identification / estimation)である。

6.3.2 最小二乗フィッティングの定式化

推定したいパラメータをまとめてベクトル $\boldsymbol{p} = (p_1, \dots, p_m)$ と書く(例:$\boldsymbol{p} = (D_s^+, k^+)$)。 実験で時刻 $t_i$($i = 1,\dots,M$)の端子電圧 $V_{\mathrm{exp}}(t_i)$ を測り、同じ電流プロトコルでモデル電圧 $V_{\mathrm{model}}(t_i; \boldsymbol{p})$ を計算する。 残差 $r_i(\boldsymbol{p}) = V_{\mathrm{model}}(t_i;\boldsymbol{p}) - V_{\mathrm{exp}}(t_i)$ の二乗和を最小にする $\boldsymbol{p}$ を探すのが最小二乗法である:

$$\hat{\boldsymbol{p}} = \arg\min_{\boldsymbol{p}}\ J(\boldsymbol{p}), \qquad J(\boldsymbol{p}) = \sum_{i=1}^{M} \bigl[V_{\mathrm{model}}(t_i;\boldsymbol{p}) - V_{\mathrm{exp}}(t_i)\bigr]^2 \tag{6.9}$$

実装上の定石が3つある。 (1) $D_s$ や $k$ のように桁で動く正のパラメータは $\log_{10} p$ を変数にする(スケールが揃い、正値制約も自動で満たされる)。 (2) 物理的にありうる範囲で上下限を制約する。 (3) 最適化には残差ベクトルの構造を使う Gauss–Newton 系 (Levenberg–Marquardt、scipy では least_squares)を使う。 $J$ は一般に非凸なので、初期値によっては局所解に落ちる —— これは後の実行例で実際に確認できる。

6.3.3 感度と識別可能性 — フィットすれば決まる、とは限らない

最小二乗が「うまくいく」ためには、そもそも データがそのパラメータの情報を含んでいる必要がある。 それを測る道具が感度(sensitivity)である:

$S_i(t) = \partial V/\partial \ln p_i$:相対感度 [V] — 「パラメータ $p_i$ を 1% 動かしたら電圧が何 V 動くか」×100。 対数微分にするのは桁の違うパラメータ同士を比べるため。 数値的には中心差分 $S_i \approx [V(p_i e^{+\varepsilon}) - V(p_i e^{-\varepsilon})]/(2\varepsilon)$ で近似する。

感度が小さいパラメータはノイズに埋もれて決まらない。 しかしもっと厄介なのは、感度は大きいのに他のパラメータと区別が付かない場合で、 これを識別可能性(identifiability)の欠如と呼ぶ。 2つのパラメータの感度曲線 $S_i(t)$ と $S_j(t)$ が時間軸上で「同じ形」をしていると、 $p_i$ を増やした効果を $p_j$ を減らして打ち消せるため、 コスト関数 $J$ の地形に細長い「谷」ができ、谷底のどこでも $J$ がほぼ同じになる。 形の類似度はコサイン類似度(相関)で定量化できる:

$$\rho_{ij} = \frac{\sum_t S_i(t)\, S_j(t)} {\sqrt{\sum_t S_i(t)^2}\ \sqrt{\sum_t S_j(t)^2}}, \qquad |\rho_{ij}| \to 1 \ \text{で識別不能} \tag{6.10}$$

具体例1(構造的な識別不能):$D_s$ と $R_s$ は積でしか効かない

SPM の固相拡散方程式を無次元化してみる。 $\tilde{r} = r/R_s$、$\tilde{t} = t/\tau_d$($\tau_d$ は後で決める)とおいて $\partial c_s/\partial t = \frac{1}{r^2}\partial_r (D_s r^2 \partial_r c_s)$ に代入すると:

$$\frac{1}{\tau_d}\frac{\partial c_s}{\partial \tilde{t}} = \frac{D_s}{R_s^2}\, \frac{1}{\tilde{r}^2}\frac{\partial}{\partial \tilde{r}} \left(\tilde{r}^2 \frac{\partial c_s}{\partial \tilde{r}}\right) \quad\Longrightarrow\quad \tau_d = \frac{R_s^2}{D_s} \ \text{と選ぶと方程式からパラメータが消える}$$

境界条件の流束も $j R_s / (F D_s)$ という組合せでしか入らない(SPM では $j \propto 1/(aL) \propto R_s$ なので、これも $R_s^2/D_s$ に帰着する)。 つまり $V(t)$ には $D_s$ と $R_s$ が拡散時定数 $\tau_d = R_s^2/D_s$ という 1つの組合せでしか現れない。 $R_s$ を4倍にして $D_s$ を16倍にした電池は、電圧応答が完全に同じ —— どれだけ良いデータを何回取っても、$V(t)$ だけから両者を別々に決めることは 原理的に不可能である(構造的識別不能)。 だから $R_s$ は粒度分布で独立に測り、フィットは $D_s$ に絞る、という分業になる。

具体例2(実用上の識別困難):$k$ と接触抵抗

定電流放電では界面電流密度 $j$ がほぼ一定なので、反応過電圧 $\eta \approx (2RT/F)\,\mathrm{asinh}(j/2i_0)$ は時間的にほぼ一定の電圧オフセットになる。 ところが接触抵抗 $R_{\mathrm{contact}}$ による電圧降下 $I R_{\mathrm{contact}}$ も「一定のオフセット」。2つの感度曲線はほぼ平行($\rho \approx 1$)で、 単一の定電流カーブからは事実上分離できない。 分離するには、$i_0$ の非線形性が顔を出す電流を変えた実験 (マルチレート、パルス、EIS)が必要になる。 —— 「識別可能性は実験デザインの問題」というのが本節で一番大事な教訓である。

6.3.4 GITT と EIS(原理の紹介のみ)

フィット一辺倒を避けるため、個別パラメータを狙い撃ちする測定法が使われる。 2つだけ原理を紹介する(定式化の導出は文献参照レベル)。

6.3.5 過学習と検証データの分離

パラメータを増やせば $J$ はいくらでも下がるが、それは ノイズや系統誤差まで暗記した(過学習)だけかもしれない。 機械学習と同じ規律が要る:

図6.3 — 感度と識別可能性:D_s と k はどこで区別できるか

フェーズ2と同じ SPM(Crank–Nicolson + Thomas 法、軽量グリッド)で定電流放電を解き、 正極の $D_s^+$ と反応速度定数 $k^+$ をそれぞれ ±ε 動かしたときの $V(t)$(上段)と相対感度 $\partial V/\partial\ln p$(下段)を表示する。 見どころ:(1) 放電の大部分で2本の感度曲線は同符号・似た形 (類似度 ρ が 0.9 超)—— この領域のデータだけでは $D_s^+$ を増やす代わりに $k^+$ を増やしても電圧がほぼ同じに見え、区別が付きにくい。 (2) 放電末期だけ $D_s^+$ の感度が急伸する(表面濃度の飽和が OCP の急峻部と重なるため)。$D_s$ の情報は末期に集中している。 (3) $k^+$ の感度は全体に小さい —— ノイズ 5 mV の実験では $k$ の推定誤差が 大きくなることが予想できる(下の実行例で確認)。 C レートを上げると感度の大きさ自体が増えることも確認してほしい。

計算中…

6.3.6 やってみる:合成データからの最小二乗同定(この章の目玉)

仕上げに、パラメータ同定の全工程をブラウザ内で実行する。 「真のパラメータ」で合成データを作る → ノイズを載せる → scipy.optimize.least_squares で推定 → 真値と比較、という流れは、 実データで同定する前に必ずやるべきリハーサルでもある (合成データで真値を回収できない手順が、実データで機能するはずがない)。 モデルは図6.3 と同じ簡易 SPM の Python 版で、 負極は既知とし、正極の $D_s^+$ と $k^+$ の2つを推定する。

# ============================================================
# パラメータ同定のミニ実験:
#  (1) 「真の」D_s^+ と k^+ で簡易 SPM の 1C 放電カーブを合成し、
#      観測ノイズを加えて「実験データ」とする
#  (2) scipy.optimize.least_squares で 2 パラメータを推定する
#  (3) 真値・初期値・推定値と残差を比較する
# ============================================================
import numpy as np
from scipy.optimize import least_squares

F, Rg, T = 96485.33212, 8.314462618, 298.15
# --- LG M50(Chen 2020)のうち SPM に必要な値 ---
L_n, L_p, R_n, R_p = 85.2e-6, 75.6e-6, 5.86e-6, 5.22e-6
a_n, a_p = 3*0.75/R_n, 3*0.665/R_p           # 比界面積 [1/m]
csmax_n, csmax_p = 33133.0, 63104.0
Ds_n, k_n = 3.3e-14, 6.716e-12               # 負極は既知とする
ce0, I_1C = 1000.0, 5.0/0.1027               # 1C 電流密度 [A/m^2]
th_n100, th_p100 = 0.9014, 0.27              # 100% SOC の化学量論

def ocp_n(t):   # 黒鉛 OCP [V]
    return (1.9793*np.exp(-39.3631*t) + 0.2482
            - 0.0909*np.tanh(29.8538*(t-0.1234))
            - 0.04478*np.tanh(14.9159*(t-0.2769))
            - 0.0205*np.tanh(30.4444*(t-0.6103)))

def ocp_p(t):   # NMC811 OCP [V]
    return (-0.8090*t + 4.4875 - 0.0428*np.tanh(18.5138*(t-0.5542))
            - 17.7326*np.tanh(15.7890*(t-0.3117))
            + 17.5842*np.tanh(15.9308*(t-0.3120)))

def surf_conc(D, Rs, c0, jF, dt, nstep, N=14):
    """球粒子拡散(FVM + Crank-Nicolson)。表面濃度の時系列を返す。
    jF = j/F [mol/(m^2 s)] は表面から出る向きが正(一定)。"""
    dr = Rs/N
    rf = np.arange(N+1)*dr                       # セル境界の半径
    vol = (rf[1:]**3 - rf[:-1]**3)/3.0           # セル体積(4π は省略)
    g = D*rf[1:-1]**2/dr                         # 境界面コンダクタンス
    Lm = np.zeros((N, N))                        # 拡散演算子 L
    for i in range(N-1):
        Lm[i, i]     -= g[i]/vol[i];   Lm[i, i+1] += g[i]/vol[i]
        Lm[i+1, i+1] -= g[i]/vol[i+1]; Lm[i+1, i] += g[i]/vol[i+1]
    src = np.zeros(N); src[-1] = -jF*rf[-1]**2/vol[-1]   # 表面流出
    A = np.eye(N) - dt/2*Lm
    M = np.linalg.solve(A, np.eye(N) + dt/2*Lm)  # CN の 1 歩: c ← M c + s
    s = np.linalg.solve(A, dt*src)
    c = np.full(N, c0); out = np.empty(nstep)
    for k in range(nstep):
        c = M @ c + s
        out[k] = c[-1] - jF*(dr/2)/D             # セル中心値 → 表面値に補正
    return out

dt, nstep = 30.0, 100                            # 0〜3000 s(1C 放電)
t_grid = dt*np.arange(1, nstep+1)
I = 1.0*I_1C
j_n, j_p = I/(a_n*L_n), -I/(a_p*L_p)             # 界面電流密度 [A/m^2]

# 負極は推定対象でないので 1 回だけ計算してキャッシュ(高速化のコツ)
cs_n = np.clip(surf_conc(Ds_n, R_n, th_n100*csmax_n, j_n/F, dt, nstep),
               1.0, csmax_n-1.0)
i0_n = k_n*F*np.sqrt(ce0*cs_n*(csmax_n-cs_n))
V_neg = ocp_n(cs_n/csmax_n) + 2*Rg*T/F*np.arcsinh(j_n/(2*i0_n))

def model_V(p):
    """p = [log10 D_s^+, log10 k^+] → 端子電圧 V(t)(対数で扱うと安定)"""
    Dsp, kp = 10.0**p[0], 10.0**p[1]
    cs_p = np.clip(surf_conc(Dsp, R_p, th_p100*csmax_p, j_p/F, dt, nstep),
                   1.0, 0.9999*csmax_p)
    i0_p = kp*F*np.sqrt(ce0*cs_p*(csmax_p-cs_p))
    eta_p = 2*Rg*T/F*np.arcsinh(j_p/(2*i0_p))
    return ocp_p(cs_p/csmax_p) + eta_p - V_neg

# --- (1) 合成データ:真値 + 観測ノイズ(σ = 5 mV)---
p_true = np.log10([4.0e-15, 3.545e-11])
rng = np.random.default_rng(0)
V_data = model_V(p_true) + rng.normal(0.0, 0.005, nstep)

# --- (2) 最小二乗推定(log10 空間、物理的にありうる範囲を制約)---
p0 = np.log10([1.0e-15, 1.0e-10])                # 初期値(真値からずらす)
bounds = ([-17.0, -13.0], [-12.0, -8.0])         # 10^-17〜10^-12 など
fit = least_squares(lambda p: model_V(p) - V_data, p0, bounds=bounds)

# --- (3) 結果の比較 ---
print("パラメータ     真値        初期値      推定値      誤差")
for i, nm in enumerate(["D_s^+ [m2/s]", "k^+   [SI]  "]):
    tv, ev = 10**p_true[i], 10**fit.x[i]
    print(f"{nm}  {tv:.3e}  {10**p0[i]:.3e}  {ev:.3e}  {100*(ev-tv)/tv:+.1f} %")
print(f"残差 RMS = {np.sqrt(np.mean(fit.fun**2))*1000:.2f} mV(ノイズ σ = 5 mV)")
print("残差がノイズ水準まで落ちれば、データはモデルで説明できたことになる。")
print("注意: 初期値を大きく外す(例: D_s^+ = 1e-17)と局所解に落ちることがある。")
print("      また k^+ の誤差が D_s^+ より大きいのは、感度が小さい(図6.3)ため。")

plot_spec = {
  "traces": [
    {"x": t_grid[::3].tolist(), "y": V_data[::3].tolist(),
     "name": "合成データ(ノイズ付き)", "mode": "markers",
     "marker": {"size": 5, "color": "#9ca3af"}},
    {"x": t_grid.tolist(), "y": model_V(p0).tolist(),
     "name": "初期値のモデル", "mode": "lines",
     "line": {"dash": "dot", "color": "#f59e0b"}},
    {"x": t_grid.tolist(), "y": model_V(fit.x).tolist(),
     "name": "推定値のモデル", "mode": "lines", "line": {"color": "#2563eb"}},
  ],
  "layout": {"title": {"text": "最小二乗フィット:1C 放電カーブ"},
             "xaxis": {"title": {"text": "時間 [s]"}},
             "yaxis": {"title": {"text": "端子電圧 [V]"}}},
}

    
  

実行すると、$D_s^+$ は数 % の誤差で回収できるのに対し、$k^+$ の誤差は 10% 近くなる —— 図6.3 で見た感度の大きさの差が、そのまま推定精度の差になって現れる。 さらに p0np.log10([1.0e-17, 1.0e-10]) に書き換えて 再実行してみてほしい。残差 400 mV 超の局所解(拡散が遅すぎて表面が飽和し、 どのパラメータ方向にも改善しない停留点)に捕まるはずだ。 実務では複数の初期値から出発して同じ解に収束するかを確認する (マルチスタート)のが定石である。

6.4 さらに学ぶには

6.4.1 PyBaMM エコシステム

本サイトでは学習のためにすべてを自作したが、研究・実務では PyBaMM (Python Battery Mathematical Modelling; Sulzer et al. 2021)を使うのが近道である。 フェーズ5の検証データも PyBaMM で生成した。この章で学んだ3テーマは すべて PyBaMM に実装済みで、数行で試せる:

# PyBaMM での「本章の内容全部入り」の例(ローカル環境で: pip install pybamm)
# 熱連成 + SEI 劣化 + サイクル実験を数行で。
import pybamm

model = pybamm.lithium_ion.DFN({
    "SEI": "solvent-diffusion limited",   # 6.2 の √t 型 SEI モデル
    "thermal": "lumped",                  # 6.1 の集中熱モデル
})
experiment = pybamm.Experiment([
    ("Discharge at 1C until 2.5 V",
     "Charge at 0.3C until 4.2 V",
     "Hold at 4.2 V until C/50"),
] * 100)                                  # 100 サイクル
sim = pybamm.Simulation(model, experiment=experiment,
                        parameter_values=pybamm.ParameterValues("OKane2022"))
sol = sim.solve()
pybamm.plot_summary_variables(sol)        # 容量・LLI・膜厚などの推移を一括表示
PyBaMM はブラウザでは動かないため、ローカルで実行してください。

6.4.2 主要文献ガイド

次に読むべきものを、目的別に挙げる。

文献何のために読むか
Doyle, Fuller & Newman, J. Electrochem. Soc. 140 (1993) 1526 DFN モデルの原典。フェーズ1〜5 を終えた今なら原文が読める。 続編 Fuller et al. (1994) はフルセル版。
Newman & Thomas-Alyea,
Electrochemical Systems (3rd ed.)
多孔質電極理論・濃厚溶液論の教科書。本サイトが簡略化した箇所 (熱力学因子、輸率の濃度依存など)の厳密版がすべて載っている。
Plett, Battery Management Systems Vol. I–II 等価回路から物理モデルまで、BMS 応用(SOC/SOH 推定)の定番教科書。 カルマンフィルタによるオンライン推定は本章 6.3 の発展形。
Bernardi, Pawlikowski & Newman, JES 132 (1985) 5 電池の熱発生の一般理論(6.1 の厳密版)。混合熱・相変化まで含む。
Marquis et al., JES 166 (2019) A3693 漸近展開による SPM/SPMe の系統的導出。フェーズ2・3 の「なぜ簡略化が 正当化されるか」に数学的な答えを与える。
Chen et al., JES 167 (2020) 080534 本サイトのパラメータの出典(LG M50 の実測同定)。6.3 で述べた 測定・同定の実例として熟読の価値あり。
O'Regan et al., Electrochim. Acta 425 (2022) 140700 同じ LG M50 の熱物性・温度依存パラメータの決定版。熱連成をやるなら必携。
Safari et al., JES 156 (2009) A145 / O'Kane et al., Phys. Chem. Chem. Phys. 24 (2022) 7909 SEI モデルの古典と、劣化機構を統合した現代版(PyBaMM 実装)。
Birkl et al., J. Power Sources 341 (2017) 373 劣化モード(LLI/LAM)の分類と非破壊診断の枠組み。
Sulzer et al., JORS 9 (2021) 14 PyBaMM の設計論文。モデルがどうコード化されているかの見取り図。

6.4.3 本サイトの総まとめ — フェーズ0〜6 で積み上げたもの

フェーズ到達点核となる考え方
0. 物理像 セルの中で何が動くかを言葉と絵で説明できる ロッキングチェア機構、多孔質電極、4つの状態変数
1. 支配方程式 DFN の5本の方程式を保存則から導出できる 物質・電荷保存 + Butler–Volmer、体積平均化
2. SPM 単一粒子モデルを実装し、拡散律速を体感する 球拡散 PDE の数値解法(CN + Thomas)、過電圧の逆解き
3. SPMe 電解液の濃度分極を加えて中レートまで再現する 液相の拡散・マイグレーション、濃度過電圧
4. 数値解法 非線形連立系を Newton 法で解く道具を持つ 有限体積法、陰解法、ヤコビアン、収束判定
5. DFN フルモデルを組み上げ、PyBaMM と突き合わせて検証する 全方程式の連成、モデル階層(SPM ⊂ SPMe ⊂ DFN)の使い分け
6. 拡張(本章) 熱・劣化・同定への入口に立つ エネルギー保存、√t 則、感度と識別可能性

まとめ:この章で学んだこと

章末:理解度チェック

理解度チェック

  1. 21700 セル($m c_p = 68$ J/K、$A_{\mathrm{surf}} = 5.3\times10^{-3}$ m²)を $h = 20$ W/(m²·K) の空冷下で 2C 放電する。内部抵抗を一定の 30 mΩ、 セル電流を 10 A とするとき、(a) 定常温度上昇 $\Delta T_\infty$ と (b) 熱時定数 $\tau_{\mathrm{th}}$ を求めよ。 (c) 2C 放電が終わるまで(1800 s)に温度はほぼ定常に達するか?
    解答
    (a) 発熱率は $\dot{Q} = I_{\mathrm{cell}}^2 R_{\mathrm{int}} = 10^2 \times 0.03 = 3$ W。 式 (6.1) の定常解より $\Delta T_\infty = \dot{Q}/(hA_{\mathrm{surf}}) = 3/(20 \times 5.3\times10^{-3}) = 3/0.106 \approx 28.3$ K。 (b) $\tau_{\mathrm{th}} = m c_p/(hA_{\mathrm{surf}}) = 68/0.106 \approx 640$ s。 (c) $1800/640 \approx 2.8$ 時定数なので、 $1 - e^{-2.8} \approx 94\%$ まで定常値に近づく。ほぼ達する、が答え。 ただし実際は $R_{\mathrm{int}}$ が温度で下がる(アレニウス)ため、 実際の $\Delta T$ はこの見積もりより小さくなる。
  2. 可逆熱 $\dot{Q}_{\mathrm{rev}} = -I A_{\mathrm{cell}} T\, \partial V_{\mathrm{OCV}}/\partial T$ について:(a) 同じ SOC で放電を充電に切り替えると符号はどうなるか。 (b) 1サイクル(充放電一往復)で積算するとどうなるか。 (c) 「不可逆熱と可逆熱を実験で分離したい。C レートをどう選ぶべきか」に答えよ。
    解答
    (a) $\dot{Q}_{\mathrm{rev}} \propto I$ なので電流の符号とともに反転する (放電で発熱なら充電で吸熱)。 (b) 同じ SOC 範囲を同じ経路で往復すれば打ち消し合ってほぼゼロ (不可逆熱は常に正なので、サイクル全体の発熱 = 不可逆熱の積算)。 (c) 不可逆熱はおおよそ $I^2$、可逆熱は $I^1$ に比例するので、 低レートほど可逆熱の比率が上がる。 低レートで測って可逆熱を抽出し、高レート測定から差し引くのが定石 (または放電と充電の発熱を足し引きして偶奇で分離する)。
  3. SEI 支配の劣化で、200 サイクル後に容量損失が 4% だった。 √t 則(容量損失 ∝ √N)が続くとすると、損失が 8% に達するのは何サイクル後か。 また、この電池の温度を 25 °C から 45 °C に上げると ($E_a = 60$ kJ/mol として)同じ損失に達するサイクル数はおよそ何分の1になるか。
    解答
    損失 ∝ √N より、損失を2倍にするには N を $2^2 = 4$ 倍にすればよい: $200 \times 4 = 800$ サイクル。 温度について:損失 ∝ $\sqrt{K N}$ で $K$ はアレニウス則に従うので、 $K(45°C)/K(25°C) = \exp[\tfrac{60000}{8.314}(\tfrac{1}{298.15} - \tfrac{1}{318.15})] \approx e^{1.52} \approx 4.6$。 同じ損失なら $KN$ 一定、つまりサイクル数は約 1/4.6 ≈ 1/5 になる。 「10 °C 上がると寿命半減」という経験則の出どころがこの計算である。
  4. 1C 放電カーブ $V(t)$ を1本だけ使って SPM のパラメータをフィットするとき、 (a) $D_s$ と $R_s$ を両方推定対象にすると何が起きるか。 (b) それはデータを増やせば(例えば C レートを変えれば)解決するか。 (c) 実務ではどう対処するか。
    解答
    (a) $V(t)$ には両者が $\tau_d = R_s^2/D_s$ の組合せでしか現れないため、 $R_s^2/D_s$ を一定に保つ無数の $(R_s, D_s)$ ペアが同じコスト $J$ を与える。 最適化は谷に沿ってどこかで止まり、返ってきた個々の値に意味はない。 (b) 解決しない。これは構造的識別不能であり、 電圧データをいくら増やしても $V(t)$ が $\tau_d$ 経由でしか両者を感じない 事実は変わらない($k$ と $R_{\mathrm{contact}}$ の相関が実験デザインで 解消できるのとは対照的)。 (c) $R_s$ を粒度分布測定(レーザー回折・SEM)で独立に決めて固定し、 $D_s$ だけをフィットする。あるいは推定量を最初から $\tau_d$ と定義し直す。

学習の完了と今後の道筋

ここまで来たあなたは、フェーズ0の「電池の中では何が起きているのか」という問いから始めて、 保存則から DFN を導出し(1)、SPM・SPMe という階層を自分の手で実装し(2・3)、 非線形連立系を解く数値技術を身につけ(4)、フルの DFN を組み上げて 公開実装と突き合わせ(5)、そして本章で温度・劣化・同定という 「現実の電池工学」への3本の橋を渡り始めた。 DFN モデルはもはやブラックボックスではない —— どの式がどの仮定から来て、どのパラメータがどう効き、 どこまで信じてよいかを、あなたは自分で判断できる。

これからの進み方の提案:

  1. PyBaMM を触る:上のコード例から始めて、 本サイトの各フェーズの結果を PyBaMM で再現してみる。 自作コードとの差分を説明できたら、理解は本物である。
  2. 論文を1本選んで実装する:6.4.2 の文献から (例えば SEI モデルの Safari 2009 を)選び、式を追い、 フェーズ2の SPM に組み込んでみる。本サイトでやった 「導出 → 実装 → 検証」のループはそのまま研究の作法である。
  3. 実データで同定してみる:手に入る充放電データ (公開データセットでもよい)に 6.3 の手順を適用する。 合成データとの落差 —— モデル構造誤差、ドリフト、ヒステリシス —— こそが次に学ぶべきテーマを教えてくれる。
  4. 興味の方向で分岐する:BMS・状態推定なら Plett、 材料・界面なら Newman & Thomas-Alyea、 安全性・熱なら Bernardi と熱暴走の文献群へ。 どの道でも、本サイトで積んだ「保存則と界面反応から出発する」思考法が土台になる。

長い道のりに付き合ってくれてありがとう。よい電池モデリングを。