この記事は流体解析のオープンソースソフトウェアであるGerrisを,Ubuntuにソースからインストールした際の手順を備忘録としてまとめたものです.
Gerrisとは?
GerrisはStéphane Popinetによって開発されたオープンソースの流体解析コードであり,先進的な機能の開発はBasiliskというコードに引き継がれています.Gerrisに関する情報はWikiのページでほぼ網羅的に入手できます.
インストールの種類
各種プラットフォームにインストールすることができます.
- Linuxの場合,Ubuntu/Debian,Open SUSE,Fedra,CentOS用にバイナリが用意されています.
- Macの場合,brewでインストールできます.
- Windowsの場合,cygwin上でソースからコンパイルできたという情報があります.
- どのようなプラットフォームでもソースからビルドできます.
- 開発者向け(ソースを拡張する人)には,darcsを使うことが推奨されています.darcsはgitのようにソースコードのバージョン管理ができます.
インストールするもの
Gerrisでプリ・ポストを含めた流体解析を行うためには以下の3つをインストールする必要があります.
- Gerris Flow Solver本体
- GTS(GNU Triangulated Surface),形状データを扱うために必要
- GfsView,可視化画像・動画を出力するために必要
darcsを用いたバージョン管理
今回はUbuntu 20.04にインストールを行います.はじめに,Wikiを参照してdarcsをインストールします.
$ sudo apt-get install darcs
darcsがインストールできたら,darcsを用いてGerrisのlatest stable versionのソースを持ってきます.
$ darcs get http://gerris.dalembert.upmc.fr/darcs/gerris-stable
同様にdarcsでGTS(GNU Triangulated Surface)のソースを持ってきます.
$ darcs get http://gerris.dalembert.upmc.fr/darcs/gts-stable
同様にdarcsでGfsView(可視化用ユーティリティ)のソースを持ってきます.
$ darcs get http://gerris.dalembert.upmc.fr/darcs/gfsview-stable
Gerris本体,GTS,GfsViewをインストールするためにはautomake(バージョン1.6以上)が必要であり,無ければ以下のようにインストールします.
$ sudo apt-get install automake libtool libtool-bin
今回,libtool --version
でlibtoolが見つからなかったので,以下のようにlibtool-binをインストールした.
$ sudo apt-get install libtool-bin
GTSのインストール
glib development packageをインストールします.
$ sudo apt-get install libglib2.0-dev
依存パッケージをインストールしておきます.
$ sudo apt-get install libglib2.0-dev libnetpbm10-dev m4 libproj-dev \
libgsl0-dev libnetcdf-dev libode-dev libfftw3-dev libhypre-dev \
libgtkglext1-dev libstartup-notification0-dev ffmpeg
さらに,以下のようにOpenMPIのライブラリをインストールします(今回は必要なし,インストール済み).
$ sudo apt-get install libopenmpi-dev
autogen.sh
スクリプトでconfigure
スクリプトを生成し,make
でインストールします.
$ cd gts-stable
$ sh autogen.sh
$ make
$ sudo make install
prefixを指定しない場合は/usr/local
以下にライブラリがインストールされます.新しくイントールされたライブリをシステムに認識させる必要があります.いま,/etc/ld.so.conf
の中身は以下のようになっています.
$ cat /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf
自分の環境では,/etc/ld.so.conf.d/libc.conf
の中に/usr/local/lib
が見つかりましたので,何も追記する必要はありません(/usr/local/lib
が見つからないようだったら適当な.conf
を作成して追記する).
$ cat /etc/ld.so.conf.d/libc.conf
# libc default configuration
/usr/local/lib
ldconfig
を実行します.
$ sudo /sbin/ldconfig
HOME
ディレクトリ以下などにライブラリをインストールした場合は,適当なパス(PATH
, LD_LIBRARY_PATH
)を設定してあげます.
Gerris本体のインストール
Gerrisは並列計算が可能なのでOpenMPIをインストールしておきます(今回は必要なし,インストール済み)
$ sudo apt-get install openmpi-bin libopenmpi-dev
autogen.sh
スクリプトでconfigure
スクリプトを生成し,make
でインストールします.
$ cd ../gerris-stable
$ sh autogen.sh
$ make
$ sudo make install
make
中に以下のようなエラーが出てコンパイルできませんでした.
gerris.c:38:10: fatal error: version.h: そのようなファイルやディレクトリはありません
38 | #include "version.h"
| ^~~~~~~~~~~
compilation terminated.
version.h
にはソフトウェアのバージョンが記載されているのですが,darcsで持ってきたソースコードにはこのファイルが含まれていないようでした.仕方ないので,source tarballを持ってきてコンパイルすることにします.
$ wget http://gerris.dalembert.upmc.fr/gerris/gerris-snapshot.tar.gz
$ tar zxvf gerris-snapshot.tar.gz
$ mv gerris-snapshot-131206 gerris
ソースを無事に持って来れたら,configure
してmake
します.
$ ./configure
$ make
またmake
の途中で以下のようなエラーを出力して止まってしまいました.
init.c:416:5: error: call to 'MPI_Errhandler_set' declared with attribute error: MPI_Errhandler_set was removed in MPI-3.0. Use MPI_Comm_set_errhandler instead.
416 | MPI_Errhandler_set (MPI_COMM_WORLD, MPI_ERRORS_ARE_FATAL);
MPI関連のエラーで,新しいエラーハンドラーに変えてくださいね,ということなので該当ソースを修正します.
else
MPI_Init (argc, argv);
// MPI_Errhandler_set (MPI_COMM_WORLD, MPI_ERRORS_ARE_FATAL);
MPI_Comm_set_errhandler (MPI_COMM_WORLD, MPI_ERRORS_ARE_FATAL);
}
修正したら,make
してインストールします.
$ make
$ sudo make install
$ sudo /sbin/ldconfig
無事にインストールできたら,以下のようにバージョンを確認してみます.
$ gerris2D -V
gerris: using 2D libgfs version 1.3.2 (131206-155120)
compiled with flags:
MPI: yes
pkg-config: yes
m4: yes
Copyright (C) 2001-2011 NIWA.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
GfsViewのインストール
依存パッケージライブラリをインストールします.
$ sudo apt-get install libgtk2.0-dev libgtkglext1-dev libstartup-notification0-dev libftgl-dev
バッチ処理でGUIビューワーを介さずに可視化動画の作成を行うためにOSMesaをインストールします.
$ sudo apt-get install libosmesa6-dev
configure
,make
でインストールします.
$ cd ../gfsview-stable
$ sh autogen.sh
$ make
$ sudo make install
以上でGTS,Gerris本体,GfsViewのインストールは完了です.
まとめ
Gerris Flow Solverの本体と,形状データを扱うためのGTS,及び可視化用のGfsViewをUbuntuにインストールできました.無事にインストールできましたら,Gerris Tutorialに従って使い方を学びましょう.