2006 化学反応ダイナミクス概論 (名古屋大学大学院講義)

CHEMKIN 入力ファイル書式

ここでは、CHEMKIN (minimal) の入力ファイル書式について解説します。

目次

CHEMKIN Interpreter 入力 (chem.inp)
1. 入力ファイルの構成
2. Elements block (元素の指定)
3. Species block (化学種の指定)
4. Thermo block (熱力学関数の入力)
5. Reactions block (反応機構の入力)
SENKIN 入力 (senk.inp)
Binary-CSV コンバータ 入力 (sb2c.inp)
Rxn Contribution ツール入力 (rxnc.inp)
熱力学データファイル (therm.dat)

CHEMKIN Interpreter 入力 (chem.inp)

Interpreter 入力書式の完全な解説は以下の文書を参照して下さい。
'Chemkin-II: A Fortran Chemical Kinetics Package for the Analysis of Gas-Phase Chemical Kinetics,' R. J. Kee, F. M. Rupley, and J. A. Miller, Sandia Report, SAND89-8009B (1995).

1. 入力ファイルの構成

入力ファイルの例を以下に示します。
!-----------------------------------------------------------------------
!                     'exmHCO01.sch'
!   C-H-O system machanism based on ...
!-----------------------------------------------------------------------
ELEMENTS
  H C N O
END
!-----------------------------------------------------------------------
SPECIES
  H2 H O2 O OH HO2 H2O2 H2O N2
  CH3 CH4
...(中略)...
END
!-----------------------------------------------------------------------
THERMO
CH3               121286C   1H   3          G  0300.00   5000.00  1000.00      1
 0.02844051E+02 0.06137974E-01-0.02230345E-04 0.03785161E-08-0.02452159E-12    2
 0.16437809E+05 0.05452697E+02 0.02430442E+02 0.11124099E-01-0.01680220E-03    3
 0.16218288E-07-0.05864952E-10 0.16423781E+05 0.06789794E+02                   4
END
!-----------------------------------------------------------------------
REACTIONS  KJOULES/MOLE  MOLECULES
  H + CH3 (+M) = CH4 (+M)        3.50E-10   0.      0.    !94CEC (300-1000K)
     LOW /1.726E-24 -1.8 0./                              ! for M=Ar
     TROE /0.63 61. 3315./
...(中略)...
END
!-----------------------------------------------------------------------
順序
入力は、以下の順に記述します。Thermo block は省略することができます。
(1) Elements block
'ELEMENTS'〜'END'
(2) Species block
'SPECIES'〜'END'
(3) Thermo block
'THERMO'〜'END'
(4) Reactions block
'REACTIONS'〜'END'
コメント
フリーフォーマット部分では任意の位置に '!' (感嘆符) を挿入することができ、それ以降はコメントと見なされます。 固定フォーマットの、Thermo block の中では使えません。

2. Elements block (元素の指定)

考慮する化学種 (原子,分子) に含まれる元素をすべて列挙します。 'ELEMENTS' と 'END' の間に、空白 (複数可) または改行で区切って、 元素記号を書いて下さい。元素記号は、すべて大文字で書かなければ なりません。 (例えば、アルゴンは AR) (* 注1)
(例1)
ELEMENTS H O AR CL END
(例2)
ELEMENTS
  H O C N HE
END

3. Species block (化学種の指定)

考慮する化学種 (原子・分子) をすべて列挙します。 'SPECIES' と 'END' の間に、元素指定の場合と同様に空白または改行で 区切って、化学種の名前を書いて下さい。   化学種の名前は、16文字以内で、第1文字には、数字, +, = は許されません。'CH4', 'C2H6' のような化学式である必要はありませんが、 therm.dat に登録されている熱力学データを利用する場合は、 therm.dat 内の名前と一致しなければなりません。 (例えば、formyl radical は、CHO ではなく、HCO)   化学式 (元素組成) だけでは分子が特定できない場合は、Chemkin Thermodynamic Data Base に関する文書 (SAND87-8215B) を参照して、 確認して下さい。例えば、therm.dat 内には、C3H4 という組成の化合物が、 3つ登録されており、'C3H4', 'C3H4C', 'C3H4P' という名称になっています。 これらは、Chemkin thermodynamic Data Base では、順に、allene, cyclopropene, propyne を意味しています。

4. Thermo block (熱力学関数の入力)

