<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<htlm lang="ja">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
  <link rel="stylesheet" href="style/manual.css" type="text/css">
  <title>KUCRS-chemgen</title>
</head>
<body>

<div class="sign">
 (c) 2002&ndash;2025 by <a href="../index.html.ja">A.
  Miyoshi</a><br> All rights reserved.
</div>
<div class="title">KUCRS</div>
<div class="subttl">&ndash; Knowledge-basing Utilities for Complex Reaction
 Systems &ndash;<br clear="right"></div>

<hr> <!-- ------------------------------------------------------------ -->
<div class="lang"><a href="chemgen.htm.en">English</a></div>
<div class="back"><a href="refman.htm.ja">戻る</a></div>
<h1 class="cmp">chemgen マニュアル<br clear="all"></h1>
<hr> <!-- ------------------------------------------------------------ -->

<div class="main"> <!-- ---------------------------------------------- -->

<div class="ind1mgn">
 &nbsp; <code>chemgen</code> は KUCRS のコンポーネントの一つで、
 マクロ表現の反応リストを処理して Chemkin 形式の化学反応入力を生成します。
 規則に基づいた反応速度定数を持つ反応機構を、正確に効率よく生成するための
 基本的なツールです。 KUCRS とは切り離して単独で用いたり、
 KUCRS の反応機構を部分的に修正したり、
 補完したりするために用いることができます。
</div>

<h2>要約</h2>

<div class="ind1mgn">
 <h3>使用法</h3>
 <div class="ind1smgn"><div class="cmdl">
  chemgen <font color="brown"><i>bname</i></font>_chg.inp
  <i>thermo_data</i> &gt; <i>log_file</i>
 </div></div>
</div>

<div class="ind1mgn">
  <h3>入力</h3>
  <div class="ind0smgn"><table>
    <tr><td></td>
      <td class="iod" align="center"><small>必須</small></td></tr>
    <tr><td class="io"><font color="brown"><i>bname</i></font>_chg.inp</td>
      <td class="iod" align="center">*</td>
      <td class="iod">マクロ表現の反応のリスト</td></tr>
    <tr><td class="io"><i>thermo_data</i></td>
      <td class="iod" align="center">*</td>
      <td class="iod">熱力学データ</td></tr>
    <tr><td class="io">KUCRS_LIB\bas_rxns.inp</td>
      <td class="iod"></td><td class="iod">(ベース反応機構)</td></tr>
    <tr><td class="io">KUCRS_LIB\bas_thrm.dat</td>
      <td class="iod"></td><td class="iod">(ベース熱力学データ)</td></tr>
    <tr><td class="io">KUCRS_LIB\elm_tbl.dat</td>
      <td class="iod" align="center">*</td>
      <td class="iod">元素データ</td></tr>
    <tr><td class="io">KUCRS_LIB\rxn_macr.dat</td>
      <td class="iod" align="center">*</td>
      <td class="iod">マクロ定義</td></tr>
  </table></div>
  <div class="note">
    KUCRS_LIB\ = 環境変数 KUCRS_LIB の指すディレクトリ
    (未定義の場合はカレントディレクトリ)
  </div>
</div>

<div class="ind1mgn">
  <h3>出力</h3>
  <div class="ind0smgn"><table>
    <tr><td class="io"><i>log_file</i></td>
     <td class="iod">chemgen の診断出力</td></tr>
    <tr><td class="io"><font color="brown"><i>bname</i></font>_chm.inp</td>
     <td class="iod">Chemkin 形式の反応機構</td></tr>
    <tr><td class="io"><font color="brown"><i>bname</i></font>_rxn.inp</td>
     <td class="iod">〃 (reactions ブロック)</td></tr>
    <tr><td class="io"><font color="brown"><i>bname</i></font>_spc.inp</td>
     <td class="iod">〃 (elements/species ブロック)</td></tr>
    <tr><td class="io"><font color="brown"><i>bname</i></font>_thm.dat</td>
     <td class="iod">〃 (thermo ブロック)</td></tr>
  </table></div>
