# 表題 2D 非弾性系対流モデル "deepconv" の手引き # # 履歴 1998/09/01 小高正嗣 # 1998/09/20 小高正嗣 # 1998/10/01 小高正嗣 # 1998/10/08 小高正嗣 # 1999/02/02 小高正嗣 # 1999/06/10 小高正嗣 # 1.はじめに この文書は2次元非弾性系対流モデル "deepconv" の手引である. 本ディレクトリ内には以下のファイルが展開される. ./README README ファイル ./Makeile コンパイル用 Makefile ./Mkinclude Makefile インクルードファイル ./doc ドキュメント(Texファイル)ディレクトリ ./dynamics 主要計算用プログラムディレクトリ ./include インクルードファイルディレクトリ ./io io 関連プログラムディレクトリ ./main main プログラムディレクトリ ./monit 診断用プログラムディレクトリ ./physics 物理過程(雲物理, 放射, 地表摩擦)プログラムディレクトリ ./rad 放射過程(CO2 15μm) ./setup 初期設定プログラムディレクトリ ./util 下位ルーチンプログラムディレクトリ ./tools 解析用サンプルプログラムディレクトリ ./rand_seed 乱数表ファイル(rand.8192)格納ディレクトリ プログラムのリストはこの文書の末尾にある. またメインプログラム及びサブルーチンプログラムの解説は ./doc 以下の ドキュメントを参照のこと. 2.インストール 2-1 Mkinclude ファイルの編集 Mkinclude ファイルには Makefile が参照するマクロが定義してある. 必要に応じて内容を変更する. 以下変更の可能性が高い点を中心に説明する. ・コンパイルコマンドとオプションの指定 SHELL = /bin/sh シェルの指定 FC= g77 オブジェクトファイル生成用コマンド FFLAGS= -O オブジェクトファイル生成用コマンドオプション FFLAG_AUTODBL= FTT プログラム倍精度コンパイルオプション LD= $(FC) 実行ファイル生成用コマンド LDFLAGS= 実行ファイル生成用コマンドオプション LDLIBS= 実行ファイル生成時に用いるライブラリ名 CPP = cpp コンパイラプリプロセッサ名 LATEX = ajlatex Tex ファイルコンパイルコマンド DVI2PS = dvi2ps ps ファイル生成コマンド RM = /bin/rm ファイル削除コマンド ・ソースファイル格納ディレクトリ名の指定 ソースファイルを格納したディレクトリ名が定義される. DEEPCONVDIR = deepconv を展開したディレクトリ名 デフォルトではカレントディレクトリ (.) が指定される. この他マクロについては, 別途にサブルーチンを作成しそれを新しい ディレクトリに格納してモデルに含めない限り編集する必要はない. ・作業ディレクトリの指定 WORKDIR = data 乱数ファイルのコピー先ディレクトリ 計算実行はここで行う. ・使用プログラムファイルの指定 以下コンパイルするプログラムファイルが指定される. 変更されうる頻度の高いマクロは MAIN = メインプログラム EXEC = $(EXECDIR)/$(MAIN).exe 実行ファイル名 GRIDSIZE= インクルードファイル 及び以下の初期設定ファイル指定マクロである. DAINIT = EVSAT = HUMID = PSETUP = TEMPZ = SETCS2 = SETCST = SETGRD = TEMPZ = UBAR = VBASIC2 = たとえば物理パラメータを変更した計算を行いたい場合には, 新たに 設定ファイルを作成しそれを SETCST で指定するようにすればよい. 2-2 コンパイル % make とすれば ./exec 以下に実行ファイルが用意され, 作業ディレクトリに乱 数表がコピーされる. オブジェクトファイルを消去する場合には % make clean とすればよい. % make clean.all とすると実行ファイルまで消去される. 2-2 ドキュメントのコンパイル ./doc ディレクトリに移動してコンパイルする. % cd ./doc % make これで dvi ファイルが作成される. ps ファイルを作成するには更に % make ps とする. dvi ファイル, ps ファイルなど全ての生成物を消去するには % make clean.all とすればよい. 3.実行 以下の作業は作業ディレクトリ(${WORK})に移動して行う. 3-1 乱数データファイルのリンクファイルを作成 乱数表(rand.8192)のシンボリックリンクファイル作る. % ln -s rand.8192 @T11.RAND.DATA 3-2 計算条件指定ファイルの作成 時間刻, 計算時間などを指定するファイル(計算条件指定ファイル)を作成 する. このファイルの書式は以下のようになっている. % cat (計算条件指定ファイル名) IRUN TIME0, NLOOP1, NLOOP2, DTIME, NMONI, NTKUMU それぞれのフィールドには以下の条件を記入する. IRUN 実験番号(整数値) 新しい条件で開始する場合には 1, 以前の計算結果を初期値とする場合には 1 以降を記入する. TIME0 計算開始モデル時刻(実数値) NLOOP1 出力回数(全時間積分ステップ数, 整数値) NLOOP2 出力あたりの時間ステップ数(整数値) DTIME 時間刻(単位: 秒, 実数値) NMONI 診断変数出力ステップ数(整数値) NTKUBU 雲・雨領域出力ステップ数(整数値) 例えば新しい条件の計算を時間刻を 1 秒, 出力間隔を 10 分, 全計算時間を 3 時間 として行なう場合は, % cat (計算条件指定ファイル名) 1 0.0, 18, 1200, 1.0, 1200, 1200 とする. 出力間隔は NLOOP x DTIME /2 (秒)であることに注意. 3-3 実行 計算は以下のようにして行う. % (実行ファイル名) < (計算条件指定ファイル名) > (log ファイル名) & 実行が始まると以下のファイルが作成される: @T11.KUBU.DATA 雲・雨領域の区分(診断用) @T11.PPAI.DATA 圧力 @T11.QCLW.DATA 雲水混合比 @T11.QRAI.DATA 雨水混合比 @T11.QVAP.DATA 水蒸気混合比 @T11.TPOT.DATA potential temperature @T11.TSFC.DATA 地表面フラックス積算値(診断用) @T11.TURB.DATA 乱流拡散係数 @T11.U.DATA 風の x 成分 @T11.V.DATA 風の y 成分 @T11.VB.DATA 基本場の変数の鉛直分布 @T11.VPRF.DATA 各種変数の水平平均(診断用) @T11.W.DATA 風の z 成分 4. プログラムリスト ./dynamics: ADDIF0.f 基本場の移流 ADDIF1.f 基本場からの偏差の移流 ADDIFK.f CDCOEF.f 乱流拡散係数の計算 CLBUOY.f 浮力の計算 CLCONM.f 格子点での質量収束(ゴミ堆積対策) CLCORIRD.f レイリー摩擦(下と排他) CLCORIS.f コリオリ力 CLPRES.f 圧力方程式を解く CLTURB.f 乱流強度の時間変化 CLVISC_E.f 乱流粘性係数の計算 CLVISC_M.f CLWADV.f 風から質量フラックスへの換算(温度の格子点) CLWFLX.f 風から質量フラックスへの換算(風の格子点) CLWMID.f 風の場の補間 FARAIN2_E.f 雨の落下 FARAIN2_M.f NLDIFF2.f 人工非線形拡散(ノイズ対策) NLDIFV.f NLDIFV2.f NLVISC.f 人工非線形粘性(ノイズ対策) QNFILL.f 穴埋め(負の水蒸気など) ./include: grid_size_E.f 配列サイズ grid_size_M.f ./io: FCLOSE.f 各種 file close FLREAD.f 継続計算などからの data 読み込み FLREADNV.f FLREADNV_m.f FLWRIT.f 計算した data の書きだし FOPEN_E.f 各種 file open ./main: MAIN_E_1.f メインルーチン及び one time step の計算 ドライバ(SUBROUTINE TSTEP) MAIN_M_1.f MAIN_M_1_fk.f MAIN_M_1s.f MAIN_M_1s_fk.f MAIN2_M_1.f メインルーチン及び one time step の計算 ドライバ(SUBROUTINE TSTEP): CLDRAG.f を呼ぶ MAIN3_M_1.f MAIN_M_rd.f メインルーチン及び one time step の計算 ドライバ(SUBROUTINE TSTEP): 放射スキーム(./rad 以下)を呼ぶ ./monit: CLZPRF.f 水平平均量の計算 KUBUN.f 雲・雨領域の決定(診断用) KUBUN_null.f MONIT.f 力学的診断量の書きだし MONITW.f 湿潤変数の診断量の書きだし CLZPRF.f KUBUN.f ./physics: CLDRAG.f バルク係数計算 CLDRAG_M_std.f CLPHYSB_E.f 雲物理(凝結を含む) CLPHYSB_M.f CLRAD_E_1.f 放射冷却(一様固定) CLRAD_M_54.f CLRAD_M_dayf.f 日変化放射強制(一様固定) CLRICH.f バルクリチャードソン数計算 FXSURF2_E_1.f 地表面フラックス計算 FXSURF2_M_std.f FXSURF3_M_std.f 地表面フラックス計算(CLDRAG.f使用) FXSURF3_M_nodust.f ./rad: CLEQWD.f 等価幅の計算 CLBBRAD_M.f プランク関数の計算 CLFXRDU_M.f 上向き放射フラックスの計算 CLFXRDD_M.f 下向き放射フラックスの計算 CLFXRDN.f 正味の放射フラックスの計算 CLQRAD.f 放射強制の計算 CLRAD.f 放射ルーチン: CLBBRAD.f,CLFXRDU.f,CLFXRDD.f,CLFXRDN.f, CLQRAD.f を呼ぶ RBASIC 放射場の基本設定: SETOPL.f,CLEQWD.f を呼ぶ SETOPL 光路長の計算 ./setup: DAINIT_E.f 初期条件の設定 DAINIT_M.f EVSAT_E.f 飽和蒸気圧を計算する関数(雲物理からも呼ばれる) EVSAT_M.f HUMID_E.f 基準となる湿度鉛直分布 HUMID_M.f PSETUP_E.f 圧力方程式解法ルーチンの初期設定 PSETUP_M.f SETCS2_E.f 地表面条件・コリオリ定数の設定 SETCS2_M.f SETCS2_M_5.f SETCST_E.f 物理定数の設定 SETCST_M.f SETGRD3_E.f 差分格子設定 SETGRD3_M.f SETGRD3_Mv.f TEMPZ_E.f 基本場の鉛直温度 TEMPZ_M.f TEMPZ_M_dayf.f UBAR0.f 基本場の風速(レイリー摩擦の計算でも呼ばれる) VBASIC.f 基本場の計算 VBASIC_M.f ./util: ACLEAR.f 配列変数のクリア BOUND.f 境界条件の設定 ADUMP.f 配列変数のデバッグ用出力 lasubset.f LAPACK のサブセット(逆行列・固有値問題) vfftorig.f FFT(倍精度に精度拡張してコンパイル)