##目的
JAGURSで福島第一原発を襲った津波を再現する
Jagursについて : 津波のシミュレーション計算を手軽?にやる方法
Jagursの計算環境 : JagursをWin10で実行する環境を作る
海底地形について : 内閣府 中央防災会議が作った海底地形データを読めるようにしてGMTで可視化する
波源モデルについて : 津波波源モデルをJagursで使えるようにする
の続き
##海底地形ファイルの変換
JAGURSに入力する地形ファイルの解像度ですが、root以外は3で割ると余り1になるようにする必要があります。中央防災会議のデータを基にすると、ファイルは3の倍数で作られています。
このように、異なる解像度にまたがる計算では、3の倍数+1をよくやるそうです。(理由はしらない)
でないと、このようなエラーを貰って頭を抱えることになります。
というわけで、僕は海底地形の東と南に1マスだけコピーして作りました。
次に海底地形をJagursが読める形式に変換します。ちゃんとマニュアルにはcfだよって書いてあります。
かつての僕はJAGURSが地形データが読まなーいと言ってくっそ悩みました。そしてこの記事を書いてる時にも悩みました。
ちゃんとマニュアルは上から下まで読みましょう。つまみぐいいくない!
-Gで出力ファイル名を指定するときに=cfをつけましょう。
gmtのxyz2grdを使うためのスクリプトを出すためのプログラム例を示します。
implicit none
integer i,j,k
character(len=200) fname,ofname
integer dxdy,x0,y0,ix,iy
integer fnum
integer iosnum
open(21,file='bathylist.csv',status='old')
open(31,file='sh_convert_grd.sh')
write(31,*) "#!/bin/bash"
do
read(21,*,iostat=iosnum)fname,dxdy,x0,y0,ix,iy
if(iosnum < 0)then
exit
end if
write(31,'("gmt xyz2grd depth_",A,"_xyz.dat -Gdepth_",A,
c "_xyz.grd=cf -V -R",i8.8,"/",i8.8,"/",i8.8,"/",i8.8," -I",i8.8)')
c trim(fname),trim(fname),
c x0,x0+dxdy*(ix),y0-dxdy*iy,y0,dxdy
end do
stop
end
以下で実行しましょう。
bash sh_convert_grd.sh
##設定ファイル
ファイル名ではサンプルに入っているものに従います。
##gridfile
中央防災会議が作ったドキュメントより作成
福島第一原発らへんを計算するのに必要な場所(ファイル名)を抽出して使います。
こんな感じのファイルになるはず。
##faultlist.txt
断層破壊?伝播?モデルの時系列なリスト 30秒毎 tau=30
###dt決める
マニュアルの9ページに書いてるのをみて計算
1秒で余裕らしいので、デフォ値の0.02
###そのほか
init_disp_fault=1 テンプレートには含まれてないから注意
user_linear=0 テンプレートには含まれてないから注意
tau=30 断層設定ファイルの間隔秒数が30秒だから
tend=10800 3時間(36003)秒間の計算
itmap=200 dtitmap=10秒間隔で計算結果を出力
multrupt=1 fault.txtを指定したから
with_abc=1 たぶん指定したほうが安定する?
!procx=4
!procy=2 MPI並列は使わないのでコメントアウト
###Makefileの変更点
WindowsでWSLでgfortranでコンパイルするのは、このへんを参考にどうぞ。
gitからcloneしてきたサンプルは緯度経度座標系で直交座標系ではないので
CARTEAIAN=ON
にする必要があります。
コンパイルし直したら、設定ファイルがあるところに移動して
mpirun -n 1 ../src/jagurs par=tsun.par.template
したら計算がはじまるはず。