フェーズ3電解液を加えた SPMe への拡張
フェーズ2で作った単一粒子モデル(SPM)は、電解液の中身を一切見ていませんでした。 この章では「電解液に何が起きているか」を DFN の液相物質保存式で記述し、 その結果を2つの電圧補正項として SPM に足します。 こうして得られるモデルが SPMe(Single Particle Model with electrolyte)です。 追加コストはわずかなのに、高 C レートでの電圧降下と容量低下をかなり正しく捉えられるようになります。
3.1 SPM はいつ破れるか — 電解液に勾配が立つ
フェーズ2の SPM は、DFN の5本の支配方程式(フェーズ1)のうち固相拡散と界面反応だけを残し、 電解液については次の2つを仮定していました。
- 電解液塩濃度 $c_e(x,t)$ [mol/m³] はどこでも初期値 $c_{e0}=1000$ mol/m³ のまま変わらない。
- 液相電位 $\phi_e(x,t)$ [V] は $x$ 方向に一様(電解液での電圧損失はゼロ)。
低レート(0.1C 程度)ならこれで十分ですが、レートを上げるとこの2つの仮定が両方とも崩れます。 理由を放電時の Li$^+$ の動きから追いかけてみましょう。 座標はフェーズ1と同じく、負極集電体を $x=0$、正極集電体を $x=L=L_n+L_s+L_p$ にとり、 放電電流密度 $I>0$ [A/m²]、酸化方向の界面電流密度 $j>0$ [A/m²] とします。
放電中、電解液の中では何が起きているか
放電時、負極($0 \le x \le L_n$)では酸化反応($j>0$)によって粒子から Li$^+$ が 電解液に放出され、正極($L_n+L_s \le x \le L$)では還元反応($j<0$)によって Li$^+$ が電解液から吸収されます。つまり電解液から見ると、 負極側が「湧き出し」、正極側が「吸い込み」です。Li$^+$ はセルを 負極 → セパレータ → 正極と横断しなければなりません。
このとき Li$^+$ を運ぶ手段は2つあります。電場による泳動(migration)と、 濃度勾配による拡散(diffusion)です。ここで効いてくるのが 輸率 $t_+^0$ [−](フェーズ1で導入。電解液を流れる電流のうち Li$^+$ の泳動が運ぶ割合)です。 本教材の電解液(LiPF$_6$/EC:EMC)では $t_+^0 = 0.2594$、 つまり泳動が運べるのは電流の約 26% だけで、 残りの約 74% は陰イオン(PF$_6^-$)が逆向きに動くことで運ばれます。 しかし陰イオンは電極反応に参加できないので、負極側に置き去りにされて塩(Li$^+$ と PF$_6^-$ のペア)が溜まり、 正極側では塩が減っていきます。この過不足を解消できるのは拡散だけです。 拡散が濃度差を必要とする以上、電流を流し続ける限り濃度勾配は必ず立ちます。
物理的な意味 — 塩の枯渇(salt depletion)はなぜ致命的か
正極側で $c_e \to 0$ に近づくと、2つの破綻が同時に起こります。 第一に、イオン伝導率 $\kappa$ [S/m] は塩濃度の低下とともに小さくなる (params.js の $\kappa(c_e)$ フィットでも $c_e \to 0$ で $\kappa \to 0$)ので、 同じ電流を流すのに必要な電場が発散的に大きくなります。 第二に、界面反応の「原料」である Li$^+$ が正極表面付近からなくなるため、 交換電流密度 $i_0 \propto c_e^{1/2}$ が潰れて過電圧が急増します。 どちらも端子電圧の急落として現れ、実際のセルではこれが高レート放電の容量を決める 主要因のひとつです。逆に負極側では塩が濃くなりすぎて塩の析出(precipitation)が 問題になることもあります。
時間スケールで見る:いつ勾配は「間に合ってしまう」か
濃度勾配が育つのにかかる時間は、拡散時定数 $\tau_e \sim \varepsilon_e L^2 / D_e^{\mathrm{eff}}$ で見積もれます。 ここで $L = L_n + L_s + L_p = 172.8$ μm はセル厚さ、 $\varepsilon_e$ [−] は空隙率(電解液体積分率)、 $D_e^{\mathrm{eff}} = D_e \varepsilon_e^{b}$ は実効電解液拡散係数 [m²/s] (フェーズ1、$b=1.5$ は Bruggeman 指数)です。 本教材のパラメータでは最も遅い負極領域で $D_e^{\mathrm{eff}} \approx 1.77\times10^{-10} \times 0.25^{1.5} \approx 2.2\times10^{-11}$ m²/s なので、 $\tau_e \approx 0.25 \times (172.8\times10^{-6})^2 / (2.2\times10^{-11}) \approx 340$ 秒。 一方、放電にかかる時間は $3600/C$ 秒($C$ は C レート)です。
- 0.1C(10時間放電):$\tau_e \ll$ 放電時間。勾配は立つが浅く、影響は小さい。
- 1C(1時間放電):放電の前半で勾配が定常に達し、数十 mV の損失を生む。
- 3C 以上:定常勾配そのものが深く、正極側の枯渇が現実になる。SPM の電圧予測は 数百 mV 単位で外れ、放電容量も過大評価になる。
まとめると、SPM の誤差は C レートの増加とともに単調に拡大します。 おおまかには電解液のオーム損が $I$ に比例して(このセルでは 1C で約 20 mV)、 濃度起因の損失はそれより速く(勾配が深くなるほど対数関数を通して増幅されて)効いてきます。 3.6節の図3.2でこの傾向を自分の手で確かめます。
3.2 SPMe とは — SPM に何を足し、何をやめないか
SPMe の設計思想はとても割り切っています。DFN の5式(フェーズ1の最終形)のうち、 液相物質保存(式2)だけを PDE として本当に解き、 液相電荷保存(式4)は「解く」のではなく「$x$ で積分して電圧式への補正項に変換」します。 固相電荷保存(式3)は引き続き無視し(電極内で $\phi_s$ 一様)、 反応分布も引き続き一様($j$ が電極内で $x$ によらない)と仮定します。
足すもの
- 液相物質保存 PDE を解く(SPEC の式2。フェーズ1で導出済み): $$\varepsilon_e \frac{\partial c_e}{\partial t} = \frac{\partial}{\partial x}\!\left(D_e^{\mathrm{eff}}\frac{\partial c_e}{\partial x}\right) + (1-t_+^0)\frac{a j}{F}$$ これで $c_e(x,t)$ の時間発展(3.1節の「塩の偏り」)が手に入ります。
- 電圧式に電解液起因の補正項を2つ加える(3.5節で導出): 濃度差に由来する $\Delta\phi_{e,\mathrm{conc}}$ と、イオン輸送の抵抗に由来する $\Delta\phi_{e,\mathrm{ohm}}$ です。
やめないもの(SPM から引き継ぐ簡略化)
- 反応分布は依然一様:負極内・正極内で $j$ は $x$ によらない定数。 したがって固相は引き続き「各電極の代表粒子1個ずつ」で足ります。
- $\phi_e(x)$ の厳密解は解かない:液相電荷保存を場の方程式として解くのではなく、 積分した「端子電圧への正味の寄与」だけを取り出します。$\phi_e(x)$ の形そのものは DFN(フェーズ5)まで持ち越しです。
- 固相のオーム損は無視:$\sigma^{\mathrm{eff}}$ [S/m] が十分大きいとして $\phi_s$ は各電極内で一様のまま。
まとめ — SPM → SPMe の差分(数式対応表)
| DFN の支配方程式(フェーズ1) | SPM(フェーズ2) | SPMe(本章) |
|---|---|---|
| 式1 固相拡散 $\dfrac{\partial c_s}{\partial t}=\dfrac{1}{r^2}\dfrac{\partial}{\partial r}\!\left(D_s r^2\dfrac{\partial c_s}{\partial r}\right)$ | 各電極1粒子で解く | 同じ(変更なし) |
| 式2 液相物質保存 $\varepsilon_e\dfrac{\partial c_e}{\partial t}=\dfrac{\partial}{\partial x}\!\left(D_e^{\mathrm{eff}}\dfrac{\partial c_e}{\partial x}\right)+(1-t_+^0)\dfrac{aj}{F}$ | 解かない($c_e \equiv c_{e0}$) | 3領域 PDE として解く(3.3節) |
| 式3 固相電荷保存 $\dfrac{\partial}{\partial x}\!\left(\sigma^{\mathrm{eff}}\dfrac{\partial \phi_s}{\partial x}\right)=aj$ | 無視($\phi_s$ 電極内一様) | 同じ(無視のまま) |
| 式4 液相電荷保存 $i_e=-\kappa^{\mathrm{eff}}\dfrac{\partial\phi_e}{\partial x}+\dfrac{2\kappa^{\mathrm{eff}}RT}{F}(1-t_+^0)\dfrac{\partial\ln c_e}{\partial x}$ | 無視($\phi_e$ 一様) | $x$ で積分して電圧補正2項に変換(3.5節)。場としては解かない |
| 式5 Butler–Volmer $j=i_0\!\left[e^{\alpha_a F\eta/RT}-e^{-\alpha_c F\eta/RT}\right]$ | 一様 $j$ から $\eta$ を代数的に逆算 | 同じ($i_0$ も $c_{e0}$ 評価のまま) |
| 端子電圧 $V=\phi_s(L)-\phi_s(0)$ | $V_{\mathrm{SPM}}=U_p-U_n+\eta_p-\eta_n$ | $V=V_{\mathrm{SPM}}+\Delta\phi_{e,\mathrm{conc}}+\Delta\phi_{e,\mathrm{ohm}}$ |
状態変数の増分は $c_e(x,t)$ の離散値(本章の実装では 30〜60 点)だけ。 計算量は SPM とほぼ同じオーダーに収まります。
3.3 電解液拡散 PDE の設定(3領域・境界条件・ソース項)
まず解くべき方程式を領域ごとに書き下ろします。使う記号を再掲します (定義と単位はフェーズ1の記号表と同じです)。
3領域での方程式
液相物質保存(式2)の反応項 $aj$ は活物質がある電極内でのみ現れます。セパレータには 活物質がない($aj=0$)ので、次の3本になります。
$$ \varepsilon_e^- \frac{\partial c_e}{\partial t} = \frac{\partial}{\partial x}\!\left(D_e^{\mathrm{eff},-}\frac{\partial c_e}{\partial x}\right) + (1-t_+^0)\frac{a_n j_n}{F} \qquad (0 \le x \le L_n) $$ $$ \varepsilon_e^{\mathrm{sep}} \frac{\partial c_e}{\partial t} = \frac{\partial}{\partial x}\!\left(D_e^{\mathrm{eff,sep}}\frac{\partial c_e}{\partial x}\right) \qquad (L_n \le x \le L_n + L_s) $$ $$ \varepsilon_e^+ \frac{\partial c_e}{\partial t} = \frac{\partial}{\partial x}\!\left(D_e^{\mathrm{eff},+}\frac{\partial c_e}{\partial x}\right) + (1-t_+^0)\frac{a_p j_p}{F} \qquad (L_n + L_s \le x \le L) $$ここで $j_n$、$j_p$ は負極・正極の界面電流密度 [A/m²] です(SPMe では各電極内で定数。すぐ下で値を求めます)。
物理的な意味 — 3つの項の役割
左辺 $\varepsilon_e \partial c_e/\partial t$ は「単位体積あたりの塩の蓄積」。電解液は体積の $\varepsilon_e$ しか占めないので、この因子がつきます。右辺第1項は多孔質を縫って進む拡散、 第2項は反応と泳動の合わせ技による正味の湧き出しです。反応で $j/F$ [mol/(m²·s)] の Li$^+$ が 出入りしても、そのうち $t_+^0$ の分は泳動がその場で運び去る(あるいは運び込む)ため、 塩として局所に残る正味は $(1-t_+^0)$ 倍になります。これがソース項に $(1-t_+^0)$ が かかる理由です(導出はフェーズ1)。
領域境界の連続条件
負極/セパレータ境界($x=L_n$)とセパレータ/正極境界($x=L_n+L_s$)では、 次の2つの連続条件を課します。
導出 — なぜこの2つか(検査体積の議論)
境界をまたぐ厚さ $2\delta$ の薄い検査体積(pillbox)を考え、そこで物質保存を書くと、 蓄積($\propto \delta$)とソース($\propto \delta$)は $\delta \to 0$ で消えるのに対し、 両面から出入りする拡散流束 $-D_e^{\mathrm{eff}} \partial c_e/\partial x$ は残ります。 よって流束が連続でなければ厚さゼロの面に塩が無限速度で溜まってしまい、矛盾します。 また電解液は境界を通して繋がった同じ液体なので、濃度が跳ぶと境界の無限小区間に 無限大の勾配、すなわち無限大の流束が立ってしまうため、濃度も連続です。
注意すべきは、連続なのは「$c_e$」と「$D_e^{\mathrm{eff}} \partial c_e/\partial x$(流束)」であって、 勾配 $\partial c_e/\partial x$ そのものではないことです。$\varepsilon_e$ が領域で異なる ($D_e^{\mathrm{eff}}$ が跳ぶ)ため、流束の連続を保つには勾配が跳ぶ、つまりプロファイルは 境界で「折れ線」になります。図3.1で実際に折れが見えます。
両端(集電体)のノイマン条件
$$ \frac{\partial c_e}{\partial x}\bigg|_{x=0} = 0, \qquad \frac{\partial c_e}{\partial x}\bigg|_{x=L} = 0 $$物理的根拠:$x=0$ は銅箔、$x=L$ はアルミ箔の集電体で、どちらも電子は通しますが イオンも溶媒も通しません。塩の流束はゼロ、つまり $-D_e^{\mathrm{eff}} \partial c_e/\partial x = 0$ です。$D_e^{\mathrm{eff}} \ne 0$ なので 勾配ゼロのノイマン条件(Neumann condition)になります。 塩はセルの外に出られない — この事実が3.4節の「総塩量保存」に直結します。
一様反応の仮定でソース項が定数になる
仮定と近似 — 一様反応
SPM から引き継ぐ中心仮定:「界面電流密度 $j$ は各電極の内部で $x$ によらない」。 つまり負極では $j = j_n$、正極では $j = j_p$ という定数です。 この仮定の妥当性と破れは3.7節で検討します。
仮定を認めると、$j_n$、$j_p$ の値は液相電荷保存(式4)の電流バランスだけから決まります。 液相の見かけ電流密度 $i_e(x)$ [A/m²] を使って1ステップずつ確認します。
フェーズ1で導いたとおり、界面反応は液相電流の湧き出しとして働きます: $$\frac{\partial i_e}{\partial x} = a j$$ また境界条件は「集電体($x=0,\ L$)で $i_e = 0$(集電体では電流はすべて固相を流れる)」、 「電極/セパレータ境界で $i_e = I$(セパレータには固相の電子伝導路がないため $i_s = 0$、電荷保存 $i_s + i_e = I$ より液相が全電流を運ぶ)」でした。
負極($0 \le x \le L_n$)で $\partial i_e/\partial x = a_n j_n$ を $x=0$ から $x=L_n$ まで積分します。 $a_n j_n$ は定数なので: $$i_e(L_n) - i_e(0) = \int_0^{L_n} a_n j_n \, \mathrm{d}x = a_n j_n L_n$$ 左辺に境界値 $i_e(0)=0$、$i_e(L_n)=I$ を入れると $I = a_n j_n L_n$、すなわち $$a_n j_n = \frac{I}{L_n} \qquad\Longleftrightarrow\qquad j_n = \frac{I}{a_n L_n}$$
正極($L_n+L_s \le x \le L$)でも同様に積分します。境界値は $i_e(L_n+L_s)=I$、$i_e(L)=0$ です: $$i_e(L) - i_e(L_n+L_s) = a_p j_p L_p \quad\Longrightarrow\quad 0 - I = a_p j_p L_p \quad\Longrightarrow\quad a_p j_p = -\frac{I}{L_p}$$
これを液相物質保存のソース項 $(1-t_+^0)\,aj/F$ に代入すると、ソース項は 時間にも位置にもよらない定数になります:
物理的な意味 — 符号の確認
放電($I>0$)のとき、負極のソースは正 → 塩が増える。正極のソースは負 → 塩が減る。 これは3.1節で言葉と図で描いた物理(負極側に塩が溜まり、正極側で枯れる)と一致します。 符号規約の確認もしておくと:放電時は負極で酸化 $j_n = I/(a_n L_n) > 0$(SPEC の 「酸化方向の $j$ を正」と整合)、正極で還元 $j_p = -I/(a_p L_p) < 0$ です。 さらに、負極の湧き出し総量 $(1-t_+^0)I/F \cdot 1$ と正極の吸い込み総量が ちょうど打ち消し合う(厚み $L_n$、$L_p$ で割ってから掛け直すと同じ $(1-t_+^0)I/F$)ことにも 注目してください。塩の総量は変わらない — 次節でこれを厳密に使います。
3.4 定常濃度プロファイルの解析解
定電流を流し続けると、湧き出し・吸い込みと拡散が釣り合って濃度分布は時間変化しなくなります ($\partial c_e/\partial t = 0$)。このときの分布は手で厳密に解けます。 結果は数値解の検証(図3.1の点線)に使えるうえ、3.5節の電圧補正の大きさを見積もる道具にもなります。 表記を軽くするため、この節では領域ごとの実効拡散係数を $D_n \equiv D_e^{\mathrm{eff},-}$、$D_s \equiv D_e^{\mathrm{eff,sep}}$、$D_p \equiv D_e^{\mathrm{eff},+}$ と書き、負極のソース密度を $q_n \equiv (1-t_+^0)I/(F L_n)$ [mol/(m³·s)]、 正極のそれを $q_p \equiv (1-t_+^0)I/(F L_p)$(符号は $-q_p$ で入る)とおきます。
負極:2次関数
定常なので左辺を落とすと、負極の方程式は
$$0 = D_n \frac{\mathrm{d}^2 c_e}{\mathrm{d}x^2} + q_n \qquad\Longleftrightarrow\qquad \frac{\mathrm{d}^2 c_e}{\mathrm{d}x^2} = -\frac{q_n}{D_n}$$右辺は定数です。
$0$ から $x$ まで1回目の積分を実行します:
$$\int_0^{x}\frac{\mathrm{d}^2 c_e}{\mathrm{d}x'^2}\,\mathrm{d}x' = \frac{\mathrm{d}c_e}{\mathrm{d}x}\bigg|_{x} - \frac{\mathrm{d}c_e}{\mathrm{d}x}\bigg|_{0} = -\frac{q_n}{D_n}\,x$$ここで $x=0$ のノイマン条件 $\mathrm{d}c_e/\mathrm{d}x|_0 = 0$(3.3節)を使うと
$$\frac{\mathrm{d}c_e}{\mathrm{d}x} = -\frac{q_n}{D_n}\,x$$勾配は $x$ に比例して深くなります。符号確認:放電($I>0$、$q_n>0$)では勾配は負、 つまり集電体($x=0$)から離れるほど濃度が下がる。塩の湧き出しはどの位置でも同じなのに、 集電体側で作られた塩まで全部セパレータ側へ運び出さないといけないので、 セパレータに近いほど流束(と勾配)が大きくなるのです。
もう一度 $0$ から $x$ まで積分します:
$$c_e(x) - c_e(0) = -\frac{q_n}{D_n}\int_0^x x'\,\mathrm{d}x' = -\frac{q_n}{2D_n}x^2$$ $$\Longrightarrow\quad c_e(x) = c_e(0) - \frac{q_n}{2D_n}\,x^2 \qquad (0 \le x \le L_n)$$負極内の定常プロファイルは上に凸の2次関数です。 積分定数 $c_e(0)$ はまだ未知で、最後に総塩量保存から決めます。
後の接続のために、負極からセパレータへ渡る定常モル流束 $J \equiv -D_n\, \mathrm{d}c_e/\mathrm{d}x$ [mol/(m²·s)] を $x=L_n$ で評価しておきます:
$$J(L_n) = -D_n \left(-\frac{q_n}{D_n}L_n\right) = q_n L_n = \frac{(1-t_+^0)I}{F} \equiv N$$負極で単位時間に湧き出した塩の全量($q_n L_n$)が、そっくりそのままセパレータへ 流れ込んでいます。以後この定数流束を $N$ [mol/(m²·s)] と呼びます。
セパレータ:1次関数
セパレータにはソースがないので $\mathrm{d}^2 c_e/\mathrm{d}x^2 = 0$、 つまり流束 $-D_s\,\mathrm{d}c_e/\mathrm{d}x$ は一定です。 3.3節の流束連続条件により、その値は負極から来た $N$ に等しい:
$$-D_s \frac{\mathrm{d}c_e}{\mathrm{d}x} = N \quad\Longrightarrow\quad c_e(x) = c_e(L_n) - \frac{N}{D_s}(x - L_n) \qquad (L_n \le x \le L_n + L_s)$$$c_e(L_n)$ は負極側の式 (3) に $x=L_n$ を入れた値(濃度連続条件)なので、新しい未知数は増えません。 プロファイルは傾き $-N/D_s$ の直線です。
正極:2次関数(逆向き)
正極ではソースが $-q_p$ なので $\mathrm{d}^2 c_e/\mathrm{d}x^2 = +q_p/D_p$。 境界からの距離 $\xi \equiv x - (L_n + L_s)$($0 \le \xi \le L_p$)で書いて、 $\xi = 0$ から1回積分します:
$$\frac{\mathrm{d}c_e}{\mathrm{d}\xi} = \frac{\mathrm{d}c_e}{\mathrm{d}\xi}\bigg|_{\xi=0} + \frac{q_p}{D_p}\,\xi$$$\xi=0$ での勾配は流束連続条件 $-D_p\,\mathrm{d}c_e/\mathrm{d}\xi|_0 = N$ から $\mathrm{d}c_e/\mathrm{d}\xi|_0 = -N/D_p$ と決まります。$N = q_p L_p$ (どちらも $(1-t_+^0)I/F$)であることを使うと:
$$\frac{\mathrm{d}c_e}{\mathrm{d}\xi} = \frac{q_p}{D_p}(\xi - L_p)$$整合性チェック:$\xi = L_p$(正極集電体 $x=L$)で勾配がちょうどゼロになり、 ノイマン条件が自動的に満たされています。これは偶然ではなく、 「負極で湧いた塩の全量=正極で吸われる塩の全量」というグローバルな保存の現れです。 もしパラメータ設定を間違えてこれが破れていたら、定常解は存在しません。
もう一度 $0$ から $\xi$ まで積分して:
$$c_e(\xi) = c_e(L_n+L_s) - \frac{N}{D_p}\left(\xi - \frac{\xi^2}{2L_p}\right) \qquad (0 \le \xi \le L_p)$$ここでも $c_e(L_n+L_s)$ は式 (5) の端の値(濃度連続)です。正極内は下に凸の2次関数で、 $x=L$ に向かって減りながら平らになります。図3.1の右端の形そのものです。
最後の積分定数:総塩量保存
ここまでで全領域のプロファイルが $c_e(0)$ ただ1つの未知数で書けました。 これを決めるのが総塩量保存です。液相物質保存 PDE をセル全体($0$ から $L$)で積分すると:
$$\frac{\mathrm{d}}{\mathrm{d}t}\int_0^L \varepsilon_e c_e\,\mathrm{d}x = \left[D_e^{\mathrm{eff}}\frac{\partial c_e}{\partial x}\right]_0^L + \underbrace{\frac{(1-t_+^0)I}{F}}_{\text{負極の湧き出し}} - \underbrace{\frac{(1-t_+^0)I}{F}}_{\text{正極の吸い込み}}$$右辺第1項は両端のノイマン条件でゼロ、残り2項は打ち消し合ってゼロ。よって 電解液中の塩の総量 $\int_0^L \varepsilon_e c_e\,\mathrm{d}x$ は時間によらず一定で、 初期値(一様濃度 $c_{e0}$)での値に等しい:
$$\int_0^L \varepsilon_e\, c_e(x)\,\mathrm{d}x = c_{e0} \left(\varepsilon_e^- L_n + \varepsilon_e^{\mathrm{sep}} L_s + \varepsilon_e^+ L_p\right)$$定常解を $c_e(x) = c_e(0) + g(x)$ と分けます。$g(x)$ は上の (3)(5)(7) で求めた 「形」の部分($g(0)=0$)で、既知です。保存則に代入すると
$$c_e(0) = c_{e0} - \frac{\displaystyle\int_0^L \varepsilon_e\, g(x)\,\mathrm{d}x} {\varepsilon_e^- L_n + \varepsilon_e^{\mathrm{sep}} L_s + \varepsilon_e^+ L_p}$$分子の3つの区間積分も多項式なので手で実行できます:
$$\int_0^{L_n} g\,\mathrm{d}x = -\frac{N L_n^2}{6 D_n},\qquad \int_{L_n}^{L_n+L_s} g\,\mathrm{d}x = L_s\, g(L_n) - \frac{N L_s^2}{2 D_s},$$ $$\int_{L_n+L_s}^{L} g\,\mathrm{d}x = L_p\, g(L_n+L_s) - \frac{N L_p^2}{3 D_p}$$ここで $g(L_n) = -N L_n/(2D_n)$、$g(L_n+L_s) = g(L_n) - N L_s/D_s$ です。 係数に $1/6$、$1/2$、$1/3$ が現れました — 2次関数・1次関数の平均をとった痕跡で、 実は3.5節のオーム項の $1/3$ と同じ出自です。
まとめ — 定常濃度プロファイル(区分的多項式)
2次/1次/2次の区分的多項式。この式は数値解の答え合わせに使えます: 時間発展の数値解が $t \to \infty$ でこの解析解に収束するか、総塩量が保存されているか、 の2点をチェックすれば、離散化やコードの誤りをかなり炙り出せます。図3.1の点線がこの解です (本ページの実装では、数値解と定常解析解の差は全域で 0.02% 以下に収まります)。
「▶ 再生」で一様濃度 1000 mol/m³ から定常状態へ育っていく様子をアニメーション表示します (背景色:負極=薄青、セパレータ=薄灰、正極=薄赤)。黒の点線が3.4節の定常解析解で、 時間が経つと数値解(緑)がぴったり重なります。C レートを 2C 以上に上げるか $D_e$ 倍率を下げると、正極集電体側(右端)で $c_e$ が 0 に迫る「塩の枯渇」が起きます。 赤の破線($c_e = 0$)より下は物理的にあり得ない領域で、線形化したこのモデルが 破綻した(=実セルならこの電流を維持できない)ことを意味します。 領域境界でプロファイルが「折れる」こと($D_e^{\mathrm{eff}}$ の跳びによる勾配の不連続)も 確認してください。数値解法は3領域 FVM(Nx=60、界面は調和平均)+ Crank–Nicolson です。
3.5 電圧補正項の導出(この章の核)
$c_e(x,t)$ が手に入ったので、いよいよ「電解液が端子電圧をどれだけ下げるか」を導きます。 出発点は液相電荷保存=修正オームの法則(SPEC 式4、フェーズ1で導出)です。
仮定と近似(この節で使うもの)
- 熱力学因子 $1+\partial \ln f_\pm/\partial \ln c_e = 1$ とする。 $f_\pm$ [−] は平均モル活量係数で、電解液の非理想性を表す因子です。本教材では全編を通じて 理想溶液近似($f_\pm$ 一定)を採り、この因子を 1 と置きます。
- $\kappa^{\mathrm{eff}}$ は初期濃度 $c_{e0}$ で評価した定数とする。 本来 $\kappa$ は $c_e(x,t)$ の関数ですが、SPMe では $\kappa^{\mathrm{eff}} = \kappa(c_{e0})\,\varepsilon_e^{b}$ (領域ごとに定数)で固定します。濃度勾配が深い高レートではこの近似が甘くなります(3.7節)。
- 一様反応(3.3節と同じ):$j$ は各電極内で定数。よって 3.3節の結果 $a_n j_n = I/L_n$、$a_p j_p = -I/L_p$ が使えます。
- 固相オーム損の無視:$\sigma^{\mathrm{eff}}$ が大きいとして各電極内で $\phi_s$ は一様($\phi_s$ は集電体での値に等しい)。
電圧の分解:どこに $\phi_e$ が現れるか
端子電圧は $V = \phi_s(L) - \phi_s(0)$ です。過電圧の定義 $\eta = \phi_s - \phi_e - U(\theta)$(フェーズ1)を電極内の反応点で使うと、 各電極で $\phi_s = U + \eta + \phi_e$ と書けます。 ここで仮定 3・4 より $U$ と $\eta$ は電極内で一様ですが、$\phi_e(x)$ は位置に依存します。 電極内のどの粒子も同じ $j$ で反応している(仮定3)ので、代表粒子が感じる液相電位としては 電極内の平均値 $\langle \phi_e \rangle_n \equiv \frac{1}{L_n}\int_0^{L_n} \phi_e\,\mathrm{d}x$、 $\langle \phi_e \rangle_p \equiv \frac{1}{L_p}\int_{L_n+L_s}^{L} \phi_e\,\mathrm{d}x$ を使うのが SPMe の流儀です。すると:
$$ V = \underbrace{U_p(\theta_p) - U_n(\theta_n) + \eta_p - \eta_n}_{= \,V_{\mathrm{SPM}}\ (\text{フェーズ2と同じ})} \;+\; \underbrace{\langle \phi_e \rangle_p - \langle \phi_e \rangle_n}_{\equiv\, \Delta\phi_e\ (\text{本節で計算})} $$SPM では $\phi_e$ 一様の仮定により $\Delta\phi_e = 0$ でした。SPMe はここを埋めます。
修正オームの法則を勾配について解く
液相電荷保存(SPEC 式4)に熱力学因子 $=1$(仮定1)を入れると:
$$i_e = -\kappa^{\mathrm{eff}}\frac{\partial \phi_e}{\partial x} + \frac{2\kappa^{\mathrm{eff}} R T}{F}(1-t_+^0)\frac{\partial \ln c_e}{\partial x}$$$\kappa^{\mathrm{eff}}$ で割って $\partial\phi_e/\partial x$ について解きます:
$$\frac{\partial \phi_e}{\partial x} = -\frac{i_e}{\kappa^{\mathrm{eff}}} + \frac{2RT}{F}(1-t_+^0)\frac{\partial \ln c_e}{\partial x}$$右辺第1項がオーム項(電流を流すための電場)、 第2項が濃度項(濃度勾配が作る拡散電位)です。 $x$ で積分すればこの2つは別々に積分でき、$\Delta\phi_e$ が2つの補正項に分離します。 $R = 8.314$ J/(mol·K) は気体定数、$T = 298.15$ K は温度です。
(i) 濃度項の積分
濃度項はきれいな全微分なので、$x=0$ から $x=L$ までの積分が端点の値だけで書けます:
$$\int_0^L \frac{2RT}{F}(1-t_+^0)\frac{\partial \ln c_e}{\partial x}\,\mathrm{d}x = \frac{2RT}{F}(1-t_+^0)\bigl[\ln c_e(L,t) - \ln c_e(0,t)\bigr]$$領域境界で $c_e$ が連続(3.3節)なので、境界での値は途中でキャンセルし、 本当に両端の値しか残りません。これを濃度補正項と呼びます:
放電中は $c_e(L) < c_e(0)$(正極側が薄い)なので対数は負、 つまりこの項は電圧を下げます。充電では符号が反転して電圧を上げます(損失としては同じ向き)。
物理的な意味 — 濃度項は「セル内にできた濃淡電池」
濃度の異なる電解液が接すると、速いイオンが先に拡散して電荷がわずかに分離し、 電位差(液間電位差)が生じます。これは濃淡電池(concentration cell)の起電力と同じ物理です。 放電中のセルは正極側が薄く負極側が濃いので、この起電力はちょうど端子電圧を食う向きに発生します。 係数を分解すると、$RT/F \approx 25.7$ mV は熱電圧、係数 2 は陽・陰イオン両方が寄与するため、 $(1-t_+^0)$ は陰イオンの動きやすさに比例して拡散電位が立つためです。 $t_+^0 \to 1$(Li$^+$ が全部運ぶ理想的な単一イオン伝導体)ならこの項は消えます — 固体電解質開発で単一イオン伝導が尊ばれる理由の1つです。
注意 — 端点評価と電極平均評価
厳密に $\langle\phi_e\rangle_p - \langle\phi_e\rangle_n$ の濃度部分を計算するなら、 端点値ではなく電極平均 $\frac{2RT}{F}(1-t_+^0)[\langle \ln c_e\rangle_p - \langle \ln c_e\rangle_n]$ を使うべきで、漸近展開に基づく SPMe の原論文(Marquis et al. 2019)や PyBaMM の実装は平均を使います。 端点評価は電極の中で最も濃い点と最も薄い点を代表に選ぶため、勾配が深いときは損失を 2〜3割ほど過大評価する傾向があります(保守的な近似)。本教材では式の見通しを優先して 端点評価で統一し、この差は SPMe という近似の「誤差帯」の一部と考えます。
(ii) オーム項の準備:$i_e(x)$ は区分的に線形
オーム項 $-i_e/\kappa^{\mathrm{eff}}$ を積分するには $i_e(x)$ の形が要ります。 一様反応なら、これは3.3節の積分を途中で止めるだけで手に入ります。
負極内で $\partial i_e/\partial x = a_n j_n = I/L_n$ を $0$ から $x$ まで積分し、 $i_e(0)=0$ を使うと:
$$i_e(x) = \frac{I}{L_n}\,x \qquad (0 \le x \le L_n)$$ゼロから $I$ まで線形に増加します。集電体側では電流はまだ全部固相にいて、 セパレータへ向かうにつれて反応が電流を液相へ「乗り換え」させていくイメージです。
セパレータでは $aj=0$ なので $i_e$ は一定。負極端の値を引き継いで:
$$i_e(x) = I \qquad (L_n \le x \le L_n + L_s)$$全電流が液相を流れます(固相の電子伝導路がないので当然です)。
正極内では $\partial i_e/\partial x = a_p j_p = -I/L_p$。$x = L_n+L_s$ から積分して $i_e(L_n+L_s) = I$ を使うと($\xi = x - L_n - L_s$):
$$i_e(x) = I - \frac{I}{L_p}\,\xi = I\,\frac{L - x}{L_p} \qquad (L_n + L_s \le x \le L)$$$I$ からゼロまで線形に減少し、$x=L$ の境界条件 $i_e(L)=0$ と整合します。
(iii) オーム項の積分:$1/3$ はどこから来るか
オーム項による電位変化を $x=0$ からの積み上げで書きます: $$\phi_e^{\mathrm{ohm}}(x) - \phi_e^{\mathrm{ohm}}(0) = -\int_0^x \frac{i_e(x')}{\kappa^{\mathrm{eff}}(x')}\,\mathrm{d}x'$$ まず負極の中($0 \le x \le L_n$、$\kappa^{\mathrm{eff}} = \kappa_n^{\mathrm{eff}}$)で:
$$-\frac{1}{\kappa_n^{\mathrm{eff}}}\int_0^x \frac{I}{L_n}x'\,\mathrm{d}x' = -\frac{I}{\kappa_n^{\mathrm{eff}}}\,\frac{x^2}{2L_n}$$特に負極端まで積分すると $-I L_n/(2\kappa_n^{\mathrm{eff}})$。 係数 $1/2$ は「線形に立ち上がる $i_e$ の平均値が $I/2$」であることの現れです: 厚さ $L_n$ を平均電流 $I/2$ が流れたのと同じ電圧降下になります。
セパレータは $i_e = I$ 一定なので普通のオームの法則どおり:
$$\phi_e^{\mathrm{ohm}}(L_n+L_s) - \phi_e^{\mathrm{ohm}}(L_n) = -\frac{I L_s}{\kappa_s^{\mathrm{eff}}}$$正極内($\xi = x-L_n-L_s$)では $i_e = I(1-\xi/L_p)$ を積分して:
$$\phi_e^{\mathrm{ohm}}(x) - \phi_e^{\mathrm{ohm}}(L_n{+}L_s) = -\frac{I}{\kappa_p^{\mathrm{eff}}}\int_0^{\xi}\left(1-\frac{\xi'}{L_p}\right)\mathrm{d}\xi' = -\frac{I}{\kappa_p^{\mathrm{eff}}}\left(\xi - \frac{\xi^2}{2L_p}\right)$$もし端子電圧に効くのが端点の差 $\phi_e(L) - \phi_e(0)$ だったなら、$\xi = L_p$ を入れて 合計はこうなります:
$$\bigl[\phi_e^{\mathrm{ohm}}\bigr]_0^L = -I\left[\frac{L_n}{2\kappa_n^{\mathrm{eff}}} + \frac{L_s}{\kappa_s^{\mathrm{eff}}} + \frac{L_p}{2\kappa_p^{\mathrm{eff}}}\right] \qquad (\text{係数 } 1/2)$$しかし3.5節冒頭で見たとおり、電圧式に入るのは電極内の平均 $\langle\phi_e\rangle_n$、$\langle\phi_e\rangle_p$ です。反応は集電体側の粒子でも起きているので、 「セパレータ境界まで行き切った電位」ではなく「電極内の粒子が平均して感じる電位」を 使わなければなりません。そこで (6)(7) の $x$ 依存の式を電極ごとに平均します。負極:
$$\langle\phi_e^{\mathrm{ohm}}\rangle_n - \phi_e^{\mathrm{ohm}}(0) = -\frac{I}{\kappa_n^{\mathrm{eff}}}\,\frac{1}{L_n}\int_0^{L_n}\frac{x^2}{2L_n}\,\mathrm{d}x = -\frac{I}{\kappa_n^{\mathrm{eff}}}\,\frac{1}{L_n}\cdot\frac{L_n^2}{6} = -\frac{I L_n}{6\,\kappa_n^{\mathrm{eff}}}$$正極も同様に($\xi - \xi^2/2L_p$ の平均は $L_p/2 - L_p/6 = L_p/3$):
$$\langle\phi_e^{\mathrm{ohm}}\rangle_p - \phi_e^{\mathrm{ohm}}(L_n{+}L_s) = -\frac{I}{\kappa_p^{\mathrm{eff}}}\,\frac{1}{L_p}\int_0^{L_p}\!\left(\xi-\frac{\xi^2}{2L_p}\right)\mathrm{d}\xi = -\frac{I L_p}{3\,\kappa_p^{\mathrm{eff}}}$$部品が揃いました。$\langle\phi_e\rangle_p - \langle\phi_e\rangle_n$ のオーム部分は、
$$ \underbrace{\Bigl(\langle\phi_e\rangle_p - \phi_e(L_n{+}L_s)\Bigr)}_{-I L_p/(3\kappa_p^{\mathrm{eff}})} + \underbrace{\Bigl(\phi_e(L_n{+}L_s) - \phi_e(L_n)\Bigr)}_{-I L_s/\kappa_s^{\mathrm{eff}}} + \underbrace{\Bigl(\phi_e(L_n) - \phi_e(0)\Bigr)}_{-I L_n/(2\kappa_n^{\mathrm{eff}})} - \underbrace{\Bigl(\langle\phi_e\rangle_n - \phi_e(0)\Bigr)}_{-I L_n/(6\kappa_n^{\mathrm{eff}})} $$負極の2項をまとめると $-I L_n\left(\frac{1}{2}-\frac{1}{6}\right)/\kappa_n^{\mathrm{eff}} = -I L_n/(3\kappa_n^{\mathrm{eff}})$。よって:
$1/3$ の出自を言葉でまとめます。$i_e$ が線形なので、 (a) 電極を通り抜けるだけなら平均電流 $I/2$ が効いて $1/2$、 (b) しかし観測点も電極内に分布していて、平均すると集電体側へ $1/6$ 分だけ「戻る」、 差し引き $1/2 - 1/6 = 1/3$。等価回路の言葉でいえば、 反応が分布した多孔質電極は、その電解液抵抗 $L/\kappa^{\mathrm{eff}}$ の ちょうど $1/3$ だけを端子から見せるということです。全電流が全厚を貫くセパレータだけが 素直に $L_s/\kappa_s^{\mathrm{eff}}$ で効きます。
SPMe の電圧式(最終形)
以上を電圧の分解式に戻すと、SPMe の電圧式が完成します。
ここで $\theta_n$、$\theta_p$ [−] は各代表粒子の表面化学量論、 $\eta_{n,p} = \frac{2RT}{F}\mathrm{asinh}\!\left(\frac{j_{n,p}}{2 i_{0,n,p}}\right)$ [V] は Butler–Volmer($\alpha_a=\alpha_c=0.5$)を逆に解いた反応過電圧です(フェーズ2)。 $\kappa^{\mathrm{eff}}$ を $c_{e0}$ で評価する近似(仮定2)により、 $\Delta\phi_{e,\mathrm{ohm}}$ は定電流放電の間じゅう一定値、 時間変化するのは $\Delta\phi_{e,\mathrm{conc}}$ だけです。
数値も見ておきましょう。$\kappa(c_{e0}) = 0.949$ S/m から $\kappa_n^{\mathrm{eff}} = 0.949 \times 0.25^{1.5} = 0.119$ S/m、 $\kappa_s^{\mathrm{eff}} = 0.306$ S/m、$\kappa_p^{\mathrm{eff}} = 0.184$ S/m。 角括弧の中身(電解液の面積比抵抗)は $4.16 \times 10^{-4}$ Ω·m² で、 1C($I = 48.7$ A/m²)なら $\Delta\phi_{e,\mathrm{ohm}} \approx -20$ mV、5C で約 $-101$ mV です。 一方 $\Delta\phi_{e,\mathrm{conc}}$ は 1C の定常状態($c_e(0) \approx 1700$、$c_e(L) \approx 490$ mol/m³、3.4節の解析解)で 約 $-47$ mV。このセルでは濃度項の方が大きいことがわかります。
まとめ — 符号と大きさの感覚
- 放電($I>0$)ではどちらの補正も負(電圧を食う)。充電では $I<0$ かつ濃度分布が逆転し、どちらも正になる(端子電圧を押し上げる=充電に余計な電圧が要る)。損失としての向きは常に同じ。
- $\Delta\phi_{e,\mathrm{ohm}} \propto I$:即座に現れる(電流を切れば即消える)。
- $\Delta\phi_{e,\mathrm{conc}}$:時定数 $\tau_e$(数百秒)で育ち、対数のため枯渇に近づくと急激に大きくなる。電流を切ってもすぐには消えない(緩和に $\tau_e$ かかる)。
3.6 実装 — SPMe を動かす
実装は SPM(フェーズ2)に電解液 PDE を1本足すだけです。全体の流れ:
- 固相:代表粒子2個の球拡散をフェーズ2と同じ FVM で解く(表面流束は $j_n/F$、$j_p/F$ で一定)。
- 液相:3.3節の PDE を3領域 FVM で解く。領域境界の流束連続は、界面の $D_e^{\mathrm{eff}}$ を隣接セルの調和平均で評価すれば自動的に満たされる(セル中心の 有限体積法の定石。詳細はフェーズ4)。ソース項は 3.3節の定数。
- 電圧:各時刻で $\theta_{n,p}$ と $c_e(0)$、$c_e(L)$ を取り出し、 3.5節の式で $V = V_{\mathrm{SPM}} + \Delta\phi_{e,\mathrm{conc}} + \Delta\phi_{e,\mathrm{ohm}}$ を組み立てる。
下のインタラクティブ図は、この手順をブラウザ内の JavaScript (時間積分は Crank–Nicolson、フェーズ4で学ぶ方法の1つ)で実行したものです。
同じ固相モデルに対して、電解液補正なし(SPM、灰色破線)とあり(SPMe、黒実線)の 放電曲線を重ねています(凡例の括弧内は放電容量)。 0.5C ではほぼ重なりますが、C レートを上げると SPMe の曲線が下に割れ、 差が単調に開いていきます。さらにこのセルでは 2C 付近から正極端の電解液が枯渇し ($c_e(L) \to 0$、× マーカー)、その電流をもはや維持できなくなって 放電はそこで終了します。SPM はこの現象をまったく表現できません。 ただし本デモの「$c_e$ 依存の物性を初期濃度で固定する」近似は枯渇を早めに 予測します($D_e$ は薄い電解液ほど大きくなり、実際は枯渇を自己抑制するため)。 $D_e$ 倍率スライダーを 2〜3 倍にすると枯渇が消えることで、この感度を体感できます。 さらに反応を一様と仮定していること自体も枯渇を過大評価する方向に働きます (実際の DFN は反応分布を組み替えて枯渇をしのぐ)。答え合わせはフェーズ5の図5.2で。
ある時刻の端子電圧を「開回路電圧からどの損失がいくら削ったか」に分解した滝グラフです。 進行度スライダーで放電中の時刻を動かしてください。 放電直後はオーム損と反応過電圧だけ、 数百秒後には濃度過電圧が育って追い越し、 高レートの末期には濃度過電圧が支配的になる、という時間発展が見えます。 なお開回路電圧 $U_p - U_n$ 自体も放電とともに下がっていきます(これは損失ではなく 熱力学的な変化です)。縦軸はゼロからではなく 2.3 V 付近から始めていることに注意。
実行できる Python:SPMe 完全実装(solve_ivp 版)
仕上げに、この章の内容をすべて含む SPMe を1本の Python にまとめます。
状態ベクトルは $y = [\underbrace{c_s^n}_{15}, \underbrace{c_s^p}_{15}, \underbrace{c_e}_{30}]$
の 60 成分。固相2粒子(各 $N_r = 15$ セルの FVM)と電解液(3領域 $N_x = 30$ セルの FVM)を
連結した ODE 系を solve_ivp(method="BDF") に渡します
(拡散方程式系は「硬い(stiff)」ので陰的ソルバが必要 — 理由はフェーズ4で)。
1C と 3C の放電曲線を SPM 電圧(点線)と重ねて描き、各レートの放電容量を表示します。
実行には初回のみ Pyodide のダウンロードで数十秒かかります(計算自体は数秒です)。
コードはそのまま Jupyter にコピーしても動きます(matplotlib 版は末尾のコメント)。
# ============================================================
# SPMe(単一粒子モデル + 電解液)の完全実装
# 固相: 2粒子 x 球対称 FVM (Nr=15) / 電解液: 3領域 FVM (Nx=30)
# を連結した ODE 系を solve_ivp(method="BDF") で解く。
# 1C と 3C の放電曲線を SPM 電圧(点線)と重ねて描く。
# Jupyter でもそのまま動く(matplotlib 版は末尾のコメント参照)。
# ============================================================
import numpy as np
from scipy.integrate import solve_ivp
# ---- パラメータ(LG M50, Chen et al. 2020。js/params.js と同一値)----
F, Rg, T = 96485.33212, 8.314462618, 298.15 # C/mol, J/(mol K), K
L_n, L_s, L_p = 85.2e-6, 12.0e-6, 75.6e-6 # 電極厚さ [m]
A_cell, cap_Ah = 0.1027, 5.0 # 面積 [m^2], 公称容量 [Ah]
R_n, R_p = 5.86e-6, 5.22e-6 # 粒子半径 [m]
eps_n, eps_s, eps_p = 0.25, 0.47, 0.335 # 空隙率 [-]
epss_n, epss_p, brug = 0.75, 0.665, 1.5 # 活物質分率, Bruggeman
cs_max_n, cs_max_p = 33133.0, 63104.0 # 最大 Li 濃度 [mol/m^3]
Ds_n, Ds_p = 3.3e-14, 4.0e-15 # 固相拡散係数 [m^2/s]
th_n0, th_p0 = 0.9014, 0.2700 # 100% SOC の化学量論
ce0, t_plus = 1000.0, 0.2594 # 初期塩濃度 [mol/m^3], 輸率
k_n, k_p = 6.716e-12, 3.545e-11 # 反応速度定数
a_n, a_p = 3*epss_n/R_n, 3*epss_p/R_p # 比界面積 [1/m]
I_1C = cap_Ah / A_cell # 1C 電流密度 [A/m^2]
V_CUT = 2.5 # 下限電圧 [V]
def ocpN(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 ocpP(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)))
# 電解液物性は初期濃度 ce0 で評価して固定(3.5節の近似)
c1 = ce0/1000.0
De = 8.794e-11*c1**2 - 3.972e-10*c1 + 4.862e-10 # [m^2/s]
kappa = 0.1297*c1**3 - 2.51*c1**1.5 + 3.329*c1 # [S/m]
R_ell = (L_n/(3*kappa*eps_n**brug) + L_s/(kappa*eps_s**brug)
+ L_p/(3*kappa*eps_p**brug)) # 電解液オーム抵抗 [Ohm m^2]
# ---- 固相 FVM(球対称、Nr セル)----
Nr = 15
rf_n = np.linspace(0.0, R_n, Nr+1); rf_p = np.linspace(0.0, R_p, Nr+1) # セル面
Vsh_n = (rf_n[1:]**3 - rf_n[:-1]**3)/3.0 # 殻体積(共通因子 4π は省略)
Vsh_p = (rf_p[1:]**3 - rf_p[:-1]**3)/3.0
dr_n, dr_p = R_n/Nr, R_p/Nr
def particle_rhs(cs, Ds, rf, Vsh, dr, jmol):
# Vsh dc/dt = 面フラックス差。表面境界: -Ds dc/dr = jmol(流出が正)
q = Ds*rf[1:-1]**2*np.diff(cs)/dr # 内部面の r^2 D dc/dr
d = np.zeros_like(cs)
d[:-1] += q; d[1:] -= q
d[-1] -= rf[-1]**2*jmol
return d/Vsh
# ---- 電解液 FVM(3領域、Nx=30)----
nn, ns, npos = 15, 3, 12
dx = np.r_[np.full(nn, L_n/nn), np.full(ns, L_s/ns), np.full(npos, L_p/npos)]
epsx = np.r_[np.full(nn, eps_n), np.full(ns, eps_s), np.full(npos, eps_p)]
Deff = De*epsx**brug
G = 1.0/(dx[:-1]/(2*Deff[:-1]) + dx[1:]/(2*Deff[1:])) # 界面(調和平均)
def electrolyte_rhs(ce, I):
src = np.r_[np.full(nn, (1-t_plus)*I/(F*L_n)), # 3.3節の一様ソース
np.zeros(ns),
np.full(npos, -(1-t_plus)*I/(F*L_p))]
q = G*np.diff(ce) # 両端はノイマン(流束 0)
d = np.zeros_like(ce)
d[:-1] += q; d[1:] -= q
return (d + src*dx)/(epsx*dx)
def rhs(t, y, I):
return np.r_[particle_rhs(y[:Nr], Ds_n, rf_n, Vsh_n, dr_n, I/(a_n*L_n*F)),
particle_rhs(y[Nr:2*Nr], Ds_p, rf_p, Vsh_p, dr_p, -I/(a_p*L_p*F)),
electrolyte_rhs(y[2*Nr:], I)]
def voltage(y, I): # (V_SPM, V_SPMe) を返す
csn, csp, ce = y[:Nr], y[Nr:2*Nr], y[2*Nr:]
csn_s = np.clip(csn[-1] - ( I/(a_n*L_n*F))*dr_n/(2*Ds_n), 1.0, cs_max_n-1.0)
csp_s = np.clip(csp[-1] - (-I/(a_p*L_p*F))*dr_p/(2*Ds_p), 1.0, cs_max_p-1.0)
i0n = k_n*F*np.sqrt(ce0*csn_s*(cs_max_n-csn_s)) # i0 は ce0 で評価(SPM と共通)
i0p = k_p*F*np.sqrt(ce0*csp_s*(cs_max_p-csp_s))
eta_n = 2*Rg*T/F*np.arcsinh( I/(a_n*L_n)/(2*i0n))
eta_p = 2*Rg*T/F*np.arcsinh(-I/(a_p*L_p)/(2*i0p))
V_spm = ocpP(csp_s/cs_max_p) - ocpN(csn_s/cs_max_n) + eta_p - eta_n
dphi_conc = 2*Rg*T/F*(1-t_plus)*np.log(max(ce[-1], 1.0)/max(ce[0], 1.0))
return V_spm, V_spm + dphi_conc - I*R_ell
def cap_at_cut(cap, V): # 2.5 V 到達容量 [Ah](線形補間)
i = np.argmax(V <= V_CUT)
if V[i] > V_CUT: return cap[-1]
w = (V[i-1]-V_CUT)/(V[i-1]-V[i])
return cap[i-1] + w*(cap[i]-cap[i-1])
y0 = np.r_[np.full(Nr, th_n0*cs_max_n), np.full(Nr, th_p0*cs_max_p), np.full(30, ce0)]
traces = []
for crate, col in [(1.0, "#2563eb"), (3.0, "#dc2626")]:
I = crate*I_1C
ev = lambda t, y, I: voltage(y, I)[0] - V_CUT # SPM 電圧(遅い方)で停止
ev.terminal, ev.direction = True, -1
t_max = 1.3*3600/crate
sol = solve_ivp(rhs, (0.0, t_max), y0, args=(I,), method="BDF",
t_eval=np.linspace(0.0, t_max, 240), events=ev,
rtol=1e-6, atol=1e-2)
Vs = np.array([voltage(sol.y[:, i], I) for i in range(sol.y.shape[1])])
V_spm, V_spme = Vs[:, 0], Vs[:, 1]
cap = I*A_cell*sol.t/3600.0
# --- SPMe の終了点: 電圧カットオフ、または正極端の電解液枯渇(初期値の1%)---
# c_e→0 ではその電流を物理的に維持できない。一様反応の SPMe は枯渇を
# 過大評価しがちなことに注意(DFN との答え合わせはフェーズ5・図5.2)。
ce_hist = sol.y[-1, :] # 正極端の c_e(t)
idep = int(np.argmax(ce_hist <= 0.01*ce0))
depleted = bool(ce_hist[idep] <= 0.01*ce0)
c1_ = cap_at_cut(cap, V_spm)
c2_ = cap_at_cut(cap, V_spme)
if depleted:
c2_ = min(c2_, cap[idep])
note = "(正極端の電解液枯渇で終了)" if depleted else ""
print(f"{crate:.0f}C: 放電容量 SPM = {c1_:.3f} Ah / SPMe = {c2_:.3f} Ah{note}")
iend = max(idep - 1, 0) if depleted else len(sol.t) - 1
ce_e = sol.y[2*Nr:, iend]
print(f" SPMe 終了時の c_e: 負極端 {ce_e[0]:7.1f} / 正極端 {ce_e[-1]:7.1f} mol/m^3")
m = V_spme >= V_CUT - 1e-9 # SPMe はカットオフで切って描く
if depleted:
m &= np.arange(len(V_spme)) <= idep # 枯渇以降は描かない
traces.append({"x": cap[m].tolist(), "y": V_spme[m].tolist(),
"name": f"SPMe {crate:.0f}C", "mode": "lines",
"line": {"color": col, "width": 2.5}})
traces.append({"x": cap.tolist(), "y": V_spm.tolist(),
"name": f"SPM {crate:.0f}C", "mode": "lines",
"line": {"color": col, "dash": "dot", "width": 1.5}})
plot_spec = {"traces": traces,
"layout": {"title": {"text": "SPMe vs SPM 放電曲線(1C / 3C)"},
"xaxis": {"title": {"text": "放電容量 [Ah]"}},
"yaxis": {"title": {"text": "端子電圧 V [V]"},
"range": [2.4, 4.3]}}}
# --- Jupyter で matplotlib を使う場合は以下を有効化 ---
# import matplotlib.pyplot as plt
# for tr in plot_spec["traces"]:
# ls = ":" if tr["line"].get("dash") == "dot" else "-"
# plt.plot(tr["x"], tr["y"], ls, color=tr["line"]["color"], label=tr["name"])
# plt.xlabel("放電容量 [Ah]"); plt.ylabel("端子電圧 [V]")
# plt.ylim(2.4, 4.3); plt.legend(); plt.grid(alpha=0.3); plt.show()
実行すると、1C では SPM と SPMe の容量差はわずか(約 0.02 Ah)ですが、3C では 0.2 Ah 超に開くはずです。また 3C の出力にある「終了時の $c_e$:正極端」が 負の値になっている点に注目してください。$c_e < 0$ は物理的にあり得ません。 これは $D_e$ と $\kappa$ を初期濃度で固定した線形化モデルが枯渇領域で破綻しているサインで、 コード中では対数の引数を 1 mol/m³ でクリップして電圧の急落として扱っています。 現実のセル(と濃度依存物性を入れた DFN)では、枯渇が近づくと局所の輸送・反応が変化して 完全な負濃度にはなりません — この違いもフェーズ5で見ます。
まとめ — SPM との比較で何が改善したか
- レート依存の電圧降下:1C で約 70 mV、5C で数百 mV の電解液起因の損失が 電圧曲線に乗り、実測との一致が大きく改善する(特に 1C〜3C の中レート域)。
- レート依存の実効容量:カットオフ電圧に早く到達するため、 「レートを上げると取り出せる容量が減る」という実験事実を再現できる。
- 枯渇による電圧急落:高レートで放電末期に電圧が崖のように落ちる現象を (少なくとも定性的に)表現できる。
- 計算コストは SPM とほぼ同じ($c_e$ の 30 変数が増えただけ)。
3.7 SPMe の限界
SPMe は「電解液の物質輸送」は取り込みましたが、SPM から引き継いだ 一様反応の仮定はそのままです。これが次に破れるボトルネックになります。
反応分布の不均一 — 高レートで反応はセパレータ側に集中する
現実の電極では、$j(x)$ は5本の方程式の連立で自己無撞着に決まる分布です。 電流がイオンとして電極の奥(集電体側)まで届くには、電解液のオーム損 $\propto x/\kappa^{\mathrm{eff}}$ を余分に払わなければなりません。 つまりセパレータに近い粒子ほど「電気的に近くて安い」ので、 レートが上がるほど反応はセパレータ側へ偏ります。 さらに高レートでは正極の奥で $c_e$ が枯れて $i_0 \propto c_e^{1/2}$ が潰れ、 反応できる場所がますますセパレータ側へ押し出される — この正のフィードバックが、 電極の奥が実質的に「使えない」状態を作ります。
SPMe はこれをまったく表現できません。$j$ を一様と決め打ちしているため:
- 局所的に大きい $j$ が生む余分な過電圧(と電圧の早落ち)を捉えられない。
- 負極表面の局所電位が Li 析出(lithium plating)の条件に達するかどうかという 劣化解析には使えない($\phi_s - \phi_e$ の分布を持っていないため)。
- 電極厚さを増やした「厚膜電極」の設計検討では、まさに反応分布が主役になるため SPMe では答えが出ない。
また本章では $\kappa^{\mathrm{eff}}$ と $D_e$ を初期濃度 $c_{e0}$ で固定しました。 濃度が半分になれば $\kappa$ も大きく下がるので、勾配が深い高レートではオーム項も 本当は時間・位置依存です。この近似の緩和(濃度依存物性)も DFN で行います。
どれくらい効くのか、数字で見ておきます(いずれも本教材と同じ Chen2020 セル)。 本章の定数物性 SPMe は 2C で早くも正極端の枯渇を予測します(図3.2)。 一方、濃度依存物性まで入れた PyBaMM の SPMe は 2C なら 4.76 Ah 走り ($D_e$ は薄い電解液ほど大きく、枯渇を自己抑制するため)、3C では枯渇して 0.25 Ah で 止まります。そして反応分布まで解く DFN は、同じ 3C でも反応を組み替えて 2.30 Ah まで放電できます。「電解液を入れるか」だけでなく 「物性の濃度依存」「反応分布」がそれぞれ1段ずつ答えを変える — この階段をフェーズ5の図5.2で一望します。
注意 — 「SPMe の電圧が合っている」ことは「中身が合っている」ことを意味しない
端子電圧は空間平均された量なので、内部分布が多少間違っていても辻褄が合うことがあります。 モデルを劣化予測や安全性解析に使うなら、電圧だけでなく内部状態($c_e(x)$、$j(x)$、$\phi_e(x)$) の妥当性を確認する必要があります。フェーズ5では PyBaMM で事前計算した DFN の内部分布データを 使って、本章の SPMe がどこまで合っていてどこから破れるかを「答え合わせ」します。 特に $j(x)$ の不均一が C レートとともにどう成長するかに注目してください。
| できること / モデル | SPM | SPMe | DFN(フェーズ5) |
|---|---|---|---|
| 低レートの電圧曲線 | ○ | ○ | ○ |
| 中〜高レートの電圧・容量 | × | ○(〜2C 目安) | ○ |
| 電解液の濃度分布 $c_e(x,t)$ | × | ○ | ○ |
| 電位分布 $\phi_e(x)$、$\phi_s(x)$ | × | ×(積分値のみ) | ○ |
| 反応分布 $j(x)$ の不均一 | ×(一様と仮定) | ×(一様と仮定) | ○ |
| 計算コスト(相対) | 1 | ≈1〜2 | 10〜100 |
章末:理解度チェックと次章への橋渡し
理解度チェック
-
放電中、塩濃度が上がるのは負極側と正極側のどちらか。ソース項
$\pm(1-t_+^0)I/(FL^\pm)$ の符号と、輸率 $t_+^0$ の役割を使って説明せよ。
解答
上がるのは負極側。放電($I>0$)では負極のソース項は $+(1-t_+^0)I/(FL_n) > 0$(湧き出し)、正極は $-(1-t_+^0)I/(FL_p) < 0$(吸い込み)。 物理的には、負極の酸化反応が Li$^+$ を電解液に放出する一方、泳動はそのうち $t_+^0 \approx 26\%$ 分しか運び出せないので、残り $(1-t_+^0) \approx 74\%$ 分が 陰イオンと対になって塩として溜まる。正極では同じ理屈で塩が減る。 -
$\Delta\phi_{e,\mathrm{ohm}}$ の電極項の係数はなぜ $1/2$ ではなく $1/3$ なのか。
「線形な $i_e$ の平均」という言葉を使って説明せよ。
解答
電極内で $i_e$ は 0 から $I$ まで線形に変わる。電極を端から端まで通過する だけなら平均電流 $I/2$ が効くので係数は $1/2$($\phi_e(L_n)-\phi_e(0) = -IL_n/2\kappa^{\mathrm{eff}}$)。 しかし電圧式に入るのは電極内の粒子が平均して感じる $\langle\phi_e\rangle$ であり、 観測点自身が電極内に分布している。2次関数 $x^2/(2L_n)$ の電極平均は $L_n/6$ なので、 集電体側へ $1/6$ 分だけ戻り、$1/2 - 1/6 = 1/3$。 つまり「反応が分布した多孔質電極は電解液抵抗 $L/\kappa^{\mathrm{eff}}$ の $1/3$ だけを見せる」。 -
本章のセル($L_n/(3\kappa_n^{\mathrm{eff}}) + L_s/\kappa_s^{\mathrm{eff}} + L_p/(3\kappa_p^{\mathrm{eff}})
= 4.16\times10^{-4}$ Ω·m²)を 2C($I = 97.4$ A/m²)で放電するとき、
$\Delta\phi_{e,\mathrm{ohm}}$ はいくらか。また、この値は放電中に変化するか。
解答
$\Delta\phi_{e,\mathrm{ohm}} = -97.4 \times 4.16\times10^{-4} \approx -40.5$ mV。 $\kappa^{\mathrm{eff}}$ を初期濃度で評価する本章の近似では、定電流放電の間この値は 一定(時間変化しない)。時間変化するのは濃度項 $\Delta\phi_{e,\mathrm{conc}}$ の方(時定数 $\tau_e \approx$ 数百秒で発達)。 -
仮に $t_+^0 = 1$ の電解質(理想的な単一イオン伝導体)が使えたら、本章で導いた
2つの補正項はどうなるか。図3.1のスライダーでも確かめよ。
解答
ソース項 $(1-t_+^0)aj/F$ がゼロになるので濃度勾配がそもそも立たず ($c_e \equiv c_{e0}$ のまま)、$\Delta\phi_{e,\mathrm{conc}} = 0$。 電圧に残る電解液損失は $\Delta\phi_{e,\mathrm{ohm}} = -I[\cdots]$ のオーム項だけになる (これは電流を運ぶ限り消えない)。つまり物質輸送に関して SPM の仮定 $c_e = c_{e0}$ が厳密に正しくなる。Li$^+$ が電流を全部運ぶなら拡散の出番がない、 という 3.1 節の物理の裏返し。図3.1で $t_+^0$ を大きくすると勾配が浅くなることが確認できる (スライダー上限 0.6 でも傾向は明瞭)。
次章への橋渡し — 「解き方」そのものを学ぶ
本章まで、時間積分は solve_ivp や Crank–Nicolson に「お任せ」してきました。
なぜ拡散方程式には陰的スキームが要るのか(陽的だと $\Delta t$ をどこまで刻む必要があるのか)、
FVM の「調和平均」はどこから出てくるのか、BDF とは何をしているのか — フェーズ4では、
この「解き方」自体を主役にします。空間離散化(FVM)、剛性(stiffness)と陰解法、
非線形方程式のニュートン法まで揃えると、フェーズ5で DFN の5式を丸ごと解く道具が手に入ります。