WSLのUbuntu 16.04でDelft3Dのビルド(GNUコンパイラ)

Table of Content

Windows 10 ProのWSLのUbuntu 16.04でGNUコンパイラを用い,Delft3Dのビルドをした備忘録です.Ubuntu 18.04とIntelコンパイラの組み合わせでもビルドを試みましたが,うまくいかなかったのと,UTSIPインターン学生対応で急いでいたため,こちらの情報を基本的に踏襲し,Ubuntu 16.04とGNUコンパイラの組み合わせで,パッケージの最新版にこだわらず,ビルドすることとしました.2019年6月12日現在の情報です.

準備

最初にWindowsのshared folderを設定します.WindowsのCドライブに~/wincでアクセスできるようにするため,~/.bashrcの最後に以下を追記します.

if [ -d winc ] ; then
  echo Windows shared folders ready
else
  ln -s /mnt/c winc
fi

変更された.bashrcを反映させるため,ホームディレクトリで,以下を実行します.

source .bashrc

以下の通り準備を進めます.インストール不要のものもあるかもしれません.

sudo apt update 
sudo apt upgrade 

sudo apt install build-essential subversion autoconf libtool
sudo apt install bison flex g++ gfortran libstdc++6 byacc libexpat1 libexpat1-dev
sudo apt install uuid-dev ruby make
sudo apt install libcurl4-openssl-dev 
sudo apt install -y pkg-config 

必要なツールのインストール

次に必要なツールをビルドしていきます.ビルド用のディレクトリを作成し,移動します.ここでは,ホームディレクトリの直下に作成した~/srcで作業を進めます.

MPICH-3.2

MPICH-3.2のインストールは非常に時間がかかります.

wget http://www.mpich.org/static/downloads/3.2/mpich-3.2.tar.gz
tar -xzf mpich-3.2.tar.gz
cd mpich-3.2
./configure --prefix=/opt/mpich-3.2
make 
sudo make install
cd ..

ZLIB-1.2.8

wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-4/zlib-1.2.8.tar.gz
tar -xzf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure --prefix=/usr/local/zlib-1.2.8
make
sudo make install
cd ..

HDF5

wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8/hdf5-1.8.16/src/hdf5-1.8.16.tar.gz
tar -zxf hdf5-1.8.16.tar.gz
cd hdf5-1.8.16
./configure --prefix=/usr/local/hdf5-1.8.16 --with-zlib=/usr/local/zlib-1.2.8
make 
sudo make install
cd ..

netCDF4-CおよびnetCDF4-Fortran

wget https://github.com/Unidata/netcdf-c/archive/v4.4.1.tar.gz
tar -xzf v4.4.1.tar.gz
cd netcdf-c-4.4.1
./configure --prefix=/usr/local/netcdf4.4 --enable-netcdf-4 --enable-shared --enable-dap CPPFLAGS=-I/usr/local/hdf5-1.8.16/include -I/usr/local/zlib-1.2.8/include -I/usr/local/netcdf4.4/include LDFLAGS=-L/usr/local/hdf5-1.8.16/lib -L/usr/local/zlib-1.2.8/lib -L/usr/local/netcdf4.4/lib
make 
sudo make install
cd ..

wget https://github.com/Unidata/netcdf-fortran/archive/v4.4.4.tar.gz
tar -xzf v4.4.4.tar.gz
cd netcdf-fortran-4.4.4
./configure --prefix=/usr/local/netcdf4.4 --enable-shared CPPFLAGS=-I/usr/local/hdf5-1.8.16/include -I/usr/local/netcdf4.4/include LDFLAGS=-L/usr/local/hdf5-1.8.16/lib -L/usr/local/netcdf4.4/lib
make 
sudo make install
cd ..

Delft3Dのビルド

ソースコードをダウンロードするディレクトリを/home/teem/winc/cal/Delft3Dとし,ここに移動します.ここで,/home/teemはホームディレクトリ,/wincは最初に設定した,WindowsのCドライブです.subversionでcheckoutします.ダウンロードには1時間20分くらいかかりました.

svn checkout https://svn.oss.deltares.nl/repos/delft3d/tags/delft3d4/59659 59659

もしsvn: E120106: ra_serf: The server sent a truncated HTTP response body.のようなエラーで途中で止まってしまった場合は,59659ディレクトリに移動してから,以下を実行します.

svn cleanup
svn update

カレントディレクトリの下にできた,59659/srcに移動し,build_ubuntu1604.shの3カ所を以下のように編集します. 260行目あたりのif [ $compiler = 'gnu' ]; thenと直下のelseの間を次のように編集します.この2行も含めて記述しています.

if [ $compiler = 'gnu' ]; then
    addpath PATH /opt/mpich-3.2/bin
    export MPI_INCLUDE=/opt/mpich-3.2/include
    export MPILIBS_ADDITIONAL=-L/opt/mpich-3.2/lib -lfmpich -lmpich -lmpl
    export MPIFC=/opt/mpich-3.2/bin/mpif90
else

次に,300行目あたりのnetcdfに関わる1つの行を以下のように編集します.

export NETCDFROOT=/usr/local/netcdf4.4

最後に,385行目あたりの./configureで始まる部分を以下のように,ソースコードのインストール先に合わせて編集します.ここで指定したディレクトリに実行形式がインストールされます.

./configure --prefix=/home/teem/winc/cal/Delft3D/59659 $configureArgs &> $log \

以上で準備が整いましたので,ビルドします.時間がかかります.

./build_ubuntu1604.sh -gnu -64bit

テストケースの実行(ここはまだ未確認)

環境設定用のスクリプトdelft3d_env.sh/home/teem/winc/cal/Delft3D/59659の中に以下の内容で作成します.

#!/bin/bash
export PATH=/home/teem/winc/cal/Delft3D/59659/bin/lnx64/flow2d3d/bin:$PATH
export PATH=/home/teem/winc/cal/Delft3D/59659/bin/lnx64/wave/bin:$PATH
export PATH=/home/teem/winc/cal/Delft3D/59659/bin/lnx64/swan/scripts:$PATH
export LD_LIBRARY_PATH=/home/teem/winc/cal/Delft3D/59659/bin/lnx64/flow2d3d/bin:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/home/teem/winc/cal/Delft3D/59659/bin/lnx64/wave/bin:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/home/teem/winc/cal/Delft3D/59659/bin/lnx64/swan/bin:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/home/teem/winc/cal/Delft3D/59659/bin/lnx64/swan/scripts:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/opt/mpich-3.2/lib:$LD_LIBRARY_PATH
export PATH=/opt/mpich-3.2/bin:$PATH

Delft3Dを実行する前には環境変数を設定するため,以下を実行します.

source /home/teem/winc/cal/Delft3D/59659/delft3d_env.sh

参考資料

  1. Paul Liu. Successfully installed and run Delft3d on Amazon AWS Ubuntu 16.04 (EC2). url
  2. tmegos blog. svn: E120106: ra_serf: The server sent a truncated HTTP response body. url

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください