#author("2022-07-20T12:28:39+09:00","default:Miyashita","Miyashita") #author("2023-12-21T17:58:40+09:00","default:Miyashita","Miyashita") *JAGURS 入力ファイル設定 [#a2f24915] #contents ** パラメータ [#d3ca5b1a] デフォルトで input/ の中にある tsun.par などは,各種パラメータを入力するファイル.~ 計算実行時に #codeprettify{{ jagurs par=XXX.par }} と指定する.~ 拡張子が par である必要はないと思うが視認性のために par にしておいた方が良い.~ テスト用の tsun.par は~ #codeprettify{{ ¶ms gridfile="gridfile.dat" maxgrdfn="zmax.grd" vmaxgrdfn="vmax.grd" tgstafn="test_tgs.txt" dt=0.05 tend=120 !2min. for TEST itmap=1200 tau=60 cf=-0.025 cfl=-0.025 coriolis=0 smooth_edges=0 c2p_all=1 def_bathy=1 plotgrd=-1 velgrd=0 procx=2 !for Parallel version procy=2 !for Parallel version / }} ~ ~ **地形(水深)・初期水位 [#q094d4c4] ***ファイル名を指定するファイル [#vf7890db] 用いる地形と初期水位(または断層モデル)のファイルを指定するためのファイルがあり,それが上記の par ファイルでいうところの #codeprettify{{ gridfile="gridfile.dat" }} である.その中身は #codeprettify{{ SD01 SD01 1 bathy.SD01.grd disp.SD01.grd SD02 SD01 0 bathy.SD02.grd disp.SD02.grd SD03 SD02 0 bathy.SD03.grd disp.SD03.grd }} のようになっている.~ ~ 相対パスを使うなど,ディレクトリを跨ぐときは,それぞれのファイル名を "" でくくらないと delimiter の扱いの都合でエラーになる.下記はクォートでファイル名を指定する例. #codeprettify{{ SD01 SD01 1 "../input/bathy.SD01.grd" "../input/disp.SD01.grd" SD02 SD01 0 "../input/bathy.SD02.grd" "../input/disp.SD02.grd" SD03 SD02 0 "../input/bathy.SD03.grd" "../input/disp.SD03.grd" }} 断層の動的破壊を考慮して,初期水位ファイルがひとつに収まらないときは, #codeprettify{{ SD01 SD01 1 "../../bath/bath_0810-01_mask.grd" disp.SD01.list }} にようにファイル名を記入し,この disp.SD01.list には順番にファイル名を1行ずつ列挙する.~ ~ さらに,ネストされた領域では直接初期水位を入力せず,計算内部で内挿した場合は #codeprettify{{ SD01 SD01 1 "../../bath/bath_0810-01.grd" disp.SD01.list SD02 SD01 0 "../../bath/bath_0270-01.grd" NO_DISPLACEMENT_FILE_GIVEN SD03 SD02 0 "../../bath/bath_0090-01.grd" NO_DISPLACEMENT_FILE_GIVEN SD04 SD03 0 "../../bath/bath_0030-01.grd" NO_DISPLACEMENT_FILE_GIVEN SD05 SD04 0 "../../bath/bath_0010-01.grd" NO_DISPLACEMENT_FILE_GIVEN }} とし,par のファイルで #codeprettify(lang-fortran){{ init_disp_interpolation=1 use_linear=0 ! 0: spline 1: linear }} とする.par ファイルは Fortran の namelist 形式なので単に params のリストの中に行を追加するだけ. ~ ~ ***CFL条件 [#h94ee630] 各計算領域での最も深い水深と解像度をもとに,CFL=1.0 のときの dt を確認するコマンド. #codeprettify{{ gmt ../../bath/bath_0010-01.grd -Cn -o5,6 | awk '{print $2/sqrt(9.8*$1)}' }} これで出てきた値の半分以下の dt にすることが望ましい. ~ ~ ***地形ファイル等のフォーマット [#hf37e1fd] GEBCO で NetCDF の地形を入手しても,JAGURSではそのまま使うことはできない.~ 公式doc にも書いてあるが,JAGURS がサポートしている地形ファイル (*.grd) の format は cf というもの.~ このフォーマットに関しては GMT の [[grdconvert>https://docs.generic-mapping-tools.org/latest/grdconvert.html]] に詳しく書いてある.~ また,計算では水深の深さ方向に正をとるので,元々の地形データが標高を正としているならば符号を逆転させる必要がある.~ フォーマット cf への変換と 符号逆転を同時に処理するなら #codeprettify{{ gmt grdmath toponc.grd NEG = bathcf.grd=cf }} とする.最後の =cf というフォーマット指定が重要.~ 参考→[[JAGURSで遠地津波計算 - EKBO>http://ekbo.blogspot.com/2017/11/JAGURS-GEBCO.html]]~ ~ 初期水位ファイルに関しても, grdconvert を使って cf でないものは cf に変換する. #codeprettify{{ gmt grdconvert dispnc.grd -Gdispcf.grd=cf }} ~ ~ **station (時系列を記録する定点) [#d0412b39] station の場所を指定するファイルは, par ファイルの #codeprettify{{ tgstafn="test_tgs.txt" }} の部分, test_tgs.txt は以下のようになっている. #codeprettify{{ 6 40.116667 142.0666667 1 #GPS807 39.627222 142.1866667 2 #GPS804 39.258611 142.0969444 3 #GPS802 38.857778 141.8944444 4 #GPS803 38.2325 141.6836111 5 #GPS801 36.971389 141.1855556 6 #GPS806 }} ~ ~ ** 並列計算 [#c3f1415f] 最後の #codeprettify(lang-fortran){{ procx=2 !for Parallel version procy=2 !for Parallel version }} はあくまで MPI の分割条件であって,これは OpenMP には関係ない.~ MPI を使わない場合はコメントアウトしておく. #codeprettify(lang-fortran){{ !procx=2 !for Parallel version !procy=2 !for Parallel version }} OpenMP はいつも通り環境変数の OMP_NUM_THREADS で指定する. ~ ~ **流速の出力 [#le3638f2] #codeprettify{{ plotgrd=-1 }} の -1 は入力した全領域の水位の空間分布を itmap のステップごとに出力するという意味であるが,~ 流速の場合は #codeprettify{{ velgrd=0 }} は -1 にしても流速の出力はなかった.~ 水位と同じく全領域の流速の空間分布を出力したければ #codeprettify{{ velgrd=1 }} とすれば OK っぽい.