このブロックはオプションです。 Species block で指定した、 化学種すべてが、therm.dat 内に登録されていて、therm.dat 内の熱力学データを使用する場合は、このブロックは省略できます。   'THERMO' と 'END' の間に1つの化学種につき、4行の定められた 書式で、熱力学関数の係数を入力します。このブロックの書式は、therm.dat の書式と同じですので、 詳細は、熱力学データファイル (therm.dat) の項を参照して下さい。   Chemkin では熱力学関数の登録されていない化学種を含む計算を 実行することはできません。熱力学関数は、逆反応の速度定数の計算 (Reactions block の項を参照) と、 温度変化の計算に必要な、発熱量・比熱の計算に不可欠であるためです。 ただし、逆反応を考慮する必要がなく、温度変化が無視できるような 特殊な状況 (研究室での実験ではむしろ特殊ではないが...) では、 熱力学データは不要になります。残念ながら、Chemkin は逆反応を一切 考慮しない、等温系の反応計算においても、熱力学データがないことは、 許されません (* 注2)。このような場合は、 正確な熱力学データは不必要ですので、ダミーの熱力学データを登録して、 エラーを回避することができます。ただし、このようなダミーデータを therm.dat に登録してしまうことは、後々の間違いの元になりますので、 ダミーであることを注釈した上で、ここの、Thermo block に登録してください。

5. Reactions block (反応機構の入力)

考慮する化学反応の反応式と速度パラメータを列挙します。 書式はフリーフォーマットですが、'REACTIONS', 'END' は必ず一行を使って 記述し、一つの反応は一行で記述しなければなりません。一つの反応は、 反応式, 反応速度パラメータの順に記述します。
[反応式の入力]
reac1 + reac2 + reac3 = prod1 + prod1 + prod3
の形式で与えます。反応物、生成物の個数は 1 以上 3 以下です。反応物, 生成物の名前は、以下の特例を除いて、Species block に定義されたものと、 一致しなくてはなりません。
特例1 : 同じ反応物または生成物が2個以上ある場合、 次のような記述が可能です。
2OH = H2O2
特例2 : M は前濃度を表す、特殊な反応物・生成物です。たとえば
H + H + M = H2 + M
- 第三体が関与する反応の記述の詳細は後述します。
反応物と生成物の区切りには、以下の記号が使えます。
=>
正反応の速度定数を与え、正反応のみを計算します。
= または <=>
正反応の速度定数を与えますが、熱力学データから逆反応速度定数を 計算して、正逆の両反応を計算します。
[反応速度定数と単位系]
反応速度定数は、修正アレニウス式
  (1)
のパラメータ, A, b, Ea をこの順に、1つ以上の空白で区切って 入力します。   先頭行の 'REACTIONS' の後に、空白で区切って、 活性化エネルギーの単位系、前指数因子の単位系を指定する、 2つのキーワードを置くことができます。キーワードを省略した場合の 単位系は、cal/mol, mol-cm-s-K となります。 許されるキーワードは以下の通りです。
CAL/MOLE, KCAL/MOLE, JOULES/MOLE, KJOULES/MOLE, KELVINS
MOLES, MOLECULES
前指数因子の単位は、mol-cm-s-K (デフォルト, MOLES) と molecules-cm-s-K (MOLECULES) の選択ができますが、mol/l (リットル) などは使えません。
[第三体の関与する反応]
圧力依存性により、以下の3つの書式を使い分けます。 科学論文では、第三体の関与する反応は、圧力依存性の有無にかかわらず、 必ず M を付けて表記しますが、CHEMKIN の入力は、反応速度を計算法を プログラムに正確に指示するものですので、混同しないで下さい。
[書式1] A + B => C
高圧極限の速度定数が与えられているとして計算を行います。 実際にその反応が高圧極限にある必要はなく、高圧極限であることを示して いるわけでもありません。
[書式2] A + B + M => C + M
低圧極限の速度定数が与えられているとして計算を行います。
[書式3] A + B (+ M) => C (+ M)
圧力依存性を、補助入力から読み取って、漸下域の速度定数 を評価します。
書式3 を指定した場合は、圧力依存に関する補助入力が必要になります。 以下のような補助入力が可能です。
— Lindemann 式 —
Lindemann 式
  (2)
を使って圧力依存性を評価します。ここで X は圧力を漸下圧 [M]c で規格化した、換算圧力です。
  (3)
  (4)
反応式と同じ行には高圧極限の A, b, Ea を入力してください。 低圧極限の速度パラメータは、LOW キーワードを使って、 次の行に入力します。
(例)
A + B (+ M) = C (+ M)     2.3E14   0.0   156.2
                     LOW/ 6.3E27  -2.6   -54.3 /