</div>

<h2>ダウンロードとサンプルの実行 (Windows)</h2>

<div class="ind1mgn">
 &nbsp; KUCRS と切り離して単独で用いるための <code>chemgen</code>
 の実行ファイル (Windows) とサンプル入力は以下からダウンロードできます。
 <div class="ind1smgn"><ul class="dsbl">
   <li><a href="chemgen20081222.zip">chemgen20081222.zip</a>
 </ul></div>
</div>
<div class="ind0mgn"><ol>
 <li>上のリンクをクリックして <code>chemgen20081222.zip</code> を保存します。
  &nbsp; 以下の説明では C:\ に保存したと仮定しています。
 <li><code>chemgen20081222.zip</code> を解凍します。&nbsp;
  フォルダ <code>chemgen</code> の中に以下のファイルが生成します。
  <pre class="txt">
chemgen.exe
elm_tbl.dat
rxn_macr.dat
sample_chg.inp
sample_thg.dat</pre>
 <li>コマンドプロンプトを開いて <code>chemgen</code> を解凍したディレクトリに
  移動し、以下のコマンドを実行します。
  <div class="cmdl">
    C:\chemgen&gt; <font color="brown">chemgen sample_chg.inp sample_thg.dat &gt; sample_chg.log</font>
  </div>
 <li>以下のファイルが新たに生成します。
  <pre class="txt">
sample_chg.log
sample_chm.inp
sample_rxn.inp
sample_spc.inp
sample_thm.dat</pre>
 <li>ここで実行したサンプルでは、<code>sample_chg.inp</code> に記述された
  マクロ表現の反応リストを処理して、Chemkin 形式の反応入力
  <code>sample_chm.inp</code> を生成しています。&nbsp;
  マクロは <code>rxn_macr.dat</code> の中で定義しています。&nbsp;
  入出力ファイルはすべてテキストファイルですので、テキストエディタ
  (メモ帳やワードパッド) で編集・閲覧することができます。&nbsp;
  入力ファイルの書式などは以下の解説を参照して下さい。
</ol></div>

<h2>入力ファイル</h2>

