2020年2月25日火曜日

preCICEインストール(修正)

はじめに

preCICE(Precise Code Interaction Coupling Environment)を手元にインストールしましたので、わすれる前にメモを残しておきたい。これは複数の独立したソフトウェアを接続し、マルチフィジックスの実行を容易にしてくれるカップリングライブラリとのこと。

preCICE Wikiに従ってインストールしています。ただしMPIによる並列を使うソフトウェアの場合、一つ一つソースからインストールしていく必要があるようです。

サーバー

サーバーOS:Ubuntu Server 16.04.6 LTS

準備

最初に
sudo apt-get update
sudo apt-get install build-essential g++ python-dev autotools-dev libicu-dev build-essential libbz2-dev
sudo apt install build-essential libeigen3-dev libxml2-dev
sudo apt install gfortran

Boost, YAML, MPICH, PETSC、(OPENFOAM)のインストールが必要です。

boost (1.66): boost1.65.1以上を要するとのこと
wget https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.tar.gz
tar xzvf boost_1_66_0.tar.gz
cd boost_1_66_0/
./bootstrap.sh --prefix=/usr/local/
./b2 --help
./b2 -j8 variant=release link=shared threading=multi runtime-link=shared
sudo ./b2 -j8 install 

YAML(0.5.3)
wget https://github.com/jbeder/yaml-cpp/archive/yaml-cpp-0.5.3.zip
 unzip yaml-cpp-0.5.3.zip
 cd yaml-cpp-yaml-cpp-0.5.3
--静的ライブラリ
mkdir build
cd build
cmake ..
make
--動的ライブラリ
cd yaml-cpp-yaml-cpp-0.5.3
mkdir build2
cd build2
cmake -DBUILD_SHARED_LIBS=ON ..
make
.bsahrcに以下追加
export CPLUS_INCLUDE_PATH=$HOME/app/yaml-cpp-yaml-cpp-0.5.3/include:$CPLUS_INCLUDE_PATH
export LD_LIBRARY_PATH=$HOME/app/yaml-cpp-yaml-cpp-0.5.3/build2:$LD_LIBRARY_PATH

BoostとYAMLについて
Boostが1.67以上のときはYaml-ccp0.6以上, Boost1.66以下のときはYaml-ccp0.6より古いバージョンにしないといけない。

MPICH
適当なバージョンをDL(ここではpetscとして3.3, OpenFOAM-v1812として3.2。厳密にはバージョンは合わせるべき)
wget http://www.mpich.org/static/downloads/3.3.2/mpich-3.3.2.tar.gz
tar xvf  mpich-3.3.2.tar.gz
cd mpich-3.3.2
./configure --prefix=/usr/lib/mpich/mpich-3.3.2 |& tee log_c.txt
make 2>&1 | tee log_m.txt
sudo make install |& tee log_mi.txt
以下を.bashrcに追加
MPI_ROOT=/usr/lib/mpich/mpich-3.3.2
PATH=$MPI_ROOT/bin:$PATH
LD_INCLUDE_PATH=$MPI_ROOT/include:$LD_INCLUDE_PATH
LD_LIBRARY_PATH=$MPI_ROOT/lib:$LD_LIBRARY_PATH
export MPI_ROOT PATH LD_INCLUDE_PATH LD_LIBRARY_PATH

PETSC
まずは準備として
sudo apt install libopenblas-base
sudo apt install libopenblas-dev
git clone -b maint https://bitbucket.org/petsc/petsc petsc
cd petsc
./configure --with-debugging=0 --with-mpi-dir=/usr/lib/mpich/mpich-3.3.2
make PETSC_DIR=$HOME/app/petsc PETSC_ARCH=arch-linux2-c-opt all
.bashrcに以下:
export PETSC_DIR=$HOME/app/petsc
export PETSC_ARCH=arch-linux2-c-opt
export LD_LIBRARY_PATH=$PETSC_DIR/$PETSC_ARCH/lib:$LD_LIBRARY_PATH
export CPATH=$PETSC_DIR/include:$PETSC_DIR/$PETSC_ARCH/include:$CPATH
export LIBRARY_PATH=$PETSC_DIR/$PETSC_ARCH/lib:$LIBRARY_PATH
export PYTHONPATH=$PETSC_DIR/$PETSC_ARCH/lib

OpenFOAM
MPIはデフォルトではsystemopenmpiになっている。 preciceはopenmpiはだめらしい(ポート?)ので、mpichに変更する。 ここではmpich-3.2としているが、3.3が良いかも
cd path/openfoam1812/OpenFOAM-v1812/etc
bashrcを編集:
#export WM_MPLIB=SYSTEMOPENMPI
export WM_MPLIB=MPICH
source bashrc
cd ../../ThirdParty-v1812
wget http://www.mpich.org/static/downloads/3.2.1/mpich-3.2.1.tar.gz
tar xfz mpich-3.2.1.tar.gz
mv mpich-3.2.1 mpich-3.2
./makeMPICH

preCICEインストール

まずはファイルの取得(xyzはバージョン、例えばx.y.z=1.6.1)
wget https://github.com/precice/precice/archive/v1.6.1.tar.gz
tar -xzvf v1.6.1.tar.gz
cd precice-1.6.1/
つぎに
mkdir build && cd build
cmake -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo  ..
make -j $(nproc)
テスト
make test_base
make test
インストール
sudo make install
(CMake optionして指定しなければ/usr/localにインストールされる)