出力ファイルの設定¶
出力ファイル形式¶
スナップショットファイル出力には,FortranのStream I/O機能を用いた独自形式(以下native形式;旧形式のため非推奨)のバイナリデータもしくはNetCDF
形式のデータ(推奨)を選択できる.波形出力はSAC
形式もしくはそれを結合した独自形式(CSF
)で行われる.
出力に際して明示的なエンディアン変換は行わないため,生成されるファイルは実行環境のエンディアンに依存する.ただし,SACおよびNetCDFのライブラリはエンディアンに依存せずファイルを読むことができるため,これらのフォーマットを使っている限り,エンディアンについて意識する必要はほとんど無い.
独自形式のスナップショットは,開発の都合でフォーマットに微細な変更がなされることがある. 後方互換性は確保されているが,同じバージョンのコードに同梱されているプログラム経由でデータを読むのが確実である.
波形出力のSACファイルには,SACで必須とされる標準的なヘッダの他,以下の表のヘッダが付加される.
波形記録の単位は,SAC
フォーマットの標準に従い,速度はnm/s, 変位はnm が採用されている.
なお,波形・スナップショットとも水平成分の方向は計算座標系の, , に準ずる.phi=0
であれば, はそれぞれ北・東であるが,計算座標系を回転している場合には注意が必要である.この座標系の回転角は出力SAC
ファイルヘッダのcmpazに格納されているため,SAC
上で容易に北・東を正にする方向に変換することができる.また,波形出力の鉛直成分については,慣例に従い上が正になるように反転されている.一方,スナップショットの速度出力の成分は計算座標系(鉛直下方が正)のままである.
波形ファイルのヘッダ¶
header name | description |
---|---|
kevnm |
title |
evlo , evla , evdp |
震源リストの1行目の震源位置.震源位置がデカルト座標系で与えられた場合にはパラメタclon とclat をもとに緯度経度変換する. |
o |
震源リスト1行目の震源破壊開始時間. |
kzdate , kztime |
プログラム実行開始日時 |
b |
tbeg |
delta |
ntdec_w * dt |
mag |
震源モーメントから換算される |
user0 , .., user5 |
震源リスト1行目の |
user6 , user7 , user8 |
clon , clat , phi |
kstnm |
stnm |
stlo , stla , stdp |
観測点位置.観測点がxy で与えられた場合には緯度経度に変換の上出力される. |
kcmpnm |
速度の場合Vx, Vy, Vz , 変位の場合Ux, Uy, Uz |
cmpinc ,cmpaz |
x, y の方向に応じた観測点極性方向 |
idep |
SACフォーマットに従い,速度波形では7, 変位では6が格納される |
Native形式のスナップショットファイルには,ヘッダ情報,構造(地表であれば地形,断面であれば速度構造),空間スナップショットの順にデータが格納される.
スナップショットのヘッダ¶
var name | type | description |
---|---|---|
bintype |
character(8) | "STREAMIO" に固定 |
codetype |
character(8) | コード種別により"SWPC_3D" or "SWPC_PV" or "SWPC_SH" |
hdrver |
integer | ヘッダバージョン.バージョンによりヘッダ内容が異なる可能性あり. |
title |
character(80) | 実行名. |
exedate |
integer | 実行日時.POSIX TIMEで与える. |
coordinate |
character(2) | 断面成分.'xy' , 'xz' , 'fs' , 'ob' など. |
datatype |
character(2) | データ種別.'ps' or 'v2' or 'v3' |
ns1,ns2 |
integer | スナップショット各辺のデータ数 |
beg1,beg2 |
real | 各辺の始点座標値 |
ds1,ds2 |
real | グリッド間隔 |
dt |
real | スナップショットの時間間隔 |
na1,na2 |
real | 吸収境界領域のスナップショットグリッド数 |
nmed |
integer | 媒質データの個数 |
nsnp |
integer | 1時間ステップあたりのスナップショット枚数 |
clon,clat |
real | 座標中心緯度経度 |
v1,v2,v3 |
real | 予備.本コードでは利用しない. |
SAC ヘッダの変更
SAC ヘッダのうち,evdp
は従来は m 単位であったが,OpenSWPC Version 5.0 以降は km の単位を取るように変更された.
スナップショットとしてNetCDF
形式を用いた場合も,この表に相当する global attributes が設定される.そのほかはNetCDF
のCOARDS規約
および一部CF拡張に従う.この規約に従っていることにより,OpenSWPC
により出力されたNetCDF
ファイルは,同形式を読み込める多くの科学的可視化ツール(たとえばParaView,PanoplyやGMTなど)でそのまま読み取ることができる.
スナップショット出力¶
3次元空間のうち,xy
, yz
, xz
それぞれの方向の水平断面と地表面(fs
)・海底面(ob
)に沿った面の波動場スナップショットを出力することができる.
出力可能なのは速度振幅(v
), 変位振幅(u
)および速度振幅の発散と回転(ps
)の3種類である.
すべての時間ステップにすべてのデータを出力するのはデータ容量と入出力時間から現実的ではないため,時間と空間の両方に間引き要素を導入している.
時間については積分開始時間を始点として,ntdec_s
ステップ毎に出力を行う.空間については,指定された, , 方向の間引き間隔idec
, jdec
, kdec
により間引きが行われる(下図)
スナップショット間引きの模式図
丸印が方向の座標グリッドで,点線がMPIのドメイン境界を示す.間引き要素はidec=3の場合を示している.青色に塗りつぶされたグリッドからのデータがスナップショットとして出力される.
このとき,各MPIノード内で出力されるグリッド点数は一定とは限らない(一定となるように出力間隔やグリッドサイズを調整する必要は無い).
データはすべて特定のノードに集約されて,snp_format
パラメタの値により,独自形式(native
)もしくはNetCDF
形式のバイナリファイルとして出力される.
入力パラメータでは各スナップショット断面の出力の有無や間引き要素を制御する.なお,2次元SH計算では1成分しかないためP波S波出力は生成されない.
Parameters
snp_format
- スナップショットファイルの出力フォーマット.
"native"
(Fortran独自フォーマット,非推奨)もしくは"netcdf"
(NetCDF
形式.推奨)のいずれかを指定する. - **
xy_ps%sw
,xz_ps%sw
,yz_ps%sw
,fs_ps%sw
,ob_ps%sw
** - 各断面でのPS振幅(, )の出力スイッチ.
xy_v3%sw
,xz_v3%sw
,yz_v3%sw
,fs_v3%sw
,ob_v3%sw
-
- 各断面での3成分速度スナップショットの出力スイッチ.
xy_u3%sw
,xz_u3%sw
,yz_u3%sw
,fs_u3%sw
,ob_u3%sw
- 各断面での3成分変位スナップショットの出力スイッチ.
z0_xy
- xy断面を出力する深さ (km)
x0_yz
- yz断面を出力するx座標位置 (km)
y0_xz
- xz断面を出力するy座標位置 (km)
ntdec_s
- スナップショット出力の時間間引き要素.計算時間ステップ
ntdec_s
回に1度出力される. idec
,jdec
,kdec
- スナップショット出力の, , 方向の空間間引き要素.
地震波形出力¶
波形出力オプションがsw_wav_v=.true.
もしくはsw_wav_u=.true.
の場合,観測点における速度や変位の時系列をSAC
フォーマットの波形として出力する.
変位計算のための時間積分は出力時の時間間引きを行う前に実行されるため,時間間引き後の速度波形を積分するよりも高精度である.
計算中は地震波形はメモリ上に保持され,計算終了時にまとめて出力される.計算を中断した場合には波形を得ることができない.
観測点位置は計算座標系(xy
)か地理座標系(ll
)かいずれかのフォーマット(下表)で与える.
Type | Format |
---|---|
'xy' |
x y z name zsw |
'll' |
lon lat z name zsw |
複数の観測点における出力が必要な場合は,観測点位置ファイルに改行区切り観測点を加えていけばよい.ただし,’xy’
と’ll’
のフォーマットを混ぜることはできない.観測点数は自動的にカウントされ,そのうち計算モデル内にある観測点のみが出力される.`
観測点の深さは,入力zsw
によって次の表のように変化させることができる.
地表や海底の形状はグリッドに沿った階段状に離散化されるため,観測点の深さから直接変換する(zsw=’dep’
)と,観測点が意図せずに空中に飛び出し,意図した結果が得られない場合がある.
海底の観測点の場合には,波形出力の位置が海底の固体側にあるか海中側にあるかによって,その水平動振幅が大きく異なる.
そこで,zsw
の値の指定により,海面上の観測点や海底,ならびに海底の底の観測点をそれぞれ模擬することができる.
特段の事情が無い限り,zsw = ’obb’
としておくのが良い.
zsw |
観測点深さ |
---|---|
’dep’ |
与えられたzstから計算 |
’fsb’ |
地表・海面グリッドの一つ下 |
’obb’ |
地表・海底グリッドの一つ下 |
’oba’ |
地表・海面グリッドの一つ上 |
’bdi’ (i=0, \cdots, 9) |
速度構造モデルで定義されるi 番目の内部境界 |
Parameters
sw_wav_v
,sw_wav_u
- 速度(v)・変位(u)波形の出力スイッチ.
ntdec_w
- 波形出力の時間間引き間隔.1で全時間ステップの記録を出力する.
st_format
- 観測点位置ファイルのフォーマット.'xy'なら計算座標,'ll'なら地理座標モード.
fn_stloc
- 観測点ファイル名.
wav_format
- 波形ファイルフォーマット.通常は
’sac’
ひずみ・応力波形出力¶
速度や変位波形と同様に,sw_wav_strain = .true.
とすることでひずみ波形を,sw_wav_stress = .true.
とすることで応力波形を,それぞれSAC形式の時系列データとして出力することができる(Experimental; new in version 5.0).観測点位置の指定は速度・変位と同じである.出力単位は歪は無次元,応力は[Pa]である.
CSF format¶
波形出力は原則としてSAC
形式であるが,システムがあまりにも大量の波形ファイルを出力することに耐えられないケースがある.また,大量の小サイズファイルはネットワークを通じたデータの転送にも不向きである.そこで,Version 3.0以降ではパラメタwav_format = ’csf’
が指定されると,SAC
ファイルを複数観測点・成分について単一ファイルに結合したcsfファイル(独自形式)の出力を選択することもできる.
csfフォーマットは,SAC形式のバイナリファイルを単純結合したものの先頭に3つの4バイト実数をヘッダとして付加しただけの単純なフォーマットである.ヘッダは以下の構成要素からなる.
CSF header format
identifier
- 4文字 'CSFD'
ntrace
- ファイル内に格納されている波形の数
npts
- 一つ一つの波形の時間サンプル数
ファイルに含まれる波形のサンプル数はすべて等しいことが仮定されている.csf出力が選択された場合,並列計算のノード毎に,そのノードに含まれる観測点の同じ成分の波形が一つのファイルにまとめられて出力される.
大量の波形出力
大規模スーパーコンピュータシステムにおいては,並列ファイルシステムlustreが採用されていることがある(たとえば東京大学Oakforestなど).Lustreは小さなファイルを多数扱うことをやや苦手にしており,SAC形式で大量の波形を出力すると,パフォーマンスが落ちることがある.そのような場合には,CSFフォーマットのような結合フォーマットが便利である.
距離保存モード¶
OpenSWPC
は観測点位置をstlo
,stla
のSACヘッダを通じて保存するが,xy
座標系で観測点位置を与えてかつ極端に長距離の測線での計算の場合,緯度経度変換(地図投影)による誤差が無視できない.そのような場合に以下のパラメタを設定すると,距離をSAC
ヘッダの dist
に保存し,かつそれをSAC
に上書きさせないようにできる.
Parameters
wav_calc_dist
.true.
のとき震央距離をSACデータに保存する.
波形出力のタイミング¶
観測点における地震波形は計算中にはメモリ内に蓄積され,計算終了時にまとめてファイルに出力される.ただし,パラメタ ntdec_w_prg
を 1
以上の整数に設定すると,その数値の時間ステップ毎に波形を出力することができる.その際,波形の長さは常に nt
で決まる時間長のままで,計算が完了していない部分はゼロ埋めされる.この機能は計算途中に計算の正常性をモニターするためであるが,あまり ntdec_w_prg
を小さくすると,出力の負荷によって計算時間が増加する場合があることに注意が必要である.もしntdec_w_prg
の値が0以下だった場合は,計算終了時のみに波形を出力する.
ntdec_w_prg
は Version 24.09 以降で利用できる.
出力ファイル名¶
計算結果は以下のようなファイル名で出力される.
- スナップショット
(odir)/(title).(section).(type).(ext)
- 波形(SAC)
(odir)/wav/(title).(stnm).(component).sac
-
波形(CSF)
(odir)/wav/(title).(node-ID).(component).csf
-
計算時間
(odir)/wav/(title).tim
ここで,(section)
は出力断面を表す2文字で,特定位置の断面であればxy
,yz
などと表す. 地表面と海底はそれぞれfs
(Free
Surface)ならびにob
(Ocean Bottom)で表される.
(type)
は速度振幅かP波・S波(div,
rot)かによってv
もしくはps
を取る.
(component)
は速度か変位かに応じてVx
, Vy
, Vz
あるいはUx
, Uy
, Uz
を取る.
スナップショットの拡張子(ext)
はNetCDF形式でnc
,native形式でsnp
である.