<div class="ind1mgn">
  <h3>元素データ <small>(必須)</small></h3>
  <ul class="dsgr">
   <li>元素を追加する場合以外は、変更する必要はありません。&nbsp;
    ファイル名は固定
    (<code>elm_tbl.dat</code>) でカレントディレクトリに置きます。
    [<a href="#ref1">#1</a>]
  </ul>
</div>

<div class="ind1mgn">
  <h3>マクロ定義 <small>(必須)</small></h3>
  <ul class="dsgr">
   <li>指定されたファイル名 (<code>rxn_macr.dat</code>)
    でカレントディレクトリに置きます。 [<a href="#ref1">#1</a>] &nbsp;
    以下に、サンプルのマクロ定義を示します。
    <pre class="txtt">rxn_macr.dat</pre>
    <pre class="txtc">

! sample macro definitions

! ----- H-abstraction by OH
 Habs/by-OH/Prim      8.83E+06    1.80     855.  ! per one CH3 group
 Habs/by-OH/Tert      5.73E+10    0.51      63.  ! per one CH group
!
! ----- decomposition of hydrocarbons
 Rv/Dcmp/C-Me         1.00E+13    0.         0.
!</pre>
   <li>マクロは以下の形式で定義します。
    <div class="frmt">
      &nbsp; <i>macro_name</i> &nbsp; <i>A</i> &nbsp; <i>n</i> &nbsp; <i>E</i><sub>a</sub>
    </div>
    <i>macro_name</i> はマクロの名前で、<i>A</i>, <i>n</i>, <i>E</i><sub>a</sub>
    は修正アレニウス式
    <div class="ind2">
      <i>k</i> = <i>AT<sup> n </sup></i>exp(&minus;<i>E</i><sub>a</sub> / <i>RT</i>)
    </div>
    のパラメータです。&nbsp; 速度パラメータの単位系は Chemkin のデフォルト
    (cm<sup>3</sup>-mol-s-cal) です。
   <li>感嘆符 (<code>!</code>) から行末までは注釈です。
   <li>名前が <code>Rv/</code>
    で始まるマクロは、与えられた <i>A</i>, <i>n</i>, <i>E</i><sub>a</sub>
    は逆反応の速度パラメータであると解釈されます。&nbsp;
    例えば上の例の最後のマクロは、炭化水素からメチルが脱離する熱分解の
    逆反応の速度定数が 1&times;10<sup>13</sup>
    であることを示しています。&nbsp; 一般に解離反応などは、
    逆反応の速度定数を与える方が便利です。
  </ul>
</div>

<div class="ind1mgn">
  <h3>反応リスト <small>(必須)</small></h3>
  <ul class="dsgr">
   <li>ファイル名は <code><font color="blue">bname</font>_chg.inp</code>
    のように <code>&quot;_chg.inp&quot;</code> で終わらなければなりません。&nbsp;
    <code><font color="blue">bname</font></code> の部分は、
    出力ファイル名に使用されます。&nbsp; <code>chemgen</code> を実行するときの
    コマンドラインの第 1 引数としてファイル名を指定します。&nbsp;
    以下にサンプルファイルの内容を示します。
    <pre class="txtt">sample_chg.inp</pre>
    <pre class="txtc">
# sample chemgen input

!
! isobutane reactions with OH

 iC4H10 OH = iC4H9 H2O $ Habs/by-OH/Prim 0 3 Y
 iC4H10 OH = tC4H9 H2O $ Habs/by-OH/Tert 0 1 Y
!
! decomposition of isobutane

 iC4H10 = CH3 iC3H7    $ Rv/Dcmp/C-Me    0 3 Y
 </pre>
   <li>1 つの反応は以下の形式で 1 行に記述します。
    <div class="frmt">
      &nbsp; <i>reactant</i><sub>1</sub> ... &nbsp;=&nbsp;
      <i>product</i><sub>1</sub> ... 
      &nbsp;$&nbsp; <i>macro_name</i> &nbsp;&Delta;<i>E</i><sub>a</sub>
      &nbsp;<i>mult_A</i> &nbsp;<i>flag_rev</i>
    </div>
    $ までが反応式で、 = の左に反応物、 右に生成物をそれぞれ空白で区切って
    並べます。
   <li>&Delta;<i>E</i><sub>a</sub> はマクロ定義の
    活性化エネルギーを調整する場合に 0 以外を設定します。
   <li><i>mult_A</i> は前指数因子を変更する場合に 1 以外を設定します。&nbsp;
    ここの例では、イソブタンは等価なメチル基を 3 つ持つために、
    一級炭素からの水素引抜の速度定数と、 CH<sub>3</sub> 脱離の速度定数
    を 3 倍するために使っています。
   <li>最後の <i>flag_rev</i> は逆反応を考慮するかどうかのフラグで
    <code>Y</code> を書くと逆反応が考慮され、
    <code>N</code> の場合は逆反応が無視されます。
   <li><code>!</code>, <code>#</code> で始まる行はいずれも注釈行ですが、
    <code>!</code> で始まる行は、 Chemkin
    入力にもこのまま注釈としてコピーされます。
    <code>#</code> で始まる行は Chemkin 入力には出力されません。
  </ul>
</div>

<div class="ind1mgn">
  <h3>熱力学データ <small>(必須)</small></h3>
  <ul class="dsgr">
   <li>ファイル名は任意で、<code>chemgen</code> を実行するときの
    コマンドラインの第 2 引数として指定します。&nbsp;
    サンプルの一部を以下に示します。&nbsp;
    形式は Chemkin の熱力学データと同じです。
    <pre class="txtt">sample_thg.dat</pre>
    <pre class="txtc">
THERMO                                                                          
   300.000  1500.000  5000.000                                                  
iC4H10            thgen C   4H  10          G   300.000  5000.000 1389.00      1
 1.25733188E+01 2.18921034E-02-7.52507819E-06 1.17199470E-09-6.81406454E-14    2
-2.31695053E+04-4.68052242E+01-1.01548278E+00 5.04801838E-02-3.00674447E-05    3
 9.16431647E-09-1.15528714E-12-1.80491562E+04 2.74371619E+01                   4
iC4H9             thgen C   4H   9          G   300.000  5000.000 1389.00      1
 1.21596150E+01 1.97412861E-02-6.79323159E-06 1.05880234E-09-6.15918443E-14    2
 1.89478674E+03-4.06305807E+01-2.60119556E-01 4.59801603E-02-2.76540140E-05    3
 8.55997651E-09-1.10410554E-12 6.56626481E+03 2.71901259E+01                   4
...</pre>
   <li>熱力学データは THERM などを用いて生成することができます。&nbsp;
    反応リストに記述されているすべての反応物と生成物の熱力学データが
    このファイルまたは、以下のオプションの <code>bas_thrm.dat</code>
    に登録されていなければなりません。
  </ul>
</div>

<div class="ind1mgn">
  <h3>オプション入力</h3>
  <ul class="dsgr">
   <li>カレントディレクトリ [<a href="#ref1">#1</a>] に
    <code>bas_rxns.inp</code> あるいは <code>bas_thrm.dat</code>
    <small>(何れもファイル名は固定)</small>
    が見つかった場合 <code>chemgen</code> はその内容をそれぞれ、
    反応リスト、あるいは 熱力学データの最後の付加したものを生成します。&nbsp;
    例えば、ベースになる H<sub>2</sub>-O<sub>2</sub>
    反応機構をこれらのファイルに記述しておけば、
    常にそれを含む反応機構を生成することができます。&nbsp;
    KUCRS では C<sub>2</sub>
    までの化学種とその反応がベースとして登録されています。
  </ul>
</div>

<h2>出力ファイル</h2>

<div class="ind1mgn">
  <h3>Chemkin 入力</h3>
  <ul class="dsgr">
   <li>ファイル名は <code><font color="blue">bname</font>_chm.inp</code> で
    <code><font color="blue">bname</font></code> は、
    反応リストファイル名から末尾の <code>&quot;_chg.inp&quot;</code>
    を除いたものです。&nbsp;
    以下にサンプルファイルを処理した場合に生成する Chemkin
    入力ファイルを示します。
    <pre class="txtt">sample_chm.inp</pre>
    <pre class="txtc">
elements
 H C O
end
species
 iC4H10 iC4H9 tC4H9 OH H2O CH3 iC3H7
end
thermo all
   300.000  1000.000  5000.000
iC4H10            thgen C   4H  10          G   300.000  5000.000 1389.00      1
 1.25733188E+01 2.18921034E-02-7.52507819E-06 1.17199470E-09-6.81406454E-14    2
-2.31695053E+04-4.68052242E+01-1.01548278E+00 5.04801838E-02-3.00674447E-05    3
 9.16431647E-09-1.15528714E-12-1.80491562E+04 2.74371619E+01                   4
...(中略)...
end
reactions      cal/mole  moles
!
! isobutane reactions with OH
 iC4H10+OH=iC4H9+H2O                              2.649e+07   1.800     855.0
                                           rev /  2.188e+04   2.313   18689.0 /
 iC4H10+OH=tC4H9+H2O                              5.730e+10   0.510      63.0
                                           rev /  4.536e+06   1.518   22283.5 /
!
! decomposition of isobutane
 iC4H10=CH3+iC3H7                                 4.480e+25  -2.321   89803.0
                                           rev /  3.000e+13   0.000       0.0 /
end</pre>
   <li>species ブロックには <code>chemgen</code> 実行時にコマンドラインの
    第２引数に指定した熱力学データファイルと <code>bas_thrm.dat</code>
    に登録されている化学種すべてが列挙されます。&nbsp;
    elements ブロックはすべての化学種の熱力学データファイルから
    自動的に生成されます。&nbsp;
    N<sub>2</sub>, Ar などの希釈気体が必要な場合は、<code>bas_thrm.dat</code>
    に登録しておけば、elements ブロックと species
    ブロックに自動的に登録されます。
   <li>reactions ブロックではマクロ置換が行われていて、
    逆反応の速度定数が計算されています。&nbsp; <code>Rv/</code>
    で始まるマクロが使われている最後の反応では
    マクロに指定した速度パラメータは逆反応に使われていることに
    注意してください。
  </ul>
</div>

<div class="ind1mgn">
  <h3>ログ</h3>
  <ul class="dsgr">
   <li>ファイル名は <code><font color="blue">bname</font>_chg.log</code>
    (反応リストファイル名の拡張子を <code>.log</code> に変えたもの) です。&nbsp;
    サンプルを実行したときに生成するログファイルの一部を以下に示します。
    <pre class="txtt">sample_chg.log</pre>
    <pre class="txtc">
15 elements loaded from [elm_tbl.dat]
3 rate macros loaded from [rxn_macr.dat]
7 thermodata loaded from [sample_thg.dat]
 reaction                                             delH      delS
                                                  kcal/mol cal/K/mol
 iC4H10+OH=iC4H9+H2O                               -18.288     6.818
---------- rate calculations ----------
 rev /  2.188e+04   2.313   18689.0 /
  T/K        kf         kr         Kc 
  300  1.816e+11  2.798e-04  6.490e+14
  400  4.362e+11  1.434e+00  3.041e+11
  500  8.082e+11  2.650e+02  3.049e+09
  600  1.295e+12  9.207e+03  1.407e+08
  800  2.601e+12  8.867e+05  2.933e+06
 1000  4.327e+12  1.547e+07  2.797e+05
 1500  1.036e+13  9.080e+08  1.141e+04
 2000  1.869e+13  8.533e+09  2.190e+03
 2500  2.915e+13  3.690e+10  7.899e+02
 3000  4.165e+13  1.059e+11  3.934e+02
 3500  5.611e+13  2.372e+11  2.365e+02
 4000  7.246e+13  4.517e+11  1.604e+02
 5000  1.106e+14  1.200e+12  9.219e+01
---------------------------------------
...(中略)...
Copying sample_spc.inp + sample_thm.dat + sample_rxn.inp -> sample_chm.inp - succeeded.</pre>
   <li>冒頭部分はオプションのものも含めて入力ファイルが
    正常に読み込まれているかどうかの診断メッセージです。
   <li>&quot;<code>reaction ... delH delS</code>&quot; の行以降は各反応の、
    298 K における &Delta;<i>H</i> (エンタルピー変化),
    &Delta;<i>S</i> (エントロピー変化)、300 K から 5000 K の範囲の
    正反応・逆反応の速度定数と平衡定数の計算結果を示しています。
  </ul>
</div>

<div class="ind1mgn">
  <h3>その他</h3>
  <ul class="dsgr">
   <li><code><font color="blue">bname</font>_spc.inp</code>,
    <code><font color="blue">bname</font>_thm.dat</code>,
    <code><font color="blue">bname</font>_rxn.inp</code> は Chemkin
    入力を生成するための一時ファイルで、通常は必要ありません。
  </ul>
</div>

</div> <!-- ---------------------------------------------------------- -->
<hr> <!-- ------------------------------------------------------------ -->

<div class="ref"><a name="ref1"></a>[#1] 環境変数 <code>KUCRS_LIB</code>
 を設定して他のディレクトリに置くこともできます。&nbsp;
 例えば KUCRS の <code>setenv.bat</code> では
 <code>set KUCRS_LIB=C:\KUCRS\libdata</code>
 となっています。
</div>

<hr> <!-- ------------------------------------------------------------ -->
</body>
</html>
