FlameletFOAM のインストール

syoukera
7 min readNov 13, 2018

--

拡散燃焼のための定常層流flameletモデルソルバー「FlameletFOAM」をインストールしたので、その方法を記載します。

環境

CPU: intel corei7–8700
OS: Ubuntu 16.04 LTS
OpenFOAM-2.3.x *1

FlameletFOAMでは OpenFOAMのバージョン 2.1.x, 2.3.x, 2.3.0 についてのみソースコードを公開しています。

1. Cantera source のインストール

1.1 以下のパッケージがインストール済みであることを確認します。
g++ scons libboost-all-dev libsundials-serial-dev subversion libblas-dev liblapack-dev

1.2 こちらからcantera-2.0.1.tar.gzをダウンロードします。

1.3 ダウンロードしたファイルのあるディレクトリで以下を実行

scons build optimize=n blas_lapack_libs=blas,lapack prefix=/opt/cantera python_package=none

1.4 インストールの実行

sudo scons install

cannot find -lf2cのエラーが出たらlibf2c2-devをインストールしましょう。
cannot find numpyも同様です。私の場合この2つが出ました。*2

1.5 ~/.bashrcに以下の一文を追加 *3
source /usr/local/bin/setup_cantera

1.6 ディレクトリの作成
Canteraでflamelet libralyを出力する操作を行うディレクトリを作成します。

mkdir ~/cantera/Cantera-CounterflowFlame/

1.7 solverをダウンロード

git clone https://github.com/flameletFoam/Cantera-CounterflowFlame/ ~/cantera/Cantera-CounterflowFlame/

1.8 buildの環境を設定
~/cantera/Cantera-CounterflowFlame/srcフォルダにあるMakefileを開き、Cantera.makへのパスを正しい物へ変更
私の場合: ~/flameletFoam/cantera-2.0.0/build/platform/Cantera.mak

1.9 ビルドを実行

make

成功すればflameletという実行ファイルが作成されます。

2. OpenFOAM source のインストール

2.1 ディレクトリの作成

mkdir ~/OpenFOAM/flamletFoam/

2.2 ソースコードのダウンロード
OpenFOAM-2.3.xを使用している場合

git clone https://github.com/flameletFoam/flameletFoam-2.3.x/ ~/OpenFOAM/flameletFoam/

他のバージョンは2.3.xを2.1.xもしくは2.3.0に変更すればダウンロードできます。

2.3 環境変数にflameletFoam/srcフォルダへのパスを追加

export LIB_FLAMELET_SRC=$HOME/OpenFOAM/flameletFoam/src

2.4 OpenFOAMの環境変数を設定
OpenFOAM-3.2.xの場合はOF23x

2.5 ビルドを実行

./Allwmake

私の場合YY_FLEXに関するエラーが発生しました。
こちらを参考に、canteraScanner.Lの43~50行目を以下のように変更しました。

#if YY_FLEX_SUBMINOR_VERSION < 34 && YY_FLEX_MINOR_VERSION < 6
extern "C" int yywrap()
#else
int yyFlexLexer::yywrap()
#endif
{
return 1;
}

注.HORRIBLE HACKらしいので、重要なデータのあるパソコンでは使用しないことをおすすめします。

3. チュートリアルを実行

3.1 CanteraによるFlameletの生成
1.4でインストールしたCanteraを用いて、層流対向流火炎を解きます。cantera/Cantera-CounterflowFlameに移動し、以下のコマンドで実行。

./flamelet

実行後は初期解を使用するかどうか、算出された解を保存するか聞かれるのでどちらも1(yes)と応えます。実行が終了するとcanteraTablesフォルダにcsvファイルが出力されますので、解析時にはこれを次のステップで用います。ただし、Tutorialのフォルダには、すでに出力済みのcsvファイルがフォルダに配置されているので、このファイルをコピーする必要はありません。

同フォルダに置かれているinput.txtとsolution.xmlはそれぞれ、層流対向流火炎の境界条件および初期解を格納しています。Tutorialでは必要ありませんが、別の反応機構を使用する場合には、火炎伸長という層流対向流火炎の特性値を変化させていき、上記のプロセスを繰り返し行う必要があります。input.txt中のmass flow rate、domain lengthを変化させて火炎伸長を変化させてcsvファイルを出力していきます。この工程を消炎限界に達するまで繰り返すことでcsvファイルを出力していきます。

3.2 Flamelet libraryを出力
この工程で3.1で得られた解を、FlameletFOAMで使用できるβ-PDFという値に変換します。$HOME/OpenFOAM/flameletFoam/tutorial/pilotedDiffusionFlameにlesとrasというチュートリアルがあるので好きな方を作業ディレクトリにコピーします。コピーしたlesもしくはras直下で以下のコマンドを実行します。

blockMesh
canteraToFoam

canteraToFoamの実行が成功すると、constantフォルダに各種tableファイルが生成されます。

3.3 拡散燃焼のシミュレーション
シミュレーションの開始は以下のコマンドです。

flameletFoam

3.4 ポストプロセス
FlameletFoamでは実行時に化学種のデータをテキストファイルとして吐き出してくれませんので、ポストプロセスで指示する必要があります。以下のコマンドでは計算終了時のCH4, O2, CO2, OHのデータを出力してくれます。-latestTimeオプションをつけなければ、すべてのアウトプットフォルダに生成することができます。

flameletFoamPost -latestTime -fields '(CH4 O2 CO2 OH)'

補足

  1. flameletFOAMではOpenFOAMのバージョン 2.1.x, 2.3.x, 2.3.0について個別のインストールファイルを用意しているようです。私自身、はじめは2.3.0を試したのですが以下2の理由でうまく行かず、2.3.xにて再チャレンジでうまく行ったところです。OpenFOAM-3.2.xのインストールはこちらの操作を2.3.0 => 2.3.xと変更して行えば可能です。
  2. cannot find -lctlapack or cannot find -lctblasが出ることがあります。それが原因で参考サイトではsingle_library=yesのオプションをつけてインストールすることを指示しているのですが、私の環境ではうまく行きませんでした。OpenFOAM-2.3.0から2.3.xに変更することでうまく行きました。
  3. 参考サイトでは source /opt/cantera/bin/setup_cantera と述べていますが、私の場合は違いました。1.4のインストールで標準出力に支持が出てくるので、それに従うのが良いと思います。

参考

https://www.google.com/search?client=ubuntu&channel=fs&q=flameletFoam&ie=utf-8&oe=utf-8

--

--