3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

JAGURSの計算のための設定ファイルを作る(福島第一原発編

Last updated at Posted at 2018-11-14

##目的
JAGURSで福島第一原発を襲った津波を再現する

Jagursについて : 津波のシミュレーション計算を手軽?にやる方法
Jagursの計算環境  : JagursをWin10で実行する環境を作る
海底地形について  : 内閣府 中央防災会議が作った海底地形データを読めるようにしてGMTで可視化する
波源モデルについて  : 津波波源モデルをJagursで使えるようにする

の続き

##海底地形ファイルの変換
JAGURSに入力する地形ファイルの解像度ですが、root以外は3で割ると余り1になるようにする必要があります。中央防災会議のデータを基にすると、ファイルは3の倍数で作られています。
このように、異なる解像度にまたがる計算では、3の倍数+1をよくやるそうです。(理由はしらない)
image.png
でないと、このようなエラーを貰って頭を抱えることになります。

というわけで、僕は海底地形の東と南に1マスだけコピーして作りました。

次に海底地形をJagursが読める形式に変換します。ちゃんとマニュアルにはcfだよって書いてあります。
かつての僕はJAGURSが地形データが読まなーいと言ってくっそ悩みました。そしてこの記事を書いてる時にも悩みました。
ちゃんとマニュアルは上から下まで読みましょう。つまみぐいいくない!
-Gで出力ファイル名を指定するときに=cfをつけましょう。

image.png

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

こんな感じのファイルが出力されます。
image.png

以下で実行しましょう。

bash sh_convert_grd.sh

##設定ファイル
ファイル名ではサンプルに入っているものに従います。

##gridfile
中央防災会議が作ったドキュメントより作成
福島第一原発らへんを計算するのに必要な場所(ファイル名)を抽出して使います。
こんな感じのファイルになるはず。

image.png

##faultlist.txt
断層破壊?伝播?モデルの時系列なリスト 30秒毎 tau=30
image.png

##tsun.par
image.png

###dt決める
マニュアルの9ページに書いてるのをみて計算
1秒で余裕らしいので、デフォ値の0.02
image.png

###そのほか
init_disp_fault=1 テンプレートには含まれてないから注意
user_linear=0     テンプレートには含まれてないから注意
tau=30 断層設定ファイルの間隔秒数が30秒だから
tend=10800 3時間(36003)秒間の計算
itmap=200 dt
itmap=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

したら計算がはじまるはず。

##途中結果
地震発生から300秒(5分後)の津波のスナップショット
1350mメッシュ
image.png

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?