Cantera:pyMARSによる反応メカニズムリダクション

CanteraとpyMARSで反応メカニズムのリダクション(縮約)を行う。

詳細な素反応を含む化学反応メカニズムを3次元の燃焼計算などで使用する場合、計算コストを削減するために化学種や反応式の数を減らす必要がある。Canteraのホームページにも反応メカニズムリダクションの例題があるが、単純に反応速度の大きなものを順番にとっているだけの簡易的なものだ。反応メカニズムのリダクションはいくつかの手法が提唱されているが、Canteraでは実装されていないようだ。そこで、pyMARSという別のソフトウェアでメカニズムリダクションを行ってみる。

pyMARSとは

pyMARSは、Oregon State Universityの研究グループが開発したオープンソースのソフトウェアで、詳細化学反応メカニズムをリダクションするためのPythonライブラリである。Canteraとの親和性が高い。

pyMARSホームページ:
https://niemeyer-research-group.github.io/pyMARS/index.html

pyMARSでは、反応メカニズムリダクションの手法として、

  • Directed relation graph (DRG)
  • Directed relation graph with error propagation (DRGEP)
  • Path flux analysis (PFA)
  • Sensitivity analysis (SA)

を使用することができる。

pyMARSのインストール

pyMARSはCanteraを使用するので、まずpythonのAnaconda環境でCanteraが使える環境を用意する。普段Canteraを使っている環境だ。そこにpyMARSをインストールする。

conda install -c niemeyer-research-group pymars

pyMARSの起動は、pymarsコマンドを使う。

pymars --version

バージョンが出力されればインストールできている。

※Windows環境などでは、pymarsコマンドを直接打っても起動しないことがある。その場合は、インストールフォルダ にある以下のpythonスクリプトを作業フォルダにコピーしてくる。
C:\Users\ユーザー名\Anaconda3\pkgs\pymars-1.1.0-py_0\python-scripts内にあるpymars
そのうえで、pythonコマンドで起動する。

python pymars --version

pyMARSの使い方

入力ファイルの準備

まず、縮約したい詳細な反応メカニズムが定義されたCanteraのCTIファイルを用意する。次に、pyMARSの入力ファイルを準備する。ここでは、入力ファイル名を、reduction_input.yamlとする。

model: gri30.cti
targets:
  - CH4
  - O2
retained-species:
  - N2
method: DRGEP
error: 10.0
sensitivity-analysis: False
autoignition-conditions:
  - kind: constant volume
    pressure: 1.0
    temperature: 1000.0
    fuel:
      CH4: 1.0
    oxidizer:
      O2: 1.0
      N2: 3.76
    equivalence-ratio: 1.0

  - kind: constant volume
    pressure: 1.0
    temperature: 1200.0
    fuel:
      CH4: 1.0
    oxidizer:
      O2: 1.0
      N2: 3.76
    equivalence-ratio: 0.5

これは、GRI-Mech3.0のメカニズムファイルgri30.ctiを縮約するための入力ファイルの例だ。縮約手法にDRGEP法を使い、ターゲットの化学種をCH4、O2とし、消去しない化学種をN2、許容誤差10%としている。着火遅れの計算を行うため、その初期条件も設定する。

  • model: CanteraのCTIファイル
  • targets: ターゲットの化学種
  • retained-species: 消去しないで残しておきたい化学種
  • method: リダクション手法( DRG、DRGEP、PFA)
  • error: 許容誤差[%]
  • sensitivity-analysis: 感度解析を行うかどうか(True、False)
  • sensitivity-type: 感度解析のタイプ(initial、greedy)
  • upper-threshold: 感度解析の閾値
  • autoignition-conditions: 自着火計算の初期条件

詳細は以下のpyMARSのホームページ参照。

https://niemeyer-research-group.github.io/pyMARS/usage.html

リダクションの実行

リダクションの実行は、以下のコマンドで行う。

pymars --input reduction_input.yaml

または、pymarsファイルをコピーしてきた場合、

python pymars --input reduction_input.yaml

計算を実行すると画面に以下のようなログが表示される。

Running autoignition simulations for starting model.
Beginning DRGEP reduction loop
---------------------------------------------
Threshold | Number of species | Max error (%)
1.00e-02  |        40         | 0.15
2.00e-02  |        35         | 3.64
3.00e-02  |        33         | 3.64
4.00e-02  |        31         | 3.64
5.00e-02  |        31         | 3.64
6.00e-02  |        30         | 3.54
7.00e-02  |        28         | 3.48
8.00e-02  |        27         | 3.48
9.00e-02  |        26         | 3.48
1.00e-01  |        26         | 3.48
1.10e-01  |        26         | 3.48
1.20e-01  |        25         | 3.31
1.30e-01  |        25         | 3.31
1.40e-01  |        23         | 3.31
1.50e-01  |        22         | 3.22
1.60e-01  |        22         | 3.22
1.70e-01  |        22         | 3.22
1.80e-01  |        22         | 3.22
1.90e-01  |        22         | 3.22
2.00e-01  |        22         | 3.22
2.10e-01  |        21         | 22.21
---------------------------------------------
DRGEP reduction complete.
Skeletal model: 22 species and 99 reactions.
Maximum error: 3.22%
Final reduced model saved as reduced_22.cti

この例では、もともと化学種53、反応式325であったメカニズムが、化学種22、反応式99に縮約された。縮約されたメカニズムファイル(reduced_22.cti)が出力されているので、そのままCanteraの計算に使用できる。

n-Heptaneのリダクション

以下のページで使用したLLNLのn-Heptaneの詳細反応メカニズム(化学種 654、反応式4846)をリダクションしてみた。

Canteraで着火遅れ時間を計算してみる。n-Heptaneの空気中での燃焼における着火遅れ時間を計算する。 ソースコード(Git...

DRGEP法で化学種247、反応式2392に縮約された。もとの詳細なメカニズムとの着火遅れ時間の比較を載せておく。3次元計算などでは、目的や条件に応じてもう少し減らした方がよいかもしれない。

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

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

お問い合わせはこちら

フォローする

スポンサーリンク