データフォーマット・データ作成 Fortranによるバイナリ出力と、それに対応するFLDヘッダーファイルのサンプルを下さい。

対処方法

Fortranのwrite文は1回実行すると書き出したデータ本体の前後に<ヘッダ>と<フッタ>が付きます。
一方、MicroAVSにはデータ本体だけを読み込ませたいので、<ヘッダ><フッタ>はなるべく少なくした方がFLDヘッダーの定義が簡単になります。
つまり、Fortranプログラムにおけるバイナリ出力においては『1成分につき1つのwrite文を使って(全節点分の数値を)一度に書き出す』ことで、FLDヘッダーによる読み取りに都合がよくなります。

バイナリ出力を行うFortranプログラム例

21×22×23の正規直行格子上に2つの成分がある時系列データ(10ステップ)の出力例です。
成分ごとに出力ファイルを分けていて、それぞれ10ステップ分を1つのファイルに書き出しています。
また、もう1つのファイルに各ステップの数値をアスキー出力しています。

      parameter(nstep=10,nx=21,ny=22,nz=23,nall=nx*ny*nz)
      dimension u(nx,ny,nz)
      dimension v(nx,ny,nz)
d
      open(30,file="f_time.dat",form="formatted",status="unknown")
      open(40,file="f_u.dat",form="unformatted",status="unknown")
      open(50,file="f_v.dat",form="unformatted",status="unknown")
d
      DO 9000 n=1,nstep
      DO 1000 k=1,nz
      DO 2000 j=1,ny
      DO 3000 i=1,nx
      u(i,j,k) = i + j + k + n
      v(i,j,k) = i + j - k - n
3000  continue
2000  continue
1000  continue
d
      write(30,*) n
      write(40) (((u(i,j,k),i=1,nx),j=1,ny),k=1,nz)
      write(50) (((v(i,j,k),i=1,nx),j=1,ny),k=1,nz)
d
9000  continue
      close(30)
      close(40)
      close(50)
d
      stop
      end

上記バイナリ出力を読み込む為のFLDヘッダーファイル

write文で書かれた<ヘッダ><フッタ>それぞれ4byteをskipで飛ばして読み込ませています。
2ステップ目以降は、<前ステップのフッタ><現ステップのヘッダ>と4byte×2をはじめに読み飛ばす必要があります。
※コンパイラによってはヘッダ、フッタのbyte数が異なる場合もあります。

# AVS field 
nstep=10
ndim = 3
dim1 = 21
dim2 = 22
dim3 = 23
nspace = 3
veclen = 2
data = float 
field = uniform
# time start
time file=./f_time.dat filetype=ascii skip=0  close=0
variable 1 file=./f_u.dat filetype=binary skip=4 close=0
variable 2 file=./f_v.dat filetype=binary skip=4 close=0
EOT
DO
time file=./f_time.dat filetype=ascii skip=0  close=0
variable 1 file=./f_u.dat filetype=binary skip=8 close=0
variable 2 file=./f_v.dat filetype=binary skip=8 close=0
EOT
ENDDO

MicroAVSお問い合わせ窓口
MicroAVS評価版ダウンロード
AVS/Express English Website
[an error occurred while processing this directive]