catalyticFoamのインストール
この記事について
本記事では、実務で活用できそうなOSSツールを実際に試して、その使用感を備忘録として記録していきます。
今回取り上げるのはcatalyticFoamというOpenFOAMベースのソルバーです。OpenFOAM上で不均一触媒反応(壁面・表面反応)を「詳細な表面マイクロキネティクス」と連成して解くためのソルバー/フレームワークで、触媒反応の解析に利用可能です。
この記事で分かること
- 前回:catalyticFoamの概要と特徴
- 今回:インストール手順
- 次回以降:チュートリアルケースの実行
- 次回以降:化学プロセス解析への応用可能性(余力があれば...)
この記事は実際に手を動かしながら検証した内容を記載しています。生成AIも利用してコード解析を行っているので、誤りがあるかもしれません。間違いを見つけた方は、ぜひ優しく教えてください。
前提条件
今回はwindowsのWSLを利用してUbuntu 20.04.6 LTSにインストールしていきます。
まず、OpenFOAM 9が正しくインストールされ、環境変数が設定されていることが必要です。
OpenFOAM Foundation版
https://openfoam.org/download/9-ubuntu/
インストール準備
1. システムの更新
この2つのコマンドは、システム全体のパッケージを最新状態に更新する標準的なものです。
sudo apt update
sudo apt upgrade -y
2. OpenFOAMのインストール
まずは、ベースとなるOpenFOAMをインストールしていきます。
1つ目のコマンドはGPGキーの登録でパッケージの署名を検証するための公開鍵を登録します。これにより、ダウンロードするOpenFOAMパッケージが改ざんされていないことを確認できます。
2つ目のコマンドでリポジトリの追加を行います。これにより、後段で行うapt installコマンドでOpenFOAMをインストールできるようにします。
sudo sh -c "wget -O - https://dl.openfoam.org/gpg.key > /etc/apt/trusted.gpg.d/openfoam.asc"
sudo add-apt-repository http://dl.openfoam.org/ubuntu
次のコマンドで新しいダウンロードリポジトリの場所を考慮してパッケージリストを更新します
sudo apt-get update
以下のコマンドを実行すると、OpenFOAM 9 とParaView 5.6.3が/optディレクトリにインストールされます。
sudo apt-get -y install openfoam9
以下の環境変数の設定を行うことでOpenFOAMが利用可能となります。
※OpenFOAMがインストールされた場所へのパスを指定します。
echo "source /opt/openfoam9/etc/bashrc" >> ~/.bashrc
source ~/.bashrc
3. 外部ライブラリのインストール
次にcatalyticFoamで利用する外部ライブラリをインストールしていきます。
Eigenライブラリのインストール
sudo apt install libeigen3-dev -y
Boost C++ライブラリのインストール
sudo apt install libboost-all-dev -y
ビルドツールのインストール
sudo apt install build-essential cmake git -y
catalyticFOAMのインストール
続いてcatalyticFOAM本体をインストールしていきます。
1. ソースコードの取得
# 任意のディレクトリに移動(例: ホームディレクトリ)
cd ~
# GitHubからクローン
git clone https://github.com/multiscale-catalysis-polimi/catalyticFoam.git
cd catalyticFoam
2. 環境変数の設定
catalyticFoamフォルダ内にはmybashrcというファイルがあり、以下のライブラリパスを設定する必要があります。nanoエディタでmybashrc内のコードを編集していきます。
※使い勝手の良いエディタで編集していただいて大丈夫です。
nano mybashrc
mybashrcファイル中のパスを以下のように修正:
#Compulsory path
#export EIGEN_LIBRARY_PATH=$HOME/NumericalLibraries/Eigen/Eigen-3.3.5
export EIGEN_LIBRARY_PATH=/usr/include/eigen3
#export BOOST_LIBRARY_PATH=$HOME/NumericalLibraries/Boost/boost_1_68_0/build
export BOOST_LIBRARY_PATH=/usr
#追加
export RAPIDXML_LIBRARY_PATH=/usr/include/boost/property_tree/detail
export ISAT_SUPPORT='-DOPENSMOKE_USE_ISAT=1'
#Define OF version
export OF="${WM_PROJECT_VERSION%%.*}0"
export OFVERSION="-DOFVERSION=$OF"
#Static linking of libraries
export CATFOAM_LIBS='-Wl,--start-group -Wl,-Bstatic -lboost_program_options -lboost_system -lboost_filesystem -lboost_regex -lboost_date_time -Wl,--end-group -Wl,-Bdynamic'
環境変数の読み込みのため以下のコマンドを実施
source mybashrc
3. コンパイル
Allwmake実行前にもう一度、OpenFOAMのパスを通しておきます。(再確認):
source /opt/openfoam9/etc/bashrc
その後に以下のコマンドを実施
./Allwmake
コンパイルには数分~数十分かかります。エラーが出た場合は、依存ライブラリのパスを再確認してください。
ソースコード構造解析
WindsurfのCodemaps機能を使ってソルバー機能を使用してソースコードの解析をしてみました。
catalyticFoamは、化学反応と流体力学の連成問題を解決するために開発されたCFDソルバーです。自動車の触媒コンバーターや化学反応器など、表面での化学反応が重要な役割を果たす解析・設計が可能です。従来のOpenFOAMソルバーでは扱えない詳細な化学反応機構と、気相-固相の相互作用を同時に計算できます。
実行フローは以下の通りです:
- 初期化:物理場(速度、圧力、温度など)と化学反応モデルを設定
- 時間積分ループ:
化学反応ステップで均一・不均一反応を計算
輸送ステップで運動量・質量・エネルギー方程式を解く - 結果出力:各時間ステップで計算結果を保存
このアプローチにより、数百〜数千の化学種を含む詳細な反応機構を、現実的な計算時間でシミュレーションできます。
Discussion