#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{{
&params
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 っぽい.

Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes