Kenji Tanaka Seminar's Web site (田中ゼミ) : sb POM


sb Parallel Ocean Model (sbPOM) を使う

ここでは、Linux上で並列計算を行う場合について、手順を記します。並列計算ツールのインストールは、多くの方がインストール方法を書かれていますので、ここでは省略します。

前準備:parallel-NetCDF のインストール

parallel-NetCDF は、MPICH2 や OpenMPI などのMPI形式の並列処理ツールを使って、NetCDF形式のデータファイルを操作するためのツールです。ソースコードは、
http://trac.mcs.anl.gov/projects/parallel-netcdf
で入手できます。
ダウンロードして展開したディレクトリを /usr/local の下に置きます。
Intel fotran Compiler を使ってMPIをインストールした場合、コンパイラに関する環境変数を以下の通りに設定します。
export CC=icc
export FC=ifort
export F77=ifort
export MPICC=mpicc
export MPIF77=mpif77

環境変数の設定後、以下の順番で入力して、インストールします。
./configure --prefix=/usr/local/parallel-netcdf-1.2.0
make
make install

インストール後、ホームディレクトリ環境設定ファイルに以下を追加します。
(.tcshrcの場合)
setenv PNETCDF /usr/local/parallel-netcdf-1.2.0
(.bashrcの場合)
export PNETCDF=/usr/local/parallel-netcdf-1.2.0

前準備:MEXCDF のインストール (Matlab User)

mexcdfは、Matlab 上で NetCDFjデータを操作するためのツールです。sbPOMは、mexncを使って、NetCDFデータの読み書きを行います。インストール方法、設定方法は京大防災研・森信人先生のページをご参考ください。
本ページでは、Matlabを持っていないユーザーのための、初期条件の設定方法を解説します。

sbPOMソースコードの入手

ソースコードは下記のページから入手することができます。
http://www.imedea.uib-csic.es/users/toni/sbpom/
先頭ページの Code タブをクリックすると、 Seamount, Shallow tide, US East Coast の3種類があります。3つの違いは、問題設定に応じたデータの入出力の違いで組み込まれているサブルーチンの種類や、前処理プログラムが異なります。
Home_2.png
3つのうちのいずれかを選んで、移動したページ上で、Download the code HERE をクリックしてダウンロードします。
HP_seamount.png

ファイル・ディレクトリ構成

メインディレクトリには、 makefile (コンパイルに使用) と pom.sh (実行コマンドが入っている) 、pom.h (変数リスト) ファイルの他に、以下のディレクトリが入っています。

ディレクトリ名 内容
pom メイン計算プログラム
prep

格子点・初期条件・境界条件などの前処理の実施

in 入力ファイル(格子点情報・初期条件・境界条件・同化用データ)を収容するディレクトリ
out 出力ファイル(計算結果)を収容するディレクトリ
proc 可視化などの後処理用のプログラム・スクリプト

prep ディレクトリには、格子点・初期条件・境界条件などを作成するための matlab スクリプトファイルが入っており、問題設定によってスクリプトファイルの数が異なります。最低限求められるのは、格子点生成と初期条件(水温・塩分濃度)の作成です。
pom ディレクトリには、次のソースファイルが入っています。

 

ファイル名 概要
pom.f  メインプログラムファイル
initialize.f

初期条件の設定を行うサブルーチン群

advance.f 時間発展計算のメインルーチン
solver.f  水平移流・拡散・鉛直混合などの項を求めるサブルーチン群
bouns_forcing.f 境界条件を求めるサブルーチン (bcond)
parallel_mpi.f MPIを用いた並列処理に関するサブルーチン群
io_pnetcdf.f paralle-netcdf を用いて netcdf 形式ファイルの読み書きを行うサブルーチン群


初期設定・実行方法は次のページで説明します。