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つの違いは、問題設定に応じたデータの入出力の違いで組み込まれているサブルーチンの種類や、前処理プログラムが異なります。
3つのうちのいずれかを選んで、移動したページ上で、Download the code HERE をクリックしてダウンロードします。
ファイル・ディレクトリ構成
メインディレクトリには、 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 形式ファイルの読み書きを行うサブルーチン群 |
初期設定・実行方法は次のページで説明します。