CFDM-PFM・Liggghts-PFMのインストール

### CFDEMのPublic版とPremium版
以前の記事でCFDEMの環境構築を紹介しました。wsl上に構築したCFDEMをいろいろと試してみたのですが、所々機能制限があることが分かりました。CFDEMには2つのバージョンがありますが、それぞれで使える機能が異なるようです。

 - CFDEM-Public  
 フリーライセンス。誰でも利用可。
 - CFDEM-Premium
 ユーザー限定。研究利用などで認定された団体だけが使用可能。もしくは、ライセンス料を支払うことで利用可能。Publicにはない機能が利用できる。

一般利用では、CFDEM-Publicになると思いますが機能が限定されています。例えば、VOF法+DEMの連成はPremiumでないと専用のソルバーを使用することができません。。。
VOF法+DEMの解析をしたいなーと思っていたので残念、、と思っていたのですが、調べていくとCFDE-PFMというものがあることが分かり、そちらでは解析できる模様。ということで、wsl上にCFDEM-PFMの計算環境を構築してみたので、その方法を共有します。

### CFDEM-PFM

CFDEM-PFMですが、CFDEMからフォークして開発が進められているプロジェクトのようです。CFDEMの更新は数年前から行われておらず、開発は終了してしまったかと思っていたのですが、どうやらCFDEM-PFMの方で開発が継続しているようです。以下サイトを参考にwsl上のインストールしていきます。

https://github.com/ParticulateFlow/CFDEMcoupling-PFM/tree/master

### インストール
#### 前提条件
今回は以下条件でインストールを進めていきます。
Ubuntuはほかのバージョンでも頑張ればインストールできると思いますが、18.04LTSで構築するのが一番簡単です。


- wsl2
- Ubuntu 18.04LTS



### 手順
CFDEM-PFMはOpenfoam6(推奨)/Openfoam5/Openfoam4をベースに連成用ソルバーをコンパイルできるようです。ただし、現状Openfoam6でCFDEM-PFMをビルドした場合、VOF法＋DEMの連成用ソルバーが使用できない状態となっています。バグを抱えているため使用できないようです。そこで今回は推奨されているOpenfoam6とVOF法＋DEMの連成のためにOpenfoam5を使用した2通りの方法でインストールしていきます。
まず、依存関係のパッケージをインストールします。
~~~
sudo apt-get update
sudo apt-get install git-core 
sudo apt-get install build-essential flex bison cmake zlib1g-dev libboost-system-dev libboost-thread-dev libopenmpi-dev openmpi-bin gnuplot libreadline-dev libncurses-dev libxt-dev libscotch-dev libptscotch-dev
sudo apt-get install libqt5x11extras5-dev libxt-dev qt5-default qttools5-dev curl python-dev
sudo apt-get install libvtk6-dev
sudo apt-get install python-numpy
sudo apt-get install octave
~~~
Openfoma6/5をインストールするために、リポジトリを追加します。
~~~
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
~~~
リポジトリを追加するとapt-getで簡単にOpenfoamがインストールできます。
~~~
sudo apt-get -y install openfoam6
sudo apt-get -y install openfoam5
~~~
今回は/optフォルダー内にCFDEMをインストールしていこうと思います。/optフォルダーに移動し、Openfaomのバージョン毎に2つのディレクトリを作成します。
~~~
sudo mkdir CFDEM-5
sudo mkdir CFDEM-6
~~~
それぞれのフォルダーに移動し、CFDEMのインストールに必要なソースをクローンします。
~~~
git clone https://github.com/ParticulateFlow/LIGGGHTS-PFM.git
git clone https://github.com/ParticulateFlow/CFDEMcoupling-PFM.git
git clone https://github.com/ParticulateFlow/LPP.git
~~~
クローン出来たら、Liggghts-PFMのインストールから進めていきます。まずはCFDEM-5から。
~~~
cd /opt/CFDEM-5
cd LIGGGHTS-PFM
mkdir - p src-build
cd src-build
cmake ../src/
make
~~~
続いて、CFDEMcoupling-PFMのインストールを行います。
~~~
cd /opt/CFDEM-5/CFDEMcoupling-PFM
nano /opt/CFDEM-5/CFDEMcoupling-PFM/etc/bashrc
~~~
nanoでCFDEMのbashrcを編集します。
冒頭部分を以下のように書き換えてください。

~~~bashrc.sh
#----------------------------------*-sh-*--------------------------------------
# CFDEMcoupling
#
# Copyright 2009-2012 JKU Linz
# Copyright 2012-2015 DCS Computing GmbH, Linz
# Copyright 2015-     JKU Linz
#------------------------------------------------------------------------------
#
# File
#     etc/bashrc
#
# Description
#     Startup file for CFDEMcoupling
#     Sourced from ~/.profile or ~/.bashrc
#
# you can test the correctness using cfdemSystemTest.sh
#------------------------------------------------------------------------------

export CFDEM_PROJECT=CFDEM-5
export CFDEM_VERSION=23.02

################################################################################
# USER EDITABLE PART: Changes made here may be lost with the next upgrade
#
# Please set to the appropriate path if the default is not correct.
#
# activate compatible OpenFOAM version
. /opt/openfoam5/etc/bashrc
#
# CFDEMcoupling
export CFDEM_INST_DIR=/opt/$CFDEM_PROJECT
export CFDEM_PROJECT_DIR=$CFDEM_INST_DIR/CFDEMcoupling-PFM
export CFDEM_PROJECT_USER_DIR=$CFDEM_INST_DIR/$USER-$WM_PROJECT_VERSION
#
# LIGGGHTS
export CFDEM_LIGGGHTS_INST_DIR=$CFDEM_INST_DIR/LIGGGHTS-PFM
#
# LPP installation path
export CFDEM_LPP_INST_DIR=$CFDEM_INST_DIR/LPP
#
# Path to additional libraries
export CFDEM_ADD_LIBS_DIR=
#
# END OF (NORMAL) USER EDITABLE PART
################################################################################
~~~
編集が完了したら保存して閉じ、CFDEMのbashrcを読み込みます。
また、openfoam5のbashrcも読み込みます。

~~~.sh
source /opt/CFDEM-5/CFDEMcoupling-PFM/etc/bashrc
source /opt/openfoam5/etc/bashrc
~~~
ここまで完了したら、CFDEM-PFMのコンパイルを行います。
そのまえに、コンパイルに使用するコア数を指定します。
~/.bashrcに環境変数を追加します。環境に応じて、WM_NCOMPPROCSの数値を調整してください。
~~~.sh
echo "export WM_NCOMPPROCS=2" >> ~/.bashrc
source ~/.bashrc
~~~

以下のコマンドを順に実行し、コンパイルしていきます。
完了までに少し時間がかかります。
~~~
cfdemSysTest 
cfdemCompLIG
cfdemCompCFDEMsrc
cfdemCompCFDEMsol
cfdemCompCFDEMuti
~~~
すべて実行完了したら、opt/CFDEM-5/CFDEMcoupling-PFM/etc/log の中身を確認してください。
"log_compile_results_success"というlogファイルが存在し、"log_compile_results_failed"というlogファイルが出力されていなければ無事完了しています。
以上でopenfoam5を用いたCFDEM-PFMのインストールは完了です。
続いて同様の手順でCFDEM-6内にopenfoam6を用いたCFDEM-PFMをインストールしてください。ソースのクローンから同様のでできるはずです。

CFDEM-5とCFDEM-6のフォルダにそれぞれインストールが完了したら、以下のaliasを~/.bashrcに追記します。
~~~
alias cfdem5='source /opt/openfoam5/etc/bashrc; /opt/CFDEM-5/CFDEMcoupling-PFM/etc/bashrc'
alias cfdem6='source /opt/openfoam6/etc/bashrc; /opt/CFDEM-6/CFDEMcoupling-PFM/etc/bashrc'
~~~
このaliasを登録しておけば、シェルで"cfdem5"や"cfdem6"と入力するだけで、CFDEM-PFMの環境を適用でき、バージョンの切り替えも可能になります。

以上でCFDM-PFMのインストールは完了です。
次回はチュートリアルを実行してみます。