Canteraの使い方2:混合と化学平衡の計算

※Canteraバージョン:3.0.0

次にもう少し化学的な計算をしてみる。ここでは、Canteraのmixing.pyの例題を例にとる。

PythonのCanteraが使える環境で、以下のコマンドで計算できる。

python mixing.py

この例題では、空気とメタンを理論混合比で混合し、化学平衡を計算している。以下で、mixing.pyの中身を説明する。

import cantera as ct
gas = ct.Solution('gri30.yaml')

Canteraをインポートし、gri30.yamlをgasオブジェクトに定義する。gri30.yamlは、反応メカニズムが定義されたファイルだ。

# Stream A (air)
A = ct.Quantity(gas, constant='HP')
A.TPX = 300.0, ct.one_atm, 'O2:0.21, N2:0.78, AR:0.01'

次に、AにエンタルピーH、圧力P一定の状態を定義する。Aは空気で条件は、温度T=300[K]、圧力P=1[atm]、組成X=(O2=0.21, N2=0.78, Ar=0.01)[モル分率]である。ちなみに、#で始まる行はコメント行。

次に、BにメタンCH4を定義する。

# Stream B (methane)
B = ct.Quantity(gas, constant='HP')
B.TPX = 300.0, ct.one_atm, 'CH4:1'

空気AとメタンBを理論混合比で設定する。

# Set the molar flow rates corresponding to stoichiometric reaction,
# CH4 + 2 O2 -> CO2 + 2 H2O
A.moles = 1
nO2 = A.X[A.species_index('O2')]
B.moles = nO2 * 0.5

A.moles で、空気Aを1[kmol]と設定する。次のnO2 = A.X[A.species_index('O2')]は、空気AのO2(酸素)の物質量XをnO2という変数に代入している。B.molesでは、nO2の半分の量をメタンの量として設定している。これで、空気AとメタンBを理論混合比で投入することになる。

# Compute the mixed state
M = A + B
print(M.report())

混合は、空気AとメタンBを実際にプラスしてやればよい。混合気をMとしている。printで混合気Mを出力してやると、

  gri30:

       temperature   300 K
          pressure   1.0133e+05 Pa
           density   1.1269 kg/m^3
  mean mol. weight   27.742 kg/kmol
   phase of matter   gas

                          1 kg             1 kmol
                     ---------------   ---------------
          enthalpy       -2.5351e+05       -7.0327e+06  J
   internal energy       -3.4342e+05       -9.5271e+06  J
           entropy            7221.9        2.0035e+05  J/K
    Gibbs function       -2.4201e+06       -6.7137e+07  J
 heat capacity c_p            1070.4             29695  J/K
 heat capacity c_v            770.71             21381  J/K

                      mass frac. Y      mole frac. X     chem. pot. / RT
                     ---------------   ---------------   ---------------
                O2            0.2192           0.19005           -26.334
               CH4          0.054952          0.095023           -54.676
                N2           0.71281           0.70588           -23.381
                AR          0.013032         0.0090498           -23.315
     [  +49 minor]                 0                 0

となる。Xはモル分率、Yは質量分率を表す。

# Show that this state corresponds to stoichiometric combustion
M.equilibrate('TP')
print(M.report())

最後に、温度圧力一定で化学平衡を計算し、結果を出力する。

  gri30:

       temperature   300 K
          pressure   1.0133e+05 Pa
           density   1.1269 kg/m^3
  mean mol. weight   27.742 kg/kmol
   phase of matter   gas

                          1 kg             1 kmol
                     ---------------   ---------------
          enthalpy       -3.0024e+06       -8.3292e+07  J
   internal energy       -3.0923e+06       -8.5786e+07  J
           entropy            7204.2        1.9986e+05  J/K
    Gibbs function       -5.1637e+06       -1.4325e+08  J
 heat capacity c_p            1104.2             30633  J/K
 heat capacity c_v            804.53             22319  J/K

                      mass frac. Y      mole frac. X     chem. pot. / RT
                     ---------------   ---------------   ---------------
               H2O           0.12341           0.19005           -121.32
               CO2           0.15074          0.095023           -185.83
                N2           0.71281           0.70588           -23.381
                AR          0.013032         0.0090498           -23.315
     [  +49 minor]        2.0428e-19        1.7711e-19

完全燃焼して、H2O、CO2、N2、Arが残る。

組成や混合比、温度、圧力などの条件を変えて計算してみるとよい。

スポンサーリンク
科学技術計算のご相談は「キャットテックラボ」へ

科学技術計算やCAEに関するご相談、計算用プログラムの開発などお困りのことは「株式会社キャットテックラボ」へお問い合わせください。

お問い合わせはこちら

フォローする

スポンサーリンク