この文書では Chemkin-II minimal パッケージ
の概要と使用方法を解説しています。
インストール方法
インストール
Windows 用実行ファイル
- ダウンロードした CKmExLarge.zip (または CKmExSmall.zip)
を解凍すると、サブフォルダ CKmExLarge (または CkmExSmall)
内に、以下のファイルが生成します。
- 実行ファイル
chem.exe senk.exe sb2c.exe findth.exe rxnc.exe shock.exe
equil.exe tran.exe premix.exe pb2c.exe psr.exe
sbdump.exe sbgen.exe sbhmix.exe sbliq.exe sbrest.exe sbmod.exe
- サンプル入力ファイル
chem.inp therm.dat senk.inp sb2c.inp sb2c2.inp rxnc.inp
shk_chem.inp shock.inp eq_chm.inp equil.inp pm_chem.inp pm_chem2.inp
premix.inp premix2.inp pb2c.inp pb2c2.inp tran.dat ps_chem.inp psr.inp
- 実行ファイルは Intel x86/x64 プロセッサ
(または互換プロセッサ) を搭載する PC 上の Windows
でのみ使用できます。 動作は Windows 7/8/8.1/10 で確認されています。
ソースファイルからのコンパイル
*
上の実行ファイルを利用した Windows での実行には不要です.
サンプルの実行 (Windows)
- コマンドプロンプトでパッケージを解凍したディレクトリに移動します。
- 以下をこの順に入力して、正常に実行されることを
確認してください。
$ chem < chem.inp > chem.out
$ senk < senk.inp > senk.out
$ sb2c < sb2c.inp > sb2c.out
$ sb2c < sb2c2.inp > sb2c2.out
$ rxnc < rxnc.inp > rxnc.out
- 出力ファイル (.out) をメモ帳などで開いて、
エラー表示がなければ、正常に実行されています。
- 以下で shock, equil, premix, psr のサンプルが実行されます.
* このテストは senkin のみを使用したい場合には不要です.
$ chem < shk_chem.inp > shk_chem.out
$ shock < shock.inp > shock.out
$ chem < eq_chm.inp > eq_chm.out
$ equil < equil.inp > equil.out
$ chem < pm_chem.inp > pm_chem.out
$ tran < tran.dat > tran.out
$ premix < premix.inp > premix.out
$ pb2c < pb2c.inp > pb2c.out
$ chem < pm_chem2.inp > pm_chem2.out
$ tran < tran.dat > tran.out
$ premix < premix2.inp > premix2.out
$ pb2c < pb2c2.inp > pb2c2.out
$ chem < ps_chem2.inp > ps_chem2.out
$ psr < psr.inp > psr.out
プログラムの概要
minimal パッケージ
Chemkin minimal パッケージは
Chemkin に含まれる senkin (0 次元反応計算・感度解析),
equil (平衡計算), shock (衝撃波), および premix (1次元層流予混合火炎)
を実行するために用意されたパッケージです.
オリジナルパッケージには含まれない拡張ユーティリティ
sb2c (senkin バイナリ読出), pb2c (premix バイナリ読出),
rxnc (senkin 寄与率解析), および findth (熱力学データ検索)
を含みます. senkin には ICEN (内燃機関) および CRCM (急速圧縮機)
拡張コードが追加されています.
CHEMKIN-II v. 4.5 (Release: Jan. 1995) のソースコードを使用しています.
各プログラム概要
- chem
Chemkin Interpreter と呼ばれまるプログラムで、テキストファイル
記述された、化学種・反応機構・熱力学データの情報を読み込み、
次の senkin プログラム (senk) などで使用する、バイナリ形式のファイルに
翻訳 (interpret) します。
- senk
これが SINKIN 本体のプログラムです。chem が生成した
バイナリファイルから化学種・反応機構・熱力学データを読み込み、
反応の初期条件・計算時間などをテキストファイルから読んで、
反応計算を実行します。結果は、一部をテキストファイルに出力する他、
すべての情報をバイナリファイルに出力します。
- sb2c – senkin binary
to(2) csv converter
SENKIN が生成したバイナリファイルの情報を、
Excel などの表計算アプリケーションで開くことのできる形式の
ファイル (カンマ区切りテキストファイル, CSV ファイル)
に出力します。 このプログラムは、オリジナルの Chemkin
パッケージには含まれないものです。
- sbrest, sbhmix, sbliq,
sbdump, sbgen, sbmod
これらのプログラムは SENKIN バイナリファイルを操作して,
反応後や反応途中の気体の混合や, 液体の蒸発断熱混合状態を計算するための
ツールです.
sbrest は SENKIN の生成したバイナリファイル save.bin
から最初と最後の時間データセットを読み出し restart 形式で保存します
(save1st.bin と savelast.bin).
sbmix は 2 つの restart 形式のファイル (save1.bin と save2.bin)
を, 定圧・断熱 (等エンタルピー) 条件で 1:1 混合したものを restart
形式のファイル (smix.bin) に保存します.
sbliq は液体燃料を savegas.bin で与えられる気体に,
定圧断熱 (HCON) または定容断熱 (UCON) 混合して sliqmix.bin
に保存します. 標準入力から以下のような制御情報を読み込みます.
! addition of liquid n-heptane (50degC) by 0.1 as stoichiometry
HCON
STOI 0.1
TLIQ 323.15
LIQU nC7H16(L) nC7H16 1
END
LIQU は反応機構中にある液体と対応する気体の化学種名とモル分率を
指定します (混合燃料の指定が可能). TLIQ は液体の温度で,
液体の混合量は化学量論値 (STOI) または全体に対する質量分率 (MASF)
で指定します.
sbdump はバイナリファイルの内容を ascii テキストファイル (.asc)
または csv 形式ファイル (.csv) に書き出します. 使用可能な
コマンドラインオプションについては
sbdump --help
とタイプしてみて下さい.
sbgen は ascii テキストファイル (.asc) あるいは csv 形式ファイル (.csv)
からバイナリファイスを生成します.
sbmod はバイナリファイルをテキストファイルの指定に従って修正します.
これらのプログラムは、オリジナルの Chemkin
パッケージには含まれないものです。
- findth
Chemkin の熱力学データ形式のファイルを、化学式(元素組成)
を指定することで、検索するプログラムです。Chemkin / Senkin
の実行には、必要ありません。 (これもオリジナル Chemkin
パッケージには含まれないものです)
- rxnc – reaction (rxn)
contribution
SENKIN のバイナリ出力から、指定した時間における、
指定した化学種の増加・減少に対する、各反応の寄与率を出力します。
(これもオリジナル Chemkin パッケージには含まれないものです)
- shock
Chemkin に含まれる衝撃波計算プログラム。
- equil
Chemkin に含まれる 平衡計算プログラム。
- premix
PREMIX (予混合一次元火炎伝播) プログラム。
- pb2c
PREMIX が生成したバイナリファイルを CSV 形式に変換するプログラム。
- tran
バイナリ形式の輸送係数ファイルを生成するプログラム。
- psr
PSR (Perfectly Stirred Reactor) プログラム。
入出力ファイルの概要
senkin 入出力ファイルの関係
図 1 に senkin を実行する場合の入出力ファイルの関係を示します。
ユーザは計算実行前に 3 つの入力ファイル (chem.inp, senk.inp,
ab2c.inp) を用意する必要があります。
この他に、化学種の熱力学データベースファイル therm.dat
を実行時にカレントディレクトリに置いておく必要があります。
最初の段階では、このファイルをユーザが編集する必要はありません。
"STDIN(標準入力)", "STDOUT(標準出力)" は、
キーボードからの入力, 画面への出力に対応します。
この入出力は、リダイレクトを使って任意のファイルに対応させることが
できます。
$ program_name < input_file > output_file
他のファイル (therm.dat, chem.bin, tign.out, save.bin, skcn???.csv,
sXXXX???.csv) はプログラム内でファイル名を指定していますので、
ソースコードを変更しない限り、変更できません。
入出力ファイル概要
- chem.inp
Chemkin Interpreter が読み込む、反応機構データの
テキストファイルです。以下にサンプルファイルの一部を示します。
ELEMENTS H O N END
SPECIES H2 H O2 O OH HO2 H2O2 H2O N2 END
REACTIONS
H+O2+M=HO2+M 3.61E17 -0.72 0.
H2O/18.6/ H2/2.86/
H+H+M=H2+M 1.0E18 -1.0 0.
...(中略)...
H2O2+OH=H2O+HO2 1.0E13 0.0 1800.
END
最低3つの入力ブロック 'ELMENTS'〜'END', 'SPECIES'〜'END',
'REACTIONS'〜'END' が必要で、それぞれ、反応系に含まれる元素名のリスト,
考慮する化学種のリスト, 考慮する化学反応式のリストです。
通常 H2-O2.inp, CH4-Air.inp などのように、わかりやすい名前に
しておきます。
- therm.dat
NASA 多項式と呼ばれる熱力学関数表現の 14 個の係数を並べた、
テキストファイルです。
このデータベースにない化学種を扱う場合は、
自分でこのデータを用意する必要があります。
その場合、通常は therm.dat を編集するのではなく chem.inp
ファイル中に熱力学データを与えます。
- chem.out
Chemkin Interpreter が chem.inp を解釈した結果が出力される、
テキストファイル。
- chem.bin
chem.inp に与えられた、化学種・反応機構と、therm.dat
から抽出した、熱力学データを、senkin などが利用するために、バイナリ形式
で保存したもの。
- senk.inp
senkin に与える初期条件などを記述したテキストファイル。
以下にサンプルファイルを示します。
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
'SENS' は感度解析を行うことを指示するキーワードで、続く 'COMP'
は圧力一定の計算条件を指示しています。 'PRES', 'TEMP' は初期圧力,
初期温度を、REAC は初期組成を与えます。'TIME', 'DELT' は計算終了時間,
結果の出力時間間隔を指定します。
chem.inp 同様に任意のファイル名を指定できますので、
わかりやすい名前を付けておきます。
- senk.out
senk.inp の解釈結果と計算中の進行状況が出力されます。
- tign.out
senk.inp の 'DELT' で指定した時間間隔で、圧力, 温度,
各化学種の濃度が出力されます。出力画面やプリンタに出力した場合に、
読みやすい形式ですが、表計算・グラフ出力アプリケーションで読む場合には、
不便な形式なので、あまり使いません。
- rest.bin
何らかの理由で、計算が中断された場合に、途中から
再開 (RESTart) するために必要な情報が格納されるバイナリーファイル。
計算が正常に終了した場合にも、大きさ 0 のファイルが残りますが、
削除して構いません。
- save.bin
senkin 計算結果が出力されるバイナリーファイル。 senk.inp
の 'DELT' 設定に関係なく、数値積分1ステップごとの、圧力, 温度,
全化学種の濃度が格納されており、SENS (感度計算) を指定した場合は、
同じく、数値積分1ステップごとの、全感度係数行列が格納されています。
- sb2c.inp
save.bin から csv ファイルへの変換のオプションを指定する、
テキストファイルです。以下にサンプルを示します。
===== sb2c (sbin2csv.f) Control file =====
[ TIME OUTPUT CONTROL: (s ms us) atol=# rtol=# mind=# maxd=# sent=# ]
us mind=1e-6 maxd=1e-5 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
時間の出力の単位/頻度、濃度出力の単位/出力する化学種、
感度計算結果の出力の制御を指定します。
- sb2c.out
sb2c.inp の入力解釈の結果と、save.bin, chem.bin ファイルの、
ヘッダ情報が出力されます。
- skcn???.csv
save.bin 中の数値積分結果の圧力, 温度, 化学種の濃度 (またはモル分率)
を含む
csv 形式のファイル。 Excel などがインストールされていれば、
ファイルをダブルクリックすることで開くことができます。
以前のバージョンでは1つのファイルに出力していましたが、
化学種の数が多くなると "???" = "001", "002", "003", ... のように、変数
50 個ずつのファイルに、分割出力されます。
- sXXXX???.csv
save.bin 中の感度係数を含む csv ファイル。 多くの場合は、
ある特定の従属変数 (温度または化学種の濃度) に関する感度係数のみが
必要なので、従属変数ごとに、別のファイルに出力されます。ファイル名の
"XXXX" の部分は、従属変数の通番で、番号と従属変数の対応関係は
sb2c.out に出力されます。
さらに、反応式の数が多い場合のために、"???" = "000", "001", ...
に反応式50づつに分割したファイルの出力します。
各ファイル内のカラムタイトル 'Siiii' の 'iiii' は考慮された、
化学反応の通番を示します。番号と反応式の対応は、chem.out
に出力されています。
sXXXXsel.csv と sXXXXall.csv には計算された時間の中での
絶対値最大の感度係数の値が出力されます。 sXXXXsel.csv
には絶対値の大きい反応について並べ替えたものが、 sXXXXall.csv
にはすべての反応について反応の番号順に出力されます。
- rxnc.inp
rxnc の動作を指定する、テキストファイルです。
以下にサンプルを示します。
===== 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, ocsv) ]
atol=1e-20 min%=0.1 sbin=save.bin
反応の寄与を評価する時間・化学種、いくつかのオプションを指定します。
- rxnc.out
rxnc の出力ファイルです。 以下に例を示します。
------ rxncntrb -------------------------------
Calculate contributions of reactions for the
:
: ヘッダー部 - rxnc.inp の指定内容、SENKIN バイナリの情報
:
CHEM BIN file contains 9 species
and 20 reactions.
-----------------------------------------------
----- species [H] ----------------------------- (H に関する結果)
TIME = 9.8545E-07 (〜1 マイクロ秒の結果)
<creation> net = 8.2200E-09 (app = 8.2200E-09)
rxn 10 95.69 Fwd OH+H2<=>H2O+H
rxn 17 2.76 Rev H+HO2<=>H2+O2
rxn 12 1.56 Fwd O+H2<=>OH+H
<destruction> net = 9.6809E-10 (app = 9.6809E-10)
<1st-ord dst> net = 1.6328E+05 (app = 1.6328E+05)
rxn 11 50.30 Rev O+OH<=>O2+H
rxn 1 49.70 Fwd H+O2+M<=>HO2+M
TIME = 4.9795E-05 (〜50 マイクロ秒の結果)
:
:
-----------------------------------------------
----- species [O] ----------------------------- (O に関する結果)
TIME = 9.8545E-07
:
: