はじめに
今更ながらですが、preCICE / OpenFOAM / Calculix で行う流体構造連成解析の環境構築、チュートリアルの実行方法をまとめたいと思います(いつもDEXCSを使っていたので、どのように解析環境を構築するのか勉強したかったという、あくまで自分用メモです)。
環境は ubuntu 20.04 LTS を想定しています。
preCICE
preCICEのインストールは、Quickstartのページを参考にすると良いと思います。ここではポイントだけを記載しておきます。
wget https://github.com/precice/precice/releases/download/v2.5.0/libprecice2_2.5.0_focal.deb
sudo apt install ./libprecice2_2.5.0_focal.deb
OpenFOAM
OpenFOAMのインストール
curl https://dl.openfoam.com/add-debian-repo.sh | sudo bash
sudo apt-get install openfoam2112-dev
openfoam2112の環境立ち上げのために、.bashrc
あたりに以下のコマンドを追加しておきます。
function ofv2112(){
command source /usr/lib/openfoam/openfoam2112/etc/bashrc
}
もしくは
ofv2112(){
source /usr/lib/openfoam/openfoam2112/etc/bashrc
}
これで必要に応じてopenfoam2112の環境を呼び出せるようになります。
openfoam-adapter のビルド
openfoam-adapterのビルドは、preciceのHPのQuickstartが参考になります。
まず、adapterのビルドに必要なパッケージをインストールします。
sudo apt install build-essential pkg-config cmake git
次いで、openfoam-adapterをgitから持ってきて、ビルドします。
git clone --branch=master --depth 1 https://github.com/precice/openfoam-adapter
cd openfoam-adapter
./Allwmake
Calculix
Calculix単体であれば、aptをたたけばインストールできます。
sudo apt install calculix-cgx calculix-ccx
ここで、ccx
がcalculixのソルバーを、cgx
がpre-、postprocessing用のGUIになります。
calculix-adapterのビルド
calculix-adapterのビルドは、precice HPのGet Calculixが参考になります。
adapterのコンパイルはSPOOLES2.2、ARPACK、yaml-cppに依存しているため、これらパッケージを入れます。
sudo apt install libarpack2-dev libspooles-dev libyaml-cpp-dev
以上がdebパッケージを主としてコンパイル環境を整える方法になります。
ソースをもってきて作業を行いたい場合は、以下の作業を行う必要があります。またその場合は、calculix-adapterのコンパイル時にライブラリのPATHを設定する必要があります。
SPOOLES.2.2
wget http://www.netlib.org/linalg/spooles/spooles.2.2.tgz
mkdir SPOOLES.2.2
tar zxvf spooles.2.2.tgz -C SPOOLES.2.2
cd SPOOLES.2.2
解凍するとファイル、ディレクトリがカレントディレクトリに展開されてしまいますので、上にあるようにSPOOLES.2.2というディレクトリを作成し、そちらに展開するようにします。
その後、Make.incにあるコンパイラーをgcc
に変更します。
CC = gcc
#CC = /usr/lang-4.0/bin/cc
その後、コンパイルをします。
make lib
ARPACK
wget https://www.caam.rice.edu/software/ARPACK/SRC/arpack96.tar.gz
wget https://www.caam.rice.edu/software/ARPACK/SRC/patch.tar.gz
tar xzfv arpack96.tar.gz
tar xzfv patch.tar.gz
cd ARPACK
-
次いで、
ARmake.inc
を編集していきます;- Line 28: Change home = $(HOME)/ARPACK to directory where ARPACK in extracted
- Line 115: Change MAKE = /bin/make to e.g. MAKE = make (if needed)
- Line 120: Change SHELL = /bin/sh to e.g. SHELL = sh (if needed)
fortranコンパイラーをgfortranに変更します。
FC = gfortran #FFLAGS = -O -cg89
- Line 35:
PLAT = SUN4
→PLAT = INTEL
に修正
-
次いで
UTIL/second.f
中の該当ラインを以下のようにコメントアウトします;
* EXTERNAL ETIME
- これでコンパイル準備は完了です。
make lib
すれば作業終了です。
yaml-cpp
wget https://github.com/jbeder/yaml-cpp/archive/yaml-cpp-0.6.2.zip
unzip yaml-cpp-0.6.2.zip
cd yaml-cpp-yaml-cpp-0.6.2
mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=ON ..
make
calculix source
wget http://www.dhondt.de/ccx_2.19.src.tar.bz2
tar xvjf ccx_2.19.src.tar.bz2
ここでは~/CalculiX/ccx_2.19/src
にソースが展開されているとして、作業を進めていきます。
calculix-adapter
wget https://github.com/precice/calculix-adapter/archive/refs/heads/master.tar.gz
tar -xzf master.tar.gz
cd calculix-adapter-master
Makefile中のCalculixのソースの場所を修正します;
CCX_VERSION = 2.19
CCX = $(HOME)/CalculiX/ccx_$(CCX_VERSION)/src
make
でコンパイルするとccx_preCICE
が作成されます。あとはPATHを通してすべての作業は修了です。
adapterコンパイル時のエラー対応について (CalculiX ver.2.20 2023.7.18現在)
gtortran10でのコンパイル時にエラーが出ることがあるようです.詳細はこちらで.
こちらにcubtri.fファイルがあるので,それをダウンロードすればコンパイルできるようになります.
まとめ
preCICE / OpenFOAM / Calculix の流体構造連成解析の環境構築を、今更ではありますがまとめてみました。