指定された格子点の波動場を、1次元ダンプファイルに追記します。書き込み先ファイルが存在しない場合は、新しく作成します。
function dump1d( region1, region2, grid_i, grid_j, grid_k, grid_region,
ch, flag, dt, step, phydim, xmrgn, ymrgn, zmrgn
) result(status)
パラメータ
integer, intent(in) :: xmrgn, ymrgn, zmrgn
波動場の3次元データのマージンの大きさを指定します。
real, intent(in) :: region1(1-xmrgn:,1-ymrgn:,1-zmrgn:)
波動場の第1領域です。
real, intent(in) :: region2(1-xmrgn:,1-ymrgn:,1-zmrgn:)
波動場の第2領域です。
integer, intent(in) :: grid_i(:)
書き込みする格子番号座標のI成分配列です。n番目の格子番号座標をgrid_i(n), grid_j(n), grid_k(n), grid_region(n)で指定します。grid_i, grid_j, grid_k, grid_region, flagは全て同じ配列長でなくてはなりません。
integer, intent(in) :: grid_j(:)
書き込みする格子番号座標のJ成分配列です。
integer, intent(in) :: grid_k(:)
書き込みする格子番号座標のK成分配列です。
integer, intent(in) :: grid_region(:)
書き込みする格子番号座標の領域番号配列です。
integer, intent(in) :: ch
書き込みする波動場のチャンネル番号です。
integer, intent(in) :: flag(:)
チャンネル別出力フラグ配列です。2進数で最下位ビットからチャンネル番号順にVx~Tyzとなっています。関数はビットが立っているチャンネルを全て出力します。
real, intent(in) :: dt
時間差分間隔です。秒単位で指定します。
integer, intent(in) :: step
出力する波動場の差分ステップを指定します。
character(len=16), intent(in) :: phydim
単位名を16文字以内の文字列で指定します。
戻り値
関数が成功すると0が返ります。関数が失敗すると、エラーが返ります。返されるエラー値は次の通りです。
値 |
説明 |
-1 |
ファイル作成に失敗しました。 |
-2 |
グループオブジェクトの作成に失敗しました。 |
-3 |
データセットオブジェクトの作成に失敗しました。 |
-4 |
データスペースオブジェクトの作成に失敗しました。 |
-5 |
データタイプの異常です。 |
-6 |
アトリビュートオブジェクトの作成に失敗しました。 |
-7 |
プロパティーオブジェクトの作成に失敗しました。 |
-8 |
データセットの書き込みに失敗しました。 |
-9 |
アトリビュートの書き込みに失敗しました。 |
-10 |
チャンネル番号の指定が範囲外です。 |
-11 |
格子点座標の指定が範囲外です。 |
-12 |
データセットの拡張処理に失敗しました。 |
-13 |
ハイパースラブの作成処理に失敗しました。 |
-14 |
|
-15 |
一時メモリ領域のアロケーションエラー |
解説
波動場データregion1, region2から、指定した全ての格子点座標における、波動場の振幅を1次元ダンプファイルに追記します。ファイル名はチャンネル番号chによって自動的に決められ、vx.h5, vy.h5, vz.h5, txx.h5, tyy.h5, tzz.h5, txy.h5, txz.h5, tyz.h5のどれかになります。書き込みファイルがない場合は新規に作成されます。
格子点座標情報が既存ファイル内と引数で異なっていた場合、つまり何らかの原因(1次元ダンプファイルが書き換えられてしまった場合など)でデータの不整合が生じた場合には、エラーコード-12を返します。
また、データの生成に使われた震源、観測点、構造ファイルのFdmToolIDが付加されます。
参照