以下の文書は現在製作中です.
この文書は, dcpam4 に関して, Fortran 90/95 プログラムの変更 や着脱を行うためのチュートリアルです.
dcpam4 のプログラム構造の解説や, プログラム変更や追加の手引が記してあります.
dcpam4 では, 初期値データ生成プログラムは, initial_data モジュールとして管理しています.
このモジュールは, 以下のように使用されます.
初期値データ出力用の主プログラムから呼び出される.
initial_data モジュールでは初期値データの生成のみ行い, ファイルの生成は主プログラムにおいて行う.
長期ラン用の主プログラムから呼び出される.
この場合, 初期値データファイルは作成されず, initial_data モジュールで生成されたデータは すぐに長期ランの初期値として使用される.
なお, 長期ランの主プログラムでは, NAMELIST によって既に作成済みの 初期値データファイルからデータを入力するか, この初期値データ生成 モジュールからデータを受け取るかを選ぶことが可能.
実際に研究を行う上での数値実験を行うために (1) の方法を, 「お試し計算」を手軽に行うために (2) の方法を用意しています.
このような設計にしているのは, 初期値データを生成するプログラムを単一の モジュールとして管理することにより, 開発コストの低減を図るためです.
実際のプログラムは以下のようになっています.
初期値データ生成モジュール
┌─ initital_data.f90 ───────────────── | | module initial_data | | subroutine IniDataCreate( imax, jmax, kmax, ... ) | | --- 初期値データ生成 --- | | end subroutine IniDataCreate | | subroutine IniDataGet( xyz_U, xyz_V, ....) | | --- データ取得 --- | | end subroutine IniDataGet | | end module initial_data | └──────────────────
初期値生成主プログラム
┌─ init_ape.f90 ───────────────── | | program init_ape | | use initial_data | | --- 初期値データ取得 --- | call IniDataCreate( imax, jmax, kmax, ... ) | call IniDataGet( xyz_U, xyz_V, ....) | | --- 初期値データファイル作成 --- | call HistoryCreate( .... ) | call HistoryPut( xyz_U, ... ) | | end program init_ape | └──────────────────
長期ラン主プログラム
┌─ run.f90 ───────────────── | | program run | | use initial_data | | --- 初期値データ取得 --- | call IniDataCreate( imax, jmax, kmax, ... ) | call IniDataGet( xyz_U, xyz_V, ....) | | | do .... | | --- 長期 RUN --- | | end do | | end program run | └──────────────────