open TELEMAC-MASCARETは非構造格子を含む,水圏環境ソフトウエアスイーツで,元々はフランスの電力会社(当時はおそらく公社)EDF (Électricité de France) R&D (Research and Development)が開発した商用ソフトウエアでしたが,2010年よりオープンソース化され,open TELEMAC-MASCARETというコンソーシアムを形成して活発に開発が続けられているようです.
東大とENPC (École des ponts ParisTech,国立土木学校で,ENPCあるいはポンゼショセとも呼ばれるグランゼコールの一つです)の大学間交流の縁で,TELEMACについて調べることになりました.ちなみにグランゼコールは大学とは異なり,学位授与はできないそうですが,給与が支給されるところもあり,トップエリートが集まる,大学,大学院相当のフランス独特の国立学校だそうです.一方,兵役の義務もあるとのことでした.

登録

TELEMACを利用するにはこちらのページで登録する必要があります.入力項目が多いです.

ダウンロード

ログイン後に,ダウンロードページで,SVN Repositoryをクリックし,The details of the TELEMAC SVN repositoryを参照します.Subversionが必要です.ITO-Aにはインストール済みです.例えば,Ubuntuでインストールするには以下のようにします.


sudo apt install subversion

次に,安定版の最新のリポジトリからダウンロードします.ユーザネームとパスワードは登録した個人のものではなく,ダウンロードページに記載されているものを入力します.一緒にexamplesもダウンロードされました.ダウンロードには45分かかりました.


svn co http://svn.opentelemac.org/svn/opentelemac/tags/v7p2r0/

ビルドの準備

こちらに従って準備を進めます.
Python 2.7が必要です.condaで管理していればTELEMAC用の仮想環境telemacを作るとよいでしょう.


conda create -n telemac python=2.7
source activate telemac
conda install numpy

METIS-5.1.0

TELEMACのソースコードディレクトリの下の./optionals/metis-5.1.0に移動し,Build.txtに従ってインストールします.


make config cc=icc prefix=${HOME}/local/metis-5.1.0
make
make install

HDF-5

こちらを参考に,hdf-5のソースコードをダウンロードし,適当なディレクトリで展開します.--prefix=ですが,install-pathは絶対path(ルートから)で指定する必要があります.


tar xf hdf5-1.8.14.tar.gz
cd hdf5-1.8.14
./configure --prefix=$HOME/local/hdf-5
make
make install

HDF-5についてはこちらが参考になるでしょう.

環境変数の設定

ホームディレクトリを$HOMEとします.ディレクトリ$HOME/TELEMAC/v7p2r0/configs/に存在する,pysource.template.shpysource.intel_mpi.shのファイル名でコピーし(ファイル名は自分で決めます),このファイルの中で環境変数を以下のように編集します.HOMETELはソースコードの存在するディレクトリです.


# Path to telemac root dir
export HOMETEL=$HOME/TELEMAC/v7p2r0
# Adding python scripts to PATH
export PATH=$HOMETEL/scripts/python27:.:$PATH
# Configuration file
export SYSTELCFG=$HOMETEL/configs/systel.ito_a.cfg
# Name of the configuration to use
export USETELCFG=intel_mpi
# Path to this file
export SOURCEFILE=$HOMETEL/configs/pysource.intel_mpi.sh

### HDF5 -----------------------------------------------------------
export HDF5HOME=$HOME/local/hdf-5
export LD_LIBRARY_PATH=$HDF5HOME/lib:$LD_LIBRARY_PATH
export LD_RUN_PATH=$HDF5HOME/lib:$MEDHOME/lib:$LD_RUN_PATH

### METIS -------------------------------------------------------------
export METISHOME=$HOME/local/metis-5.1.0
export LD_LIBRARY_PATH=$METISHOME/lib:$LD_LIBRARY_PATH

設定ファイルにはMPIに関する設定例も含まれていますが,Intelコンパイラが利用できるようになっていれば,特にここで設定するものはないようですので,コメントアウトしておきます.
環境変数を設定するには作成されたスクリプトを実行します.


source pysource.intel_mpi.sh

config fileの作成・編集

pysource.intel_mpi.shで定義した,systel_ito_a.cfgを,$HOMETEL/config/に存在するcfgファイル例を参考に作成・編集します.主な点は以下の通りです.

configsintel_mpiを加えます.このintel_mpiを以下で定義します.


[Configurations]
configs: intel_mpi

End of Definitionsの前に以下を追記します.


# ____/ ITO-A Intel Fortran MPI /___________________________________/
[intel_mpi]
#
brief: parallel mode, using Intel Fortran MPI on ITO-A at Kyushu University.
#
mpi_cmdexec: mpiexec.hydra -n <ncsize> <exename>
#
cmd_obj: mpiifort -c -ipo -O3 -no-prec-div -fp-model fast=2 -xHost <mods> <incs> <f95name>
cmd_exe: mpiifort -lpthread -v -lm -o <exename> <objs> <libs>
libs_all: $HOME/local/metis-5.1.0/lib/libmetis.a

コンパイル

コンパイルは$HOMETEL/configsにおいて以下のPythonスクリプトを実行するだけです.もし動かない場合は$HOMETEL/scripts/python27/のPython scriptに実行形式を付与します.


config.py

コンソールにいろいろ表示された後,My work is doneが表示されて終わればOKです.
いよいよコンパイルです.次のようにします.


compileTELEMAC.py

コンパイルは非常に時間がかかりました(1時間弱).途中で何度も止まったように見えますが(リンクの部分と思われます),気長に待ち続けます.最後にMy work is doneが現れれば成功です.$HOMETEL/builds/intel_mpi/bin/に多くの実行形式がインストールされているはずです.再度コンパイルする際は,$HOMETEL/builds/を削除しておきます.