dump1d

指定された格子点の波動場を、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が付加されます。

 

参照

dump1d_all