— Troe 式 —
Troe 式
  (5)
  (6)
  (7)
  (8)
  (9)
  (10)
を使って圧力依存性を評価します。Lindemann 式の場合と同様に高圧極限、 低圧極限の速度パラメータを与え、さらに次の行に TROE キーワードを使って、パラメータ、a, T***, T*, T** をこの順に与えます。 T** はオプションで、省略すると (10) 式の最後の項は無視されます。
(例)
A + B (+ M) = C (+ M)    2.3E14  0.0  156.2
                    LOW/ 6.3E27 -2.6  -54.3 /
                   TROE/ 0.604  6980.  132. /
— Lindemann 式, Troe 式 に共通な事項 —
低圧極限、漸下域の速度定数の低圧極限部分は、一般に希釈気体に よって、大きく変化するため、この効果を enhancement factor をして指定 することができます。
(例)
 A + B + M = C + M     6.3E27  -2.6  -54.3
     CO/1.9.  H2/1.7/  CO2/3./  H2O/5./
この例では、CO, H2, CO2, H2O に対して、1.9, 1.7, 3., 5. 倍の低圧極限速度定数を使うことを指定してします。漸下域の場合も、 同様な行を、補助入力の最後に付加することができます。

(* 注1)
正確には、プログラムの仕様は小文字にも 対応していますが、通常利用される therm.dat 内の元素指定がすべて、大文字 であるために、小文字を使うためには、therm.dat を修正しなければ ならなくなります。
(* 注2)
Chemkin の最新バージョンでは、 熱力学データの不要な反応計算では、ダミーの熱力学データを使わなくても、 エラーを出さないようになっているようです。

SENKIN 入力 (senk.inp)

SENKIN 入力書式の完全な解説は以下の文書を参照して下さい。
'SENKIN: A Fortran Program for Predicting Homogeneous Gas Phase Chemical Kinetics with Sensitivity Analysis,' A. E. Lutz, R. J. Kee, and J. A. Miller, Sandia Report, SAND87-8248 (1995).
入力ファイルの例を以下に示します。
SENS
CONP
PRES 1.0
TEMP 1000.
TIME 2.E-4
DELT 1.E-4
REAC H2  2
REAC O2  1
REAC N2  4
END
一行に1つのキーワードを記述します。 '.' (ピリオド), '/' (スラッシュ), または '!' (感嘆符) で始まる行は注釈行と解釈されます。 最後の行に入力終了のキーワード 'END' を記述します。行の頭に 空白を挿入することはできません。
感度解析
感度解析を行う場合は、第1行に 'SENS' を記入します。 感度計算をしない場合は、次の [系指定] が第1行になります。
系指定
熱力学的な系を指定します。必ず1つを選択しなければ なりません。また、この指定は、'SENS' 行の直後(2行目)または、1行目 でなければなりません。指定できるキーワードは以下の通りです。
CONP
定圧 (CONstant Pressure) 断熱系の計算
CONV
定容 (CONstant Volume) 断熱系の計算
CONT
等温 (CONstant Temperature) 定圧系の計算
ICEN
0次元内燃機関 (Internal Combustion ENgine) の計算
以下のキーワードを指定した場合は、SENKIN Driver に、 FORTRAN 関数 VOLT (容積指定), または TEMPT (温度指定) を与える必要があります。
VTIM
容積変化が時間の関数として与えられている (Volume as a function of TIMe) 断熱系の計算 (内燃機関などを想定)
TTIM
温度変化が時間の関数として与えられている (Temperature as a function of TIMe) 定圧系の計算
*
ソースコードを変更しない限り、現在の Chemkin minimal package の 'VTIM' キーワードは 'ICEN' と完全に同じ計算を行います。これは 上記の 'ICEN' が 'VTIM' 機能を利用して実装されているためです。
これ以降のキーワードは 'END' キーワードより前の任意の位置に置くこと ができます。
初期条件
以下のキーワードにより、初期条件を指定します。
TEMP
初期温度 [K]
PRES
初期圧力 [atm]
REAC
複数指定可能で、初期状態で存在する化学種の名前 (CHEMKIN Interpreter 入力の Species block に定義されていなければならない) とモル分率に比例 する値を指定します。すべての REAC 入力の合計が1となるように 規格化されるので、絶対値である必要はありません。
数値積分制御
以下のキーワードにより、数値積分制御を指定します。
TIME
積分を終了する時間 [s]
DELT
senk.out, tign.out への出力時間間隔 [s]
オプション
必要に応じて、以下のキーワードを使うことができます。
REST
rest.bin ファイルにデータが残っている場合は、このキーワードで 初期条件を rest.bin から読よう指定できます。この場合、TEMP, PRES, REAC 入力は不要で、あっても無視されます。
TRES
計算のリスタートの場合、通常は時間を rest.bin から読みますが、 このキーワードで、開始時間 [s] を指定することができます。
ATOL
独立変数の絶対許容誤差 (質量分率 - SENKIN 内での濃度は質量分率) デフォルトは 1E-20
RTOL
独立変数の相対許容誤差 デフォルトは 1E-8
ATLS, RTLS
感度係数の絶対・相対許容誤差 デフォルトは 1E-5
ICEN オプション
系指定キーワードに 'ICEN' (または 'VTIM') を指定した場合のみ、以下のオプションパラメータを 指定することができます。
CMPR
圧縮比 (compression ratio; エンジンシリンダ内容積の最大値の最小値に対する比) デフォルトは 18.4
RPM
エンジンの回転数 (単位 rpm) デフォルトは 1500 rpm
LOLR
連接棒 (connecting rod) とクランク・アーム (crank arm) の長さの比。 デフォルトは 3
VOLC
隙間体積 (clearance volume; 上死点におけるシリンダ内容積) この値は、計算に本質的な影響は与えない。 mass (総質量) の出力が影響 されるのみである。 デフォルトは 100 cm3
DEG0
初期クランク角 (単位は度; 上死点を 0 度とする) デフォルトは 180度

