プロが教える店舗&オフィスのセキュリティ対策術

fortranでプログラムを組むことになったのですが、これまでプログラムを組んだことがなかったので困っています。


gridgenで作成した.grdファイルをfortranで読み込ませることがうまくできません。

原因は、.grdのフォーマットがBLOCK構造体であるからだと考えています。
POINT構造体なら読み込めることが分かっているのですが…。


そこで質問です。
BLOCK構造体である「.grd」ファイルを読み込み、POINT構造体の「.dat」ファイルを出力するプログラムをfortranで組むにはどうしたらいいですか?





BLOCK構造体とは以下の形式。

X1 X2 X3 X4
X5 …Xn

Y1 Y2 Y3 Y4
Y5 … Yn

Z1 Z2 Z3 Z4
Z5 … Zn


POINT構造体は以下。

X1 Y1 Z1
X2 Y2 Z2
X3 Y3 Z3
X4 Y4 Z4
X5 Y5 Z5
… … …
Xn Yn Zn

A 回答 (2件)

#1 にはちゃんと「変数の宣言が適切になされていれば」って書いてあります.


つまり, あなたの作ったプログラムは「変数の宣言が適切になされてい」ないんです.
なんで
integer xx,yy,zz,a,b,i
なの?

この回答への補足

変数の宣言の意味が分からず、google検索したところ
integer,整数型
real,実数型
logical,論理型
といったことが分かりましたが実際の使い方や意味を理解できていないため、
このようなかたちになりました。

補足日時:2010/12/17 14:38
    • good
    • 0

1番と2番でそれぞれ.grdファイルと.datファイルをOpenして,変数の宣言が適切になされていれば


read(1,*) (xx(i),i=1,n)
read(1,*) (yy(i),i=1,n)
read(1,*) (zz(i),i=1,n)
do i=1,n
write(2,*) xx(i),yy(i),zz(i)
enddo
こんな感じ。

この回答への補足

ご回答ありがとうございます。

試しに以下のように書いてみましたが、エラーメッセージが表示されてうまくいきませんでした。


書いたプログラム(test.f)

implicit none
integer xx,yy,zz,a,b,i

open(1,file='test.grd')
read(1,*) a,b
read(1,*) (xx(i) , i=1,a*b)
read(1,*) (yy(i) , i=1,a*b)
read(1,*) (zz(i) , i=1,a*b)
close(1)

open(2,file='test.dat')
write(2,*) a,b
do i=1,a*b
write(2,*) 'xx(i)' , 'yy(i)' , 'zz(i)'
end do
close(2)

stop

end

----------------------------------------

エラーメッセージ

In file test.f:6

read(1,*) (xx(i) , i=1,a*b)
1
Err: Expected variable in READ statement at (1)


----------------------------------------

test.grdの中身

4 2

1 1 2
2 3 3
4 4

6 7 6
7 6 7
6 7

0 0 0
0 0 0
0 0


----------------------------------------


型宣言が間違っているのか、なぜエラーするのか自分では分からないので、指摘していただけると幸いです。

補足日時:2010/12/17 01:17
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!