ROMSを実行する時は,コンパイルの結果作られる実行ファイル「roms」に続いて,計算条件を記載した「*.in」ファイル(例えばroms.in)を指定する(ことができる).つまり,
$ roms roms.in
のようにしてROMSを実行する.ここでは「roms.in」ファイルの編集について説明する.以下,白字はroms.inファイルの内容,オレンジは説明である.
title:
U.S. West Coast: 11 km 32 lv, Climatology
ROMS計算のタイトル(任意).出力ファイル(netcdf)に書き込まれる.
time_stepping: NTIMES dt[sec] NDTFAST NINFO
324000 1600.0 62 1
左から,計算する総ステップ数,Baroclinic(3次元)モードの計算時間刻み(秒),3次元モードとBarotropic(平面2次元)モードの時間刻みの比率,画面出力頻度(1なら毎タイムステップで計算情報を表示する).ここで,2次元モードの計算は3次元モードよりも短い時間間隔で行う必要がある.2次元の時間刻みをdtfastとすると,
dtfast = dt / NDTFAST
という関係が成り立っている.計算出力画面に表示される「Cu_max」の値が0.8程度以下になるように,dtとNDTFASTを調整すること.
S-coord: THETA_S, THETA_B, TCLINE (m)
6.d0 0.d0 200.d0
鉛直S座標のストレッチングパラメータ.bryやiniファイルを作成した時に指定した条件と同一にしなければならない.TCLINEはbry/iniファイル作成時に指定した「hc」のことである.
grid: filename
../grid/SCB2_grid.nc
使用するグリッドファイルへのパス.
forcing: filename
../bry/SCB2_frc_clim.nc
使用するforcingファイルへのパス.複数指定することも可能(デフォルトでは最大4ファイルまで).その場合は,単純に改行して下に書き足していく.例えば,
../bry/SCB2_frc1.nc
../bry/SCB2_frc2.nc
../bry/SCB2_frc3.nc
となる.異なるファイル内に同じ変数がある場合,上の段に書かれたファイル中のデータが優先される.例えば,SCB2_frc1.ncとSCB2_frc2.ncの両方に変数「sst」が存在する場合,SCB2_frc1.nc中のデータが使用される.
boundary: filename
../bry/SCB2_soda_clim_bry.nc
使用する境界条件ファイルへのパス.
initial: NRREC filename
1 ../bry/SCB2_soda_clim_ini.nc
使用する初期条件ファイルへのパスと,使用するレコードナンバー.つまり,iniファイル中には複数の時間でのデータがあっても良く,その場合は指定した NRREC番目のデータが使われる.これはhistoryファイルを使用してリスタートする場合に便利.例えばhistoryファイルに12個のレコードがあったとして,そのうちの4番目の時間からリスタートさせる,というようなことができる.
restart: NRST, NRPFRST / filename
3240 2 ../output/SCB2_rst.nc
出力するリスタートファイルに関する情報.NRSTは何タイムステップ毎にrstファイルを出力するか,NRPFRSTは各rstファイルに何レコード書き込むか,下段はrstファイル名.上の場合,3240ステップ毎にリスタートファイルへの出力がなされ,各ファイルには2レコード(これは2に固定するべき.なぜなら,完全なリスタートには隣接する2タイムステップのレコードが必要であり,cppdefs.hで「EXACT_RESTART」をONにした場合は自動的に連続する2レコードが書き出される)づつ出力,ファイル名は,SCB2_rst.0000.nc, SCB2_rst.0002.nc, SCB2_rst.0004.nc, SCB2_rst.0006.nc,...のようになる.
なお,長期間の計算ではhistoryファイルによるリスタートを行う方が便利なことが多いので,リスタートを無効にしたいことがある.その場合は,NRSTに大きな数字を指定(9999999など)すれば良い.リスタートファイルは全ての出力は倍制度の実数で行われるため,ファイルサイズが大きくなる.
history: LDEFHIS, NWRT, NRPFHIS / filename
F 3240 12 ../output/SCB2_his.nc
出力するhistoryファイル(瞬間値出力)の情報.LDEFHISは最初のレコードを出力するかどうか(Tなら時刻ゼロのデータがhistoryファイルに書き込まれる.Fなら書き込まれない.通常はFにしておく),NWRTは書き込む時間ステップ間隔(dt=1600sでNWRT=3240なら,1600 x 3240 / 86400 = 60 days),NRPFHISは各historyファイル中に出力するレコード数.この場合,60日毎に瞬間値が記録され,1つのhisファイルには12レコード,つまり60 day x 12 = 720 days(約2年分)のデータが書き込まれることになる.この瞬間値データからリスタートできるので,もし計算が途中で発散した場合は最大でも60日遡れば,そこからリスタートできることになる.
averages: NTSAVG, NAVG, NRPFAVG / filename
0 162 30 ../output/SCB2_avg.nc
出力するaverageファイル(時間平均値)の設定.NTSAVGは最初に平均値の計算から除外するステップ数(普通はゼロだが,例えば最初の1年は平均値を計算せず,2年目以降出力したい場合などに使う),NAVGは平均値を計算するステップ数(この場合は,162 step x 1600 s / 86400 = 3 days.つまり3日平均値を出力する),NRPFAVGは各avgファイル内に記録するレコード数.
primary_history_fields: zeta UBAR VBAR U V wrtT(1:NT)
T T T T T T T T T T T T T T
historyファイルに出力する変数の設定.Tなら出力,Fなら無視.wrtT(1:NT)はトレーサーであり,通常は水温Tと塩分Sのみ.zetaは水位,UBAR/VBARは水深平均流速,UVは3次元流速の水平2成分.
auxiliary_history_fields: rho Omega W Akv Akt Aks HBL HBBL
F F T T F F T F
同じくhistoryファイルへの出力変数.rhoは密度,OmegaはS座標での鉛直流速,Wはz座標での鉛直流速,Akv,Akt,Aksはそれぞれ運動量,水温,塩分に関する鉛直渦動粘性係数(または渦拡散係数),HBLとHBBLはそれぞれ海表面境界層および海底境界層の厚さ.
primary_averages: zeta UBAR VBAR U V wrtT(1:NT)
T T T T T T T T T T T T T T
averageファイルへの出力設定.historyと同じ.
auxiliary_averages: rho Omega W Akv Akt Aks HBL HBBL
F F T T F F T F
averageファイルへの出力設定.historyと同じ.
rho0:
1027.5d0
基準となる海水密度.変更の必要なし.
lateral_visc: VISC2,
0.
運動量に関する水平渦動粘性係数.通常はゼロ.
tracer_diff2: TNU2(1:NT) [m^2/sec for all]
0.d0 0.d0
トレーサー(水温,塩分など)に関する水平渦拡散係数.通常はゼロ.
bottom_drag: RDRG [m/s], RDRG2, Zob [m], Cdb_min, Cdb_max
0.d0 0.d0 1.E-2 1.E-4 1.E-2
底面せん断力に関するパラメーター.通常は変更する必要なし.Cdb_min, Cdb_maxは現在のROMSでは使っていない.
gamma2:
1.d0
陸−海間での水平方向境界条件に関するパラメータ.1ならフリースリップ条件,0ならノースリップ条件.通常は1のままでOK.
v_sponge: V_SPONGE [m^2/sec]
70.
水平スポンジ層の強さ.親グリッドと子グリッド間の解の相違を(水平拡散項として)吸収させる.経験的に調整しなければいけない.目安としては,グリッド間隔が10kmのスケールでは100前後,1kmのスケールなら20前後,100mスケールなら10前後.
nudg_cof: TauM2_in/out attnM2 TauM3_in/out TauT_in/out [days for all]
0. 0. 0. 1.0 360. 3.0 360.
開境界におけるnudgingの強さ,つまり,与えた境界条件に対してどの程度の強さで馴染ませるかを調整する.最新のROMSでは最初の3つは使用しない.TauM3とTauTはそれぞれ3次元の運動量とトレーサーに対する値である.経験的に調整しなければいけない.10km程度の解像度の計算であれば上記のセッティングでOK.領域が小さい場合は,もう少し小さい値を与えた方が良いかも知れない.