Binary-CSV コンバータ 入力 (sb2c.inp)

入力ファイルの例を以下に示します。
===== sb2c (sbin2csv.f) Control file =====
[ TIME OUTPUT CONTROL:  s ms us atol=# rtol=# mind=# ]
 us mind=5e-6 atol=1e-15 rtol=.05
[ CONC OUTPUT CONTROL:  all selonly none molecules/cc molefrac ]
 molecules/cc selonly
 H O OH HO2 H2 O2
[ SENS OUTPUT CONTROL:  all none (or species name list) ]
 H O TEMP
3つのブロック (TIME OUTPUT, CONC OUTPUT, SENS OUTPUT) それぞれに、時間出力, 濃度出力, 感度係数出力 の制御を記述します。 第1行と、 '[' で始まる行は、コメント行で、変更しても構いませんが、 削除してはいけません。キーワードは大文字でも小文字でも構いませんが、 化学種の名前指定では、熱力学データ・反応式と、 大文字・小文字を区別して、一致しなければいけないことに、 注意して下さい。
時間出力制御 (TIME OUTPUT CONTROL) (1行)
単位指定キーワード、's', 'ms', 'us' (秒, ミリ秒, マイクロ秒) の何れかと、出力頻度指定キーワード 'atol=?', 'rtol=?', 'mind=?' を指定します。単位指定キーワード省略時の規定値は 's' (秒) です。   Binary ファイルには、数値積分の1ステップごとの濃度が、 格納されていますが、出力をプロットして見る場合などに、 全ステップの情報は必要なく、また、ファイルが非常に大きくなる ので .csv ファイルに出力する場合には 「間引き」 をします。 この「間引き」を制御するのが、出力頻度指定キーワードです。   濃度に、大きな変化がなければ、出力時間幅は大きくてよいので、 データは、間引くことができますので、これを制御するのが、atol と rtol です。プロットの横軸分解能から、ある程度以上細かい時間の出力 は無駄になりますので、最小の出力時間幅を決めるのが mind です。 以下に各キーワード指定の意味を示します。
atol (absolute tolerance)
絶対濃度変化の許容限界 (absolute tolerance) を指定 するもの。この場合の濃度はモル分率です。絶対濃度が atol で指定された濃度以下の化学種の、濃度変化は意味がないとして、 出力時間幅の決定では考慮しません。例えば、上の 'atol=1e-15' は、モル分率が 1 × 10-15 以下の化学種の濃度変化は 出力時間幅の決定で、無視されます。   このキーワードを指定しなかった場合の規定値は、1.0E-16 です。
rtol (reletive tolerance)
相対濃度変化の許容限界 (relative tolerance) を指定します。 前回の出力から、いずれかの変数の相対変化が、rtol で指定した 値よりも大きくなった段階で、次の出力を行います。例えば、上の 'rtol=.05' では許容相対変化は、5 % です。   このキーワードを指定しなかった場合の規定値は、0.1 (10%) です。
mind (minimum delta-t)
最小出力時間刻み (minimum delta-t) を指定します。 (単位は秒) atol, rtol の指定に関わらず、出力の刻み幅は、 mind で指定された値以下にはならないように制御されます。例えば、 上の、'mind=5e-6' では最小幅は、5 マイクロ秒となります。   このキーワードを指定しなかった場合の規定値は、1.0E-05 (10 microsec) です。
maxd (maximum delta-t)
最大出力時間刻み (maximum delta-t) を指定します。 (単位は秒) atol, rtol の指定に関わらず、出力の刻み幅は、 mind で指定された値以上にはならないように制御されます。
濃度出力制御 (CONC OUTPUT CONTROL) (1行または2行)
濃度単位指定キーワード、'molecules/cc', 'molefrac' の何れかと、出力化学種指定キーワード、'none' (出力なし), 'selonly' (選択した化学種のみ), 'all' (すべて) の何れかを、1行目に 指定します。省略時の規定値は 'molecules/cc' と 'all' になります。
  2行目は、1行目に 'selonly' を指定した場合にのみ入力し、 他の場合は、この行があってはいけません。2行目には、出力したい、 化学種の名前を、空白で区切って、並べて下さい。   上の例では、H, O, OH, HO2, H2, O2 の濃度のみが、molecules cm-3 の単位で出力されます。
感度係数出力制御 (SENS OUTPUT CONTROL) (1行)
'all' (すべての化学種に関して感度係数を出力) あるいは、 'none' (一切出力しない) を指定するか、出力したい独立変数 の名前を空白で区切って入力します。独立変数の名前は、化学種の名前か、 'TEMP' (温度) でなければなりません。   上の例では、化学種 H, O 及び温度に対する感度係数が出力されます。   この入力は、senk.inp で SENS を指定していない場合は、 意味を持ちませんが、削除してはいけません。

Rxn Contribution ツール入力 (rxnc.inp)

入力ファイルの例を以下に示します。
===== rxnc (rxncntrb.f) Control Input File =====
[ (Time points to be investigated in s) time1, time2, ... ]
 2.5e-4 1.78e-4 5e-5 1.e-6
[ (species to be investigated) name1, name2, ... ]
 H O HO2
[ options (atol, min%, top#, sbin) ]
 atol=1e-20 min%=0.1 sbin=save.bin
第 3 行が時間指定、第 5 行が化学種指定、第 7 行がオプション指定です。時間指定行では、計算を行い時間を s (秒) の単位で指定します (複数可)。化学種指定行では、計算を行う化学種の名前 (複数指定可) を指定します。
オプション指定行では、以下の 'キーワード=数値' で指定します。
sbin=ファイル名
SENKIN のバイナリ出力のファイル名を指定します。 このオプションを省略した時のデフォルトは、save.bin です。
top#=n (整数)
寄与の大きい上位 n 個反応を出力します。
min%=v (実数)
寄与が v % 以上の反応を出力します。
atol=ATOL
SENKIN 入力で指定した絶対精度と同じ値を入力して下さい。 デフォルトは SENKIN 入力と同じ、1E-20 です。

熱力学データファイル (therm.dat)

熱力学データ書式の完全な解説は以下の文書を参照して下さい。
'The Chemkin Thermodynamic Data Base,' R. J. Kee, F. M. Rupley, and J. A. Miller, Sandia Report, SAND87-8215B (1994).
熱力学関数は、 NASA 多項式の形に回帰されて用いられています。
  (11)
  (12)
  (13)
通常、温度範囲を 300〜1000 K, 1000〜5000 K に分けて、2組の 係数を使い分けます。熱力学データファイルは、高温用の a1, a2, ..., a7, 低温用の a1, a2, ..., a7 の 14 個の係数を並べたものになっています。 この他に、第1行には、化学種名, 原子組成 などの情報を記述します。 書式の詳細は上記文書を参照して下さい。 以下に熱力学データの例を示します。
AR                120186AR  1               G  0300.00   5000.00  1000.00      1
 0.02500000E+02 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00    2
-0.07453750E+04 0.04366000E+02 0.02500000E+02 0.00000000E+00 0.00000000E+00    3
 0.00000000E+00 0.00000000E+00-0.07453750E+04 0.04366000E+02                   4

© 2006 by A. Miyoshi.  All rights reserved.