モデリングと数値計算(主に化学工学向け)

化学反応、移動現象のモデリングと数値計算の話

吸着平衡 ー平衡到達時の吸着量計算ー

はじめに

下図のように気体(例えばCO2)を吸着する吸着材(例えばゼオライト)が容器に充填されていて、その中にCO2を封入したところ、気相中のCO2は徐々にゼオライトに吸着されていって最終的には平衡状態に至った。

f:id:schemer1341:20201213200012p:plain:w400

初期のCO2分圧が 50 Pa 、吸着量はゼロであったとして、平衡到達時のCO2分圧 [Pa]、CO2比吸着量 [mol/kg] (吸着材重量あたり吸着量)はいくらになるか。なお、CO2-ゼオライトの間の吸着平衡関係は下記のラングミュア式に従うものとする。

f:id:schemer1341:20201213201025p:plain:w500

解き方

初期と平衡到達後の気相・吸着材中の物質量合計は変わらないため物質量保存の式と、吸着平衡の式を同時に満たすCO2分圧、CO2比吸着量を求めればよい。

物質量保存の式は下記で表される。

(平衡時 気相CO2量 mol) + (平衡時 CO2吸着量 mol) = (初期 気相CO2量 mol) + (初期 CO2吸着量 mol)


\displaystyle{
\frac{p^*\epsilon V}{RT}+\rho V q^* = \frac{p_0 \epsilon V}{RT} + \rho V q_0
}

ここで p^*,\ q^* は平衡時の分圧、吸着量、p_0,\ q_0 は初期の分圧、吸着量である。気相CO2量はCO2が理想気体であるとして気体の状態方程式から求めている。

式を整理すると、


\displaystyle{
\frac{\epsilon}{RT}(p^* - p_0) + \rho (q^* - q_0)=0 \quad \cdots \quad \text{(1)}
}

となる。これに次の吸着平衡式 (2) を代入すれば未知数は  p^* のみとなるので方程式を解くことができる。


\displaystyle{
q^* = \frac{q_{max} K p^*}{1 + K p^*} \quad \cdots \quad \text{(2)}
}

とはいえ、手計算だとだいぶ面倒そうな形になるためPythonを用いて数値計算すると、

import scipy.optimize

R = 8.3145  # 気体定数 [J/K/mol]
Rho = 500  # 充填密度 [kg/m3]
Eps = 0.5  # 空隙率 [-]
T = 300  # 温度 [K]

def langmuir(p):
    qmax = 1e-3
    k = 2e-2
    return qmax * k * p / (1 + k * p)

def equation(p):
    p0 = 50  # 初期気相分圧 [Pa]
    q0 = 0  # 初期吸着量 [mol/kg]
    return Eps/R/T * (p - p0) + Rho * (langmuir(p) - q0)

print(scipy.optimize.newton(equation, 50))
1.0018627181806559

平衡時気相CO2分圧として約1.0 Paが得られ、これを式(2)に代入すれば平衡時CO2比吸着量として 約2.0\times10^{-5} mol/kg が求まる。

吸着平衡式の曲がりの癖が強い場合などにNewton法でうまく収束しないケースもあるかもしれない。その場合は計算初期値を変えたり、他の計算法に変える(ex. 二分法)ことを考える必要がある。