まずは反応器出口成分の一部を単純にリサイクルする場合の計算例です。Excelを使うパターンとPython、シミュレーターを使うパターンをご紹介します。
反応:A + B -> C
分子量:A:30[kg/kmol]、B:50[kg/kmol]、C:80[kg/kmol]
成分Aに対する反応転化率:60%
リサイクル比:2 (リサイクルモル流量/製品モル流量=3)
以下の図のイメージとなります。
まずはExcelで地道に逐次代入計算を行うアナログな方法です。
以下のイメージ図のように、まず、リサイクルラインの初期値を適当な数値で代入し(イメージ図の例では各成分0.1[kmol/s]としています)、青矢印の流れで、混合、反応、スプリット部分の計算式を入力していきます。
続いて、緑矢印に沿って、計算結果を代入し、左右の計算結果がある程度近くなるまで手動で値を上書きしていきます。(形式選択貼り付けで値のみを張り付ける必要があります)
さすがにこの方法は大変なので、次にPythonのソルバーを使う方法をご紹介します。
例えば、以下のような形でscipyのソルバーを使って式を連立して解くと、一気に解くことができます。
以下のコードでFoが反応器出口モル流量、x1o~x3oは反応器出口組成になります。
Excelのソルバーを使う場合も、同様に連立方程式を作成し、残差が最小になるように解くことが可能です。
import numpy as np
from scipy.optimize import fsolve
Ff = 2
MW = np.array([50, 30, 80])
xf = np.array([0.5, 0.5, 0.0])
Rconv = 0.6
Rprod = 1.0 / 3.0
def equations(x):
Fo, x1o, x2o, x3o = x
xo = np.array([x1o, x2o, x3o])
Rrate = (Ff*xf[0] + Fo /Rprod*(1-Rprod)*x1o)*Rconv
Fr = [
Ff * xf[0] + Fo / Rprod * (1 - Rprod) * x1o,
Ff * xf[1] + Fo / Rprod * (1 - Rprod) * x2o,
Ff * xf[2] + Fo / Rprod * (1 - Rprod) * x3o
]
return ( x1o + x2o + x3o - 1
,Fr[0] - Rrate - Fo / Rprod * x1o
,Fr[1] - Rrate - Fo / Rprod * x2o
,Fr[2] + Rrate - Fo / Rprod * x3o)
Fo, x1o, x2o, x3o = fsolve(equations, ( 100, 0.5, 0.5, 0.5))
print(Fo, x1o, x2o, x3o)
シミュレーターを使って、同様の計算を行うシンプルなモデルを作成してみます。
AVEVA Process Simulation(APS)では、自由に計算ユニットを作成することができるため、単純なミキサー、反応器、スプリッターを作成してリサイクル計算を行います。
まずは、物質収支確認用に、分子量と適当な物性を持たせた成分を作成します。以下の例では、A、B、Cという適当なPetro成分を作成し、分子量を指定しています。
Petro成分の本来の使い道とは異なりますが、数値計算として解きたい場合に便利な方法です。
反応:A + B -> C
分子量:A:30[kg/kmol]、B:50[kg/kmol]、C:80[kg/kmol]
成分Aに対する反応転化率:60%
各成分の平衡定数:A:3、B:4、C:0.2(気相は全てリサイクル、液相は全て製品)
以下の図のイメージとなります。
作成中
作成中
作成中
作成中
当サイトに不具合、ご意見等ございましたらCEsolutionにお知